Récemment, j'apprends à utiliser Python pour réaliser quelques petits jeux. J'ai utilisé Pygame et PyQt5, etc. D'après les codes des prédécesseurs sur Internet, j'ai compilé un petit jeu de whack-a-mole. Aujourd'hui, je vais le partager avec vous et apprenez ensemble !
écran de jeu
Tout d'abord, la composition de l'écran de jeu,
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_())
Pour PyQt5, il est nécessaire de créer un objet Application global, dont le paramètre est une liste de paramètres de ligne de commande, et la taille de la boîte de jeu peut être définie via setFixedSize.
Nous définissons également la variable de classe virusnum comme le nombre de gophers
Ensuite, nous créons une classe de gopher et organisons les terriers pertinents
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)
Créer 25 terriers supplémentaires
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
À ce stade, l'effet de notre programme est le suivant
Barre d'outils Paramètres
Ensuite, ajoutons les barres d'outils nécessaires à la page de jeu, telles que le bouton de démarrage, la boîte de points de jeu, etc.
# 右侧固定窗口内控件
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)
Créez ensuite des boutons et des zones de saisie associés
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)
Ici, le bouton de démarrage est traité différemment des autres boutons. Lorsque le programme est dans le jeu, le bouton devient "fin de partie", alors regardons 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()
Pour les fonctions gamestart et gameover utilisées, le code est le suivant
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))
Enfin, ajoutez des boutons sur le côté droit de la page du jeu
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)
Maintenant, notre page de jeu ressemble à ceci
points de jeu
Puisqu'il s'agit d'un jeu, il doit bien sûr y avoir une fonction de point. Pour le jeu gopher, quand on clique sur la souris, il est temps de casser le gopher
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")))
Passez ensuite à la logique du score du jeu
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
De cette façon, un point de jeu de base sera là !
Enfin, voyons l'effet final.
Python
devient de plus en plus populaire, et ce n'est pas loin de l'époque où tout le monde apprend Python. Il existe tellement de scénarios d'application Python, qu'il s'agisse d'une activité principale, d'une activité secondaire ou de toute autre chose, vous n'avez donc pas besoin être submergé par trop de compétences. J'ai une copie ici Un ensemble complet de matériel d'apprentissage Python, j'espère aider ceux qui veulent apprendre Python !
1. Le parcours d'apprentissage tous sens de Python
Le parcours tous sens de Python consiste à trier les points techniques couramment utilisés en Python pour former un résumé des points de connaissance dans divers domaines. Son utilité réside dans le fait que vous pouvez trouver des ressources d'apprentissage correspondantes selon les points de connaissance ci-dessus Assurez-vous d'apprendre de manière plus complète.
2. Logiciel d'apprentissage
Si un ouvrier veut faire du bon travail, il doit d'abord affûter ses outils. Le logiciel de développement couramment utilisé pour apprendre Python est ici, ce qui vous fait gagner beaucoup de temps.
3. Vidéos d'apprentissage d'introduction
Lorsque nous regardons des vidéos et apprenons, nous ne pouvons pas simplement bouger nos yeux et notre cerveau sans le faire. Une méthode d'apprentissage plus scientifique consiste à les utiliser après avoir compris. À ce stade, le projet pratique est très approprié .
4. Cas pratiques
La théorie optique ne sert à rien, il faut apprendre à suivre et à faire des exercices pratiques pour mettre en pratique ce que l'on a appris.
5. Matériaux d'entretien
Nous devons apprendre Python pour trouver un emploi bien rémunéré. Les questions d'entretien suivantes sont les derniers matériaux d'entretien des entreprises Internet de première ligne telles qu'Ali, Tencent et Byte, et les patrons d'Ali ont donné des réponses faisant autorité. remplir cet ensemble de documents d'entrevue, je crois que tout le monde peut trouver un emploi satisfaisant.