日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python小游戏(俄罗斯方块)

發(fā)布時間:2024/8/26 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python小游戏(俄罗斯方块) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

玩法:童年經(jīng)典,普通模式?jīng)]啥意思,小時候我們都是玩加速的。

源碼分享:

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)# 是否暫停ingself.is_paused = False# 是否開始ingself.is_started = Falseself.initUI()'''界面初始化'''def initUI(self):# iconself.setWindowIcon(QIcon(os.path.join(os.getcwd(), 'resources/icon.jpg')))# 塊大小self.grid_size = 22# 游戲幀率self.fps = 200self.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 = self.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:returnself.is_started = Trueself.inner_board.createNewTetris()self.timer.start(self.fps, self)'''暫停/不暫停'''def pause(self):if not self.is_started:returnself.is_paused = not self.is_pausedif 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_linesself.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)returnkey = event.key()# P鍵暫停if key == Qt.Key_P:self.pause()returnif self.is_paused:return# 向左elif key == Qt.Key_Left:self.inner_board.moveLeft()# 向右elif key == Qt.Key_Right:self.inner_board.moveRight()# 旋轉(zhuǎn)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_())

祝大家玩得開心,歡迎點贊、關(guān)注、評論,歡迎一健三聯(lián)。

總結(jié)

以上是生活随笔為你收集整理的Python小游戏(俄罗斯方块)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。