100 lignes de code Python, faites un petit jeu de whack-a-mole~

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.
insérez la description de l'image ici

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.
insérez la description de l'image ici

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.
insérez la description de l'image ici

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é .
insérez la description de l'image ici

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.
insérez la description de l'image ici

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.
insérez la description de l'image ici
insérez la description de l'image ici

Cette version complète de l'ensemble complet de supports d'apprentissage Python a été téléchargée sur CSDN. Si vous en avez besoin, vous pouvez scanner le code QR de la certification officielle CSDN ci-dessous sur WeChat pour l'obtenir gratuitement【保证100%免费

Je suppose que tu aimes

Origine blog.csdn.net/wslejbb/article/details/130523577
conseillé
Classement