為了上班摸魚我用Python製作了俄羅斯方塊?
import os
import sys
import random
from modules import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
''' 定義俄羅斯方塊遊戲類 '''
class TetrisGame(QMainWindow):
def __init__(self, parent=None):
super(TetrisGame, self).__init__(parent)
# 是否暫停 ing
self.is_paused = False
# 是否開始 ing
self.is_started = False
self.initUI()
''' 介面初始化 '''
def initUI(self):
# icon
self.setWindowIcon(QIcon(os.path.join(os.getcwd(), 'resources/icon.jpg')))
# 塊大小
self.grid_size = 22
# 遊戲幀率
self.fps = 200
self.timer = QBasicTimer()
# 焦點
self.setFocusPolicy(Qt.StrongFocus)
# 水平佈局
layout_horizontal = QHBoxLayout()
self.inner_board = InnerBoard()
self.external_board = ExternalBoard(self, self.grid_size, self.inner_board)
layout_horizontal.addWidget(self.external_board)
self.side_panel = SidePanel(self, self.grid_size, self.inner_board)
layout_horizontal.addWidget(self.side_panel)
self.status_bar = self.statusBar()
self.external_board.score_signal[str].connect(self.status_bar.showMessage)
self.start()
self.center()
self.setWindowTitle('Tetris —— 九歌 ')
self.show()
self.setFixedSize(self.external_board.width() + self.side_panel.width(), self.side_panel.height() + self.status_bar.height())
''' 遊戲介面移動到螢幕中間 '''
def center(self):
screen = QDesktopWidget().screenGeometry()
size = 外匯跟單gendan5.comself.geometry()
self.move((screen.width() - size.width()) // 2, (screen.height() - size.height()) // 2)
''' 更新介面 '''
def updateWindow(self):
self.external_board.updateData()
self.side_panel.updateData()
self.update()
''' 開始 '''
def start(self):
if self.is_started:
return
self.is_started = True
self.inner_board.createNewTetris()
self.timer.start(self.fps, self)
''' 暫停 / 不暫停 '''
def pause(self):
if not self.is_started:
return
self.is_paused = not self.is_paused
if self.is_paused:
self.timer.stop()
self.external_board.score_signal.emit('Paused')
else:
self.timer.start(self.fps, self)
self.updateWindow()
''' 計時器事件 '''
def timerEvent(self, event):
if event.timerId() == self.timer.timerId():
removed_lines = self.inner_board.moveDown()
self.external_board.score += removed_lines
self.updateWindow()
else:
super(TetrisGame, self).timerEvent(event)
''' 按鍵事件 '''
def keyPressEvent(self, event):
if not self.is_started or self.inner_board.current_tetris == tetrisShape().shape_empty:
super(TetrisGame, self).keyPressEvent(event)
return
key = event.key()
# P 鍵暫停
if key == Qt.Key_P:
self.pause()
return
if self.is_paused:
return
# 向左
elif key == Qt.Key_Left:
self.inner_board.moveLeft()
# 向右
elif key == Qt.Key_Right:
self.inner_board.moveRight()
# 旋轉
elif key == Qt.Key_Up:
self.inner_board.rotateAnticlockwise()
# 快速墜落
elif key == Qt.Key_Space:
self.external_board.score += self.inner_board.dropDown()
else:
super(TetrisGame, self).keyPressEvent(event)
self.updateWindow()
'''run'''
if __name__ == '__main__':
app = QApplication([])
tetris = TetrisGame()
sys.exit(app.exec_())
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2851193/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 老闆防止我上班摸魚,給我裝了個chrome外掛Chrome
- 上班摸魚與網路安全
- 30個Python小遊戲,上班摸魚我能玩一天【內附原始碼】Python遊戲原始碼
- 我的俄羅斯方塊程式
- 基於MonoGame重製《俄羅斯方塊》遊戲MonoGAM遊戲
- 我編寫的俄羅斯方塊原始碼,支援單機對戰,可定製方塊數,鍵盤等!!! (轉)原始碼
- Tetris 俄羅斯方塊遊戲遊戲
- Python 實戰開發俄羅斯方塊遊戲Python遊戲
- 一款摸魚神器!幫助你利用上班時間背單詞!
- 白嫖 11 個超火的前端必備線上工具,終於有時間上班摸魚了前端
- 【Java遊戲】java俄羅斯方塊!Java遊戲
- canvas實現俄羅斯方塊Canvas
- Win32俄羅斯方塊Win32
- 俄羅斯方塊(JS+CSS)JSCSS
- Chrome外掛:提醒你正在摸魚,摸魚的時候知道自己在摸魚,減少摸魚的時間和頻率。Chrome
- 裝上這幾個 VSCode 外掛後,上班划水摸魚不是夢VSCode
- pyqt5製作俄羅斯方塊小遊戲-----原始碼解析QT遊戲原始碼
- 網課摸魚
- 趣味python程式設計之經典俄羅斯方塊Python程式設計
- Flutter Web 實戰 - 俄羅斯方塊FlutterWeb
- java控制檯版本 俄羅斯方塊Java
- 鵬躍俄羅斯方塊遊戲 1.0遊戲
- JavaScript 寫遊戲 : 俄羅斯方塊 (轉)JavaScript遊戲
- 《花100塊做個摸魚小網站! 》第七篇—誰訪問了我們的網站?網站
- 用React、Redux、Immutable做俄羅斯方塊 | 掘金技術徵文ReactRedux
- Python:遊戲:300行程式碼實現俄羅斯方塊Python遊戲行程
- python開發俄羅斯方塊小遊戲程式碼例項Python遊戲
- [分享]純python3手寫Tetris(俄羅斯方塊)遊戲Python遊戲
- 請大家談談‘俄羅斯方塊程式
- JS編寫的俄羅斯方塊 (轉)JS
- 20個 Javascript 技巧,提高我們的摸魚時間!JavaScript
- 用 SQL 寫的俄羅斯方塊遊戲「GitHub 熱點速覽」SQL遊戲Github
- 上班又能摸魚啦!在M1晶片的macbook上刷朋友圈可還行?晶片Mac
- iTerm2摸魚指北
- 基於Flutter的俄羅斯方塊小遊戲Flutter遊戲
- 使用JavaScript實現一個俄羅斯方塊JavaScript
- 一個俄羅斯方塊的原始碼 (轉)原始碼
- 一個俄羅斯方塊遊戲源程式 (轉)遊戲