1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 100行Python代码 做一个打地鼠小游戏!

100行Python代码 做一个打地鼠小游戏!

时间:2024-01-03 08:34:00

相关推荐

100行Python代码 做一个打地鼠小游戏!

最近在学习使用 Python 来完成一些小游戏,使用到的有 Pygame 和 PyQt5 等,根据网上前人的代码,整理了一个打地鼠的小游戏,今天也分享给大家,一起学习!

游戏画面

首先先进行游戏画面排版,

classTopWindow(QWidget):def__init__(self,parent=None):super().__init__(parent)self.virusnum=0self.setWindowTitle("消灭地鼠小游戏")self.setWindowIcon(QIcon(r'sucai/图标.jpg'))app=QApplication(sys.argv)Display=TopWindow()Display.setFixedSize(900,600)Display.show()sys.exit(app.exec_())

对于 PyQt5 来说,需要创建一个全局的 Application 对象,其参数是命令行参数列表,可以通过 setFixedSize 来设置游戏框的大小。

我们还设置了类变量 virusnum 作为地鼠个数计量

接下来我们创建一个地鼠类,把相关的地洞排布起来

classvirus(QPushButton):def__init__(self,parent=None):super().__init__(parent)self.setFixedSize(160,120)self.setStyleSheet("QPushButton{border-image: url(sucai/地洞2.png)}")self.upTime=QTimer()self.upTime.timeout.connect(self.up)

再创建25个地洞

foriinrange(25):exec("self.virus{0}=virus()".format(i))foriinrange(5):forjinrange(5):exec("self.imagelayout.addWidget(self.virus{0},{1},{2})".format(t,i,j))t+=1

此时我们程序的效果如下

设置工具栏

下面我们来为游戏页面添加必要的工具栏,比如开始按钮,游戏积分框等等

#右侧固定窗口内控件self.settingslayout=QGridLayout()#网格布局self.settingsWidget=QWidget()self.settingsWidget.setFixedSize(80,350)self.imagelayout.addWidget(self.settingsWidget,0,5,1,5)self.settingsWidget.setLayout(self.settingslayout)

之后再创建相关的按钮和输入框

self.startPushButton=QtWidgets.QPushButton(text="开始游戏",clicked=self.handle_play_button)self.startPushButton.setFixedSize(80,40)#self.startPushButton.clicked.connect(self.gamestart)#绑定信号self.textBrowser=QTextBrowser()self.textBrowser.setText('游戏未开始')self.textBrowser.setFixedSize(70,40)self.killBrowser=QTextBrowser()self.killBrowser.setText('消灭病毒数:0')self.killBrowser.setFixedSize(70,50)self.escapeBrowser=QTextBrowser()self.escapeBrowser.setText('逃离病毒数:0')self.escapeBrowser.setFixedSize(70,50)self.remaintimeText=QTextBrowser()self.remaintimeText.setText('剩余时间:\n30s')self.remaintimeText.setFixedSize(70,55)

在这里,对于开始按钮,采用了与其他按钮不同处理方式,当程序处于游戏中时,该按钮就变成“结束游戏”,所以我们来看看 handle_play_button

@QtCore.pyqtSlot()defhandle_play_button(self):btn=self.sender()ifbtnisnotNone:text=btn.text()iftext=="开始游戏":btn.setText("结束游戏")self.gamestart()else:btn.setText("开始游戏")self.gameover()

对于用到的 gamestart 和 gameover 两个函数,代码如下

defgamestart(self):score=0self.textBrowser.setText("正在游戏")self.timer.start(30000)#30秒执行1次self.virustimer.start(1000)self.remaintimer.start(1000)defgameover(self):self.timer.stop()self.virustimer.stop()self.textBrowser.setText("游戏结束")self.mousenum=0foriinrange(25):exec("self.virus{0}.flag=0".format(i))

最后再把按钮等增加到游戏页面右侧

self.settingslayout.addWidget(self.startPushButton,0,0)self.settingslayout.addWidget(self.textBrowser,1,0)self.settingslayout.addWidget(self.killBrowser,2,0)self.settingslayout.addWidget(self.escapeBrowser,3,0)self.settingslayout.addWidget(self.remaintimeText,4,0)#self.settingslayout.addWidget(self.endPushButton,5,0)self.settingslayout.addWidget(self.pauseMusicButton,6,0)

现在我们的游戏页面是如下样式

游戏积分

既然是游戏,当然要有积分功能。对于地鼠游戏,我们点击鼠标的时候,就是砸地鼠的时候

defmousePressEvent(self,event):self.setCursor(QCursor(QPixmap(r"sucai/down.png")))self.upTime.start(100)self.kill()defup(self):self.setCursor(QCursor(QPixmap(r"sucai/up.png")))

然后再进行游戏得分的逻辑

defkill(self):try:ifself.flag==1:self.setStyleSheet("QPushButton{border-image:url(sucai/killvirus2.png)}")#地鼠被砸globalscorescore+=1self.flag=0except:pass

这样,一个基本的游戏积分也就有了!

最后来看看最终的效果吧

源码获取,在公众号后台回复“小助手”,找他领取,备注暗号:打地鼠

推荐阅读:入门:最全的零基础学Python的问题 |零基础学了8个月的Python|实战项目|学Python就是这条捷径干货:爬取豆瓣短评,电影《后来的我们》|38年NBA最佳球员分析| 从万众期待到口碑扑街!唐探3令人失望 |笑看新倚天屠龙记|灯谜答题王|用Python做个海量小姐姐素描图|碟中谍这么火,我用机器学习做个迷你推荐系统电影趣味:弹球游戏 |九宫格 |漂亮的花|两百行Python《天天酷跑》游戏!AI:会做诗的机器人|给图片上色|预测收入|碟中谍这么火,我用机器学习做个迷你推荐系统电影小工具:Pdf转Word,轻松搞定表格和水印!|一键把html网页保存为pdf!|再见PDF提取收费!|用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换|制作一款钉钉低价机票提示器!|60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

1).卧槽!Pdf转Word用Python轻松搞定!

2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃

3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密

4).80行代码!用Python做一个哆来A梦分身

5).你必须掌握的20个python代码,短小精悍,用处无穷

6).30个Python奇淫技巧集

7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货

8).再见Python!我要学Go了!2500字深度分析!

9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。