python俄罗斯方块详解,各种俄罗斯方块游戏
俄罗斯方块是一个最初由阿列克谢帕吉特诺夫在苏联设计和编程的益智类视频游戏。本文将利用大蟒实现这一经典的小游戏,需要的可以参考一下
目录
1俄罗斯方块游戏2Python代码实现2.1展现2.2Python代码
1 俄罗斯方块游戏
《俄罗斯方块》 原本是前苏联科学家阿列克谢帕基特诺夫所开发的教育用软件,之后开始提供授权给各个游戏公司,造成各平台上软件大量发行的现象。
游戏男孩版的俄罗斯方块在日本卖出424万套,是游戏男孩史上卖最好的游戏。海湾战争时,也是前线美军最常拿消磨时间的游戏之一。
由于俄罗斯方块具有的数学性、动态性与知名度,也经常拿来作为游戏程序设计的练习题材。
2 Python代码实现
2.1 展现
2.2 Python代码
导入操作系统
导入系统
随机导入
从模块导入*
来自PyQt5 .模块导入*
来自PyQt5 .QtCore导入*
来自PyQt5 .QtWidgets导入*
#=============定义俄罗斯方块游戏类==============
俄罗斯方块类(QMainWindow):
def __init__(self,parent=None):
超级(俄罗斯方块,自我)。__init__(父级)
# 是否暂停强中子发生器(强中子发生器的缩写)
self.is_paused=False
# 是否开始强中子发生器(强中子发生器的缩写)
self.is_started=False
self.initUI()
#===========界面初始化===============
定义(自己):
#图标
自我。setwindowicon(QIcon(OS。路径。加入(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()
自我。external _ board=外部板(self,self.grid_size,self.inner_board)
布局_水平。添加小部件(自我。外部_电路板)
self.side_panel=SidePanel(self,self.grid_size,self.inner_board)
布局_水平。添加小部件(自我。侧面板)
self.status_bar=self.statusBar()
自我。外部_板。分数信号.连接(self.status_bar.showMessage)
self.start()
自我中心()
self.setWindowTitle(俄罗斯方块——九歌)
self.show()
自我。setfixedsize(self。外部_板。宽度()自身。侧板。width()、self。侧板。身高()自我。状态栏。高度())
#=============游戏界面移动到屏幕中间=======================
定义中心(自身):
screen=QDesktopWidget().屏幕几何()
size=self.geometry()
自我。移动((屏幕。width()-size。width())//2,(屏幕。height()-size。height())//2)
#==================更新界面==============
定义更新窗口(自身):
self.external_board.updateData()
self.side_panel.updateData()
self.update()
#========开始================
定义开始(自身):
如果self.is_started:
返回
self.is_started=True
自我。内_板。创建新的俄罗斯方块()
self.timer.start(self.fps,self)
#==========暂停/不暂停===============
定义暂停(自身):
如果不是self.is_started:
返回
自我。is _ paused=不是自己。已暂停
如果self.is_paused:
self.timer.stop()
自我。外部_板。分数_信号。发出(暂停)
else:
self.timer.start(self.fps,self)
self.updateWindow()
#============计时器事件=================
定义时间事件(自身,事件):
如果事件。timerid()==self。计时器。timerid():
removed _ lines=自身。内_板。向下移动()
自我。外部_板。分数=已删除_行
self.updateWindow()
else:
超级(俄罗斯方块,自我)。定时器事件(事件)
#=================按键事件====================
def keyPressEvent(self,event):
如果不是自我. is_started或自我。内_板。current _ Tetris==俄罗斯方块形状().形状_空白:
超级(俄罗斯方块,自我)。按键事件(事件)
返回
key=event.key()
# P键暂停
如果key==Qt .Key_P:
self.pause()
返回
如果self.is_paused:
返回
# 向左
elif key==Qt .Key_Left:
self.inner_board.moveLeft()
# 向右
elif key==Qt .Key_Right:
self.inner_board.moveRight()
# 旋转
elif key==Qt .Key_Up:
自我。内_板。旋转方向()
# 快速坠落
elif key==Qt .Key_Space:
自我。外部_板。分数=自我。内_板。下拉()
else:
超级(俄罗斯方块,自我)。按键事件(事件)
self.updateWindow()
#==========运行===================
if __name__==__main__:
app=QA应用程序([])
俄罗斯方块=俄罗斯方块游戏()
sys.exit(app.exec_())
到此这篇关于计算机编程语言完整实现俄罗斯方块游戏全解的文章就介绍到这了,更多相关计算机编程语言俄罗斯方块内容请搜索盛行信息技术软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行信息技术软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。