python开发俄罗斯方块小游戏代码实例
- 更新时间:2021-06-23 10:05:49
- 编辑:何灵秀
给网友朋友们带来一篇相关的编程文章,网友隗宵晨根据主题投稿了本篇教程内容,涉及到Python相关内容,已被641网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。
参考资料
- Python网络编程基础 PDF 电子书 / 26 MB / 海特兰德 推荐度:
- Python机器学习经典实例 PDF 电子书 / 27.3M / 普拉提克·乔西 推荐度:
- Python和HDF5大数据应用 PDF 电子书 / 13.8 MB / 科莱特 推荐度:
- 《Python数据可视化》源码 配套资源 / 8.3 MB / 科斯?拉曼 推荐度:
- 《给Python点颜色:青少年学编程》配套资源 配套资源 / 237.78 MB / 佘友军 推荐度:
正文内容
给学习python的读者整理一篇《python开发俄罗斯方块小游戏代码实例》优秀文章,实例讲的很实用,这里给大家转摘到这里,看完如果觉得有用请记得收藏。
1.操作环境
win10系统,python3.5以上系统,
2.相关模块
pyqt5模块;
以及一些Python自带的模块。
3.安装Python并添加到环境变量,pip安装需要的相关模块。
pip install -r requirements.txt
4.运行下面代码
''' Function: 俄罗斯方块主程序 Author: Charles 公众号: Charles的皮卡丘 ''' 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 —— Charles的皮卡丘' ) 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 : 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_ ())
相关教程
-
python怎么分析数据
python进行数据分析需要经过五个步骤,分别是数据准备、算法设计、算法训练、算法验证和算法应用。在不同的场景下通常可以采用不同的数据分析方式。
发布时间:2019-07-10
-
Python3 socket同步通信简单示例
这篇文章主要介绍了Python3 socket同步通信功能,结合简单实例形式分析了Python socket同步通信客户端与服务器端实现技巧,需要的朋友可以参考下
发布时间:2019-08-26