[PYTHON] Wie man ein einfaches Flappy Bird-Spiel mit Pygame macht

0. Zuerst

Wenn Sie sehen möchten, wie die Dinge, die Sie diesmal machen, funktionieren, lesen Sie bitte hier (Youtube-Video).

1. Implementierung

flappy_bird.py


import pygame
import random

win = pygame.display.set_mode((400,600))
clock = pygame.time.Clock()

class Bird:
    def __init__(self,win):
        self.win = win
        self.y = 300
        self.x = 25
        self.gravity = 1
        self.velocity = 0
        self.lift = -2
        self.air = 0

    def show(self):
        pygame.draw.circle(self.win,(255,255,255),(self.x,self.y),16)

    def update(self):
        if self.air == 0:
            self.velocity += self.gravity
            self.y += self.velocity
            self.air = 1
        elif self.air > 2:
            self.air = 0
        elif self.air > 0:
            self.air += 1


        if self.y > 600:
            self.y = 600
            self.velocity = 0

        if self.y < 0:
            self.y = 0
            self.velocity = 0

    def up(self):
        self.velocity += self.lift

class Pipe:
    def __init__(self,win):
        self.win = win
        self.top = random.randint(0,300)
        self.bottom = random.randint(0,300)
        self.w = 20
        self.x = 400
        self.speed = 2
        self.passed = False
        self.color = (255,255,255)

    def show(self):
        pygame.draw.rect(self.win,self.color,(self.x,0,self.w,self.top))
        pygame.draw.rect(self.win,self.color,(self.x,600-self.bottom,self.w,self.bottom))

    def update(self):
        self.x -= self.speed

    def hits(self,bird):
        if bird.y < self.top or bird.y > 600 - self.bottom:
            if bird.x >= self.x and bird.x <= self.x + self.w:
                return True
        return False

def drawWindow(bird,pipes):
    bird.show()
    bird.update()
    for pipe in pipes:
        pipe.show()

    pygame.display.update()

bird = Bird(win)
pipes = [Pipe(win)]
run = True
while run:
    clock.tick(100)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    keys = pygame.key.get_pressed()

    if keys[pygame.K_SPACE]:
        bird.up()

    add_pipe = False
    rem = []
    for pipe in pipes:
        if pipe.x + pipe.w < 0:
                rem.append(pipe)
        if not pipe.passed and pipe.x < bird.x:
            pipe.passed = True
            add_pipe = True

        if pipe.hits(bird):
            pipe.color = (255,0,0)

        pipe.update()

    if add_pipe:
        pipes.append(Pipe(win))

    for r in rem:
        pipes.remove(r)

    win.fill((0,0,0))
    drawWindow(bird,pipes)

Hier haben wir eine Klasse für Dokan (Pfeife) und eine Klasse für Vögel (Vogel) erstellt. In der Vogelklasse bilden wir anstelle eines Vogels einen Kreis, damit der Vogel aufgrund der Schwerkraft fällt. In der Dokan-Klasse werden die Position des oberen Dokan und die Position des unteren Dokan zufällig bestimmt, und basierend darauf wird ein Rechteck gezeichnet, um den Dokan herzustellen. Da Dokan von rechts fließt, wird ein bestimmter Wert von der x-Koordinate abgezogen, um ihn zu verschieben. Wir haben auch eine Funktion, die True zurückgibt, wenn ein Vogel einen Dokan trifft. Und in der letzten Runde verlangsamen wir das Spiel ein wenig, entfernen den Docan, wenn der Vogel daran vorbeikommt, fügen einen neuen hinzu und färben ihn rot, wenn der Vogel trifft.

Schließlich

Wie man dieses Flappy Bird-Spiel macht, wird auch in Youtube erklärt. Schauen Sie also bitte nach, wenn es Ihnen gefällt. Wenn Sie Fragen oder Ratschläge haben, kommentieren Sie bitte. Wenn es Ihnen gefällt, abonnieren Sie den Kanal.

Recommended Posts

Wie man ein einfaches Flappy Bird-Spiel mit Pygame macht
Wie man ein Schießspiel mit toio macht (Teil 1)
So erstellen Sie ein Wörterbuch mit einer hierarchischen Struktur.
Ich möchte ein Spiel mit Python machen
Versuchen Sie, ein einfaches Spiel mit Python 3 und iPhone zu erstellen
So erstellen Sie mit Flask einen BOT für Cisco Webex-Teams
Wie erstelle ich eine japanisch-englische Übersetzung?
Wie erstelle ich ein Multiplayer-Online-Actionspiel mit Slack?
Wie man einen lockeren Bot macht
Wie erstelle ich einen Crawler?
[Blender] So erstellen Sie ein Blender-Plug-In
Wie erstelle ich einen Crawler?
Rubyist hat versucht, eine einfache API mit Python + Flasche + MySQL zu erstellen
So erstellen Sie einen Befehl zum Lesen der Einstellungsdatei mit Pyramide
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
So fügen Sie ein Paket mit PyCharm hinzu
[Python] Wie man eine Klasse iterierbar macht
Lassen Sie uns mit PLY 1 eine einfache Sprache erstellen
So erstellen Sie einen benutzerdefinierten Backtrader-Indikator
Wie erstelle ich eine Pelican Site Map?
Wie man ein Dialogsystem für Anfänger erstellt
Lesen einer CSV-Datei mit Python 2/3
So senden Sie eine Nachricht mit Curl an LINE
Ein Memorandum, um WebDAV nur mit Nginx zu erstellen
So zeichnen Sie ein 2-Achsen-Diagramm mit Pyplot
So entwickeln Sie eine Cart-App mit Django
Erstellen Sie mit Flask einen einfachen Punktbildgenerator
Erstelle mit pygame2 eine neue Benutzeroberfläche!
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
So erstellen Sie ein QGIS-Plug-In (Paketerzeugung)
Ich las "Wie man ein Hacking Lab macht"
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Verfahren zur Erstellung plattformübergreifender Apps mit kivy
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
Ich habe versucht, eine einfache Bilderkennungs-API mit Fast API und Tensorflow zu erstellen
Eine neue Form der App, die mit GitHub funktioniert: So erstellen Sie GitHub-Apps
Lass uns ein Squashspiel machen
Mach ein Spiel im Tetris-Stil!
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
Erklären Sie ausführlich, wie Sie mit Python einen Sound erzeugen
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
So erhalten Sie einen angemeldeten Benutzer mit Djangos forms.py
So konvertieren Sie ein Klassenobjekt mit SQLAlchemy in ein Wörterbuch
Erstellen Sie einen einfachen Slackbot mit einer interaktiven Schaltfläche in Python
Erstellen Sie mit OpenCV eine Funktion zum Beschreiben japanischer Schriftarten
So erstellen Sie ein Python-Paket mit VS Code
So erstellen Sie einen HTTPS-Server mit Go / Gin
Grundlagen von PyTorch (2) - Wie erstelle ich ein neuronales Netzwerk?
So erstellen Sie ein einfaches TCP-Server / Client-Skript
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
Was ist Gott? Erstelle einen einfachen Chatbot mit Python
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
[Mac] Ich möchte einen einfachen HTTP-Server erstellen, auf dem CGI mit Python ausgeführt wird