您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么用Python制作一個打地鼠的小游戲”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么用Python制作一個打地鼠的小游戲”吧!
首先先進行游戲畫面排版,
class TopWindow(QWidget): def __init__(self, parent=None): super().__init__(parent) self.virusnum = 0 self.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 作為地鼠個數計量
接下來我們創建一個地鼠類,把相關的地洞排布起來
class virus(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個地洞
for i in range(25): exec("self.virus{0}=virus()".format(i)) for i in range(5): for j in range(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() def handle_play_button(self): btn = self.sender() if btn is not None: text = btn.text() if text == "開始游戲": btn.setText("結束游戲") self.gamestart() else: btn.setText("開始游戲") self.gameover()
對于用到的 gamestart 和 gameover 兩個函數,代碼如下
def gamestart(self): score = 0 self.textBrowser.setText("正在游戲") self.timer.start(30000) # 30秒執行1次 self.virustimer.start(1000) self.remaintimer.start(1000) def gameover(self): self.timer.stop() self.virustimer.stop() self.textBrowser.setText("游戲結束") self.mousenum = 0 for i in range(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)
現在我們的游戲頁面是如下樣式
既然是游戲,當然要有積分功能。對于地鼠游戲,我們點擊鼠標的時候,就是砸地鼠的時候
def mousePressEvent(self, event): self.setCursor(QCursor(QPixmap(r"sucai/down.png"))) self.upTime.start(100) self.kill() def up(self): self.setCursor(QCursor(QPixmap(r"sucai/up.png")))
然后再進行游戲得分的邏輯
def kill(self): try: if self.flag == 1: self.setStyleSheet("QPushButton{border-image: url(sucai/killvirus2.png)}") # 地鼠被砸 global score score += 1 self.flag = 0 except: pass
感謝各位的閱讀,以上就是“怎么用Python制作一個打地鼠的小游戲”的內容了,經過本文的學習后,相信大家對怎么用Python制作一個打地鼠的小游戲這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。