Pygame-Code zum Erstellen eines Schlangenspiels

Pygame-Code zum Erstellen eines Schlangenspiels

Verwendete Pygame-Funktionen

Im Snake-Spiel verwendete Funktionen

Funktion beschreiben
init() Initialisieren von pygame
Anzeige.set_mode() Erstellen Sie ein Fenster mit einem Tupel oder einer Liste als Argument
aktualisieren() Bildschirm aktualisieren
aufhören() pygame zur Deinitialisierung
Bildunterschrift festlegen() Text oben auf dem Bildschirm festlegen
Ereignis.get() Gibt eine Liste aller Ereignisse zurück
Oberfläche.füllen() Füllen Sie den Bildschirm mit einer Volltonfarbe
Zeit.Uhr() Zeiterfassung
Schriftart.Schriftart() Festlegen der Schriftart

Erstellen eines Bildschirms

Wir verwenden die Funktion display.set_mode() , um das pygame -Fenster zu erstellen. Gleichzeitig müssen wir am Anfang und Ende des Programms auch die Funktionen init() und quit() ausführen, um sicherzustellen, dass das Programm korrekt gestartet und beendet werden kann.

Pygame importieren
pygame.init()
dis = pygame.display.set_mode((400,300))
pygame.display.update()
pygame.quit()
aufhören()


Dazu müssen wir das Programm ausführen und können Folgendes erhalten:

Aber dieser Code, unsere Programmerstellung, wird nur vorbeifliegen, fügen wir etwas Code hinzu, um das Programmfenster zu halten

Pygame importieren
pygame.init()
dis = pygame.display.set_mode((400,300))
pygame.display.update()
pygame.display.set_caption('Schlangenspiel von Edureka')
game_over=Falsch
solange nicht game_over:
    für Ereignis in pygame.event.get():
        print(event) # Alle Ereignisse ausdrucken pygame.quit()
aufhören()


Wir haben den Namen des Spielfensters hinzugefügt und können auch alle Ereignisse in der Python Konsole sehen, während wir im pygame -Fenster arbeiten.

Als nächstes fügen wir ein Close-Response-Ereignis hinzu

pygame.init()
dis = pygame.display.set_mode((400, 300))
pygame.display.update()
pygame.display.set_caption('Schlange')
game_over = Falsch
solange nicht game_over:
    für Ereignis in pygame.event.get():
        wenn event.type == pygame.QUIT:
            game_over=Wahr

pygame.quit()
aufhören()


Nachdem unser Spielfenster eingerichtet ist, können wir snake zeichnen.

Eine Schlange erschaffen

Wir erstellen zunächst einige Farbvariablen zur Darstellung von snake , food , screen usw.

pygame.init()
dis = pygame.display.set_mode((400, 300))
pygame.display.update()
pygame.display.set_caption('Schlange')

blau=(0,0,255)
rot=(255,0,0)

game_over = Falsch
solange nicht game_over:
    für Ereignis in pygame.event.get():
        wenn event.type == pygame.QUIT:
            game_over=Wahr

    pygame.draw.rect(dis, blau, [200, 150, 10, 10])
    pygame.display.update()

pygame.quit()
aufhören()


Auf diese Weise entsteht eine Schlange, die den kleinen blauen Punkt darstellt.

Bring die Schlange in Bewegung

Um die Bewegung der snake zu realisieren, müssen wir das Tastenereignis KEYDOWN verwenden, das vier Tastenwerte enthält: K_UP, K_DOWN, K_LEFT und K_RIGHT, die jeweils oben, unten, links und rechts darstellen.

pygame.init()
pygame.display.set_caption('Schlange')
weiß = (255, 255, 255)
schwarz = (0, 0, 0)
rot = (255, 0, 0)

dis = pygame.display.set_mode((800, 600))

game_over = Falsch

x1 = 300
y1 = 300

x1_Änderung = 0
y1_Änderung = 0

Uhr = pygame.time.Clock()

solange nicht game_over:
    für Ereignis in pygame.event.get():
        wenn event.type == pygame.QUIT:
            game_over = Wahr
        wenn event.type == pygame.KEYDOWN:
            wenn event.key == pygame.K_LEFT:
                x1_Änderung = -10
                y1_Änderung = 0
            elif event.key == pygame.K_RIGHT:
                x1_Änderung = 10
                y1_Änderung = 0
            elif event.key == pygame.K_UP:
                y1_Änderung = -10
                x1_Änderung = 0
            elif event.key == pygame.K_DOWN:
                y1_Änderung = 10
                x1_Änderung = 0

    x1 += x1_Änderung
    y1 += y1_Änderung
    dis.fill(weiß)
    pygame.draw.rect(dis, schwarz, [x1, y1, 10, 10])

    pygame.display.update()

    Uhr.Tick(30)

pygame.quit()
aufhören()

Ich habe die Variablen x1_change und y1_change erstellt, um die x- und y-Koordinaten zu aktualisieren, damit sich unsere Schlange bewegen kann.

Umgang mit „Game Over“

Wenn sich snake beim Snake-Spiel aus dem Spielbildschirm bewegt, ist das Spiel fehlgeschlagen. Lassen Sie uns diesen Teil der Logik weiter unten behandeln.

Pygame importieren
Importzeit

pygame.init()
pygame.display.set_caption('Schlange')
weiß = (255, 255, 255)
schwarz = (0, 0, 0)
rot = (255, 0, 0)

dis_width = 600
dis_height = 400
dis = pygame.display.set_mode((dis_width, dis_width))

game_over = Falsch

x1 = dis_width / 2
y1 = Abstandshöhe / 2

Schlangenblock = 10

x1_Änderung = 0
y1_Änderung = 0

Uhr = pygame.time.Clock()
Schlangengeschwindigkeit = 30

font_style = pygame.font.Font("C:/Windows/Fonts/STFANGSO.TTF", 20)


def Nachricht (Nachricht, Farbe):
    mesg = Schriftstil.render(msg, True, Farbe)
    dis.blit(mesg, [dis_width / 2, dis_height / 2])


solange nicht game_over:
    für Ereignis in pygame.event.get():
        wenn event.type == pygame.QUIT:
            game_over = Wahr
        wenn event.type == pygame.KEYDOWN:
            wenn event.key == pygame.K_LEFT:
                x1_änderung = -snake_block
                y1_Änderung = 0
            elif event.key == pygame.K_RIGHT:
                x1_Änderung = Schlangenblock
                y1_Änderung = 0
            elif event.key == pygame.K_UP:
                y1_Änderung = -Schlangenblock
                x1_Änderung = 0
            elif event.key == pygame.K_DOWN:
                y1_Änderung = Schlangenblock
                x1_Änderung = 0

    wenn x1 >= dis_width oder x1 < 0 oder y1 >= dis_height oder y1 < 0:
        game_over = Wahr

    x1 += x1_Änderung
    y1 += y1_Änderung
    dis.fill(weiß)
    pygame.draw.rect(dis, schwarz, [x1, y1, Schlangenblock, Schlangenblock])

    pygame.display.update()

    Uhr.Tick(Schlangengeschwindigkeit)

Nachricht("Sie haben versagt, bitte starten Sie das Spiel neu!", rot)
pygame.display.update()
Zeit.Schlaf(2)

pygame.quit()
aufhören()

Erhöhen Sie die Nahrung

Da es sich um eine gefräßige Schlange handelt, muss sie natürlich gefüttert werden. Nun kümmern wir uns um das Futter.

Pygame importieren
Importzeit
zufällig importieren

pygame.init()
pygame.display.set_caption('Schlange')

weiß = (255, 255, 255)
schwarz = (0, 0, 0)
rot = (255, 0, 0)
blau = (0, 0, 255)

dis_width = 800
dis_height = 600

dis = pygame.display.set_mode((dis_width, dis_height))

Uhr = pygame.time.Clock()

Schlangenblock = 10
Schlangengeschwindigkeit = 30

font_style = pygame.font.Font("C:/Windows/Fonts/STFANGSO.TTF", 20)


def Nachricht (Nachricht, Farbe):
    mesg = Schriftstil.render(msg, True, Farbe)
    dis.blit(mesg, [dis_width / 3, dis_height / 3])


def gameLoop(): # Erstellen einer Funktion
    game_over = Falsch
    game_close = Falsch

    x1 = dis_width / 2
    y1 = Abstandshöhe / 2

    x1_Änderung = 0
    y1_Änderung = 0

    foodx = rund(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
    foody = rund(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0

    solange nicht game_over:

        während game_close == True:
            dis.fill(weiß)
            Nachricht("Sie haben versagt, bitte starten Sie das Spiel neu!", rot)
            pygame.display.update()

            für Ereignis in pygame.event.get():
                wenn event.type == pygame.KEYDOWN:
                    wenn event.key == pygame.K_q:
                        game_over = Wahr
                        game_close = Falsch
                    wenn event.key == pygame.K_c:
                        Spielschleife ()

        für Ereignis in pygame.event.get():
            wenn event.type == pygame.QUIT:
                game_over = Wahr
            wenn event.type == pygame.KEYDOWN:
                wenn event.key == pygame.K_LEFT:
                    x1_änderung = -snake_block
                    y1_Änderung = 0
                elif event.key == pygame.K_RIGHT:
                    x1_Änderung = Schlangenblock
                    y1_Änderung = 0
                elif event.key == pygame.K_UP:
                    y1_Änderung = -Schlangenblock
                    x1_Änderung = 0
                elif event.key == pygame.K_DOWN:
                    y1_Änderung = Schlangenblock
                    x1_Änderung = 0

        wenn x1 >= dis_width oder x1 < 0 oder y1 >= dis_height oder y1 < 0:
            game_close = Wahr

        x1 += x1_Änderung
        y1 += y1_Änderung
        dis.fill(weiß)
        pygame.draw.rect(dis, blau, [foodx, foody, Schlangenblock, Schlangenblock])
        pygame.draw.rect(dis, schwarz, [x1, y1, Schlangenblock, Schlangenblock])
        pygame.display.update()

        wenn x1 == foodx und y1 == foody:
            drucken("Gut!")
        Uhr.Tick(Schlangengeschwindigkeit)

    pygame.quit()
    aufhören()

Spielschleife ()

Ich habe eine Funktion gameLoop als unsere Hauptfunktion erstellt, das Futter der Schlange initialisiert und die Tastaturschlüsselwörter „c“ und „q“ hinzugefügt, um das Spiel neu zu starten und zu beenden.

Schlangenwachstum

Als nächstes beginnen wir damit, die Länge der Schlange zu erhöhen, nachdem snake das Futter gefressen hat. Dies ist auch die Grundregel des Spiels.

Pygame importieren
Importzeit
zufällig importieren

pygame.init()
pygame.display.set_caption('Schlange')
font_style = pygame.font.Font("C:/Windows/Fonts/STFANGSO.TTF", 20)
score_font = pygame.font.Font("C:/Windows/Fonts/STCAIYUN.TTF", 30)

weiß = (255, 255, 255)
gelb = (255, 255, 102)
schwarz = (0, 0, 0)
rot = (213, 50, 80)
grün = (0, 255, 0)
blau = (50, 153, 213)

dis_width = 600
dis_height = 400

dis = pygame.display.set_mode((dis_width, dis_height))

Uhr = pygame.time.Clock()

Schlangenblock = 10
Schlangengeschwindigkeit = 15


def unsere_Schlange(Schlangenblock, Schlangenliste):
    für x in snake_list:
        pygame.draw.rect(dis, schwarz, [x[0], x[1], Schlangenblock, Schlangenblock])


def Nachricht (Nachricht, Farbe):
    mesg = Schriftstil.render(msg, True, Farbe)
    dis.blit(mesg, [dis_width / 6, dis_height / 3])


def gameLoop():
    game_over = Falsch
    game_close = Falsch

    x1 = dis_width / 2
    y1 = Abstandshöhe / 2

    x1_Änderung = 0
    y1_Änderung = 0

    Schlangenliste = []
    Länge der Schlange = 1

    foodx = rund(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
    foody = rund(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0

    solange nicht game_over:

        während game_close == True:
            dis.fill(blau)
            Nachricht("Sie haben versagt, bitte starten Sie das Spiel neu!", rot)

            pygame.display.update()

            für Ereignis in pygame.event.get():
                wenn event.type == pygame.KEYDOWN:
                    wenn event.key == pygame.K_q:
                        game_over = Wahr
                        game_close = Falsch
                    wenn event.key == pygame.K_c:
                        Spielschleife ()

        für Ereignis in pygame.event.get():
            wenn event.type == pygame.QUIT:
                game_over = Wahr
            wenn event.type == pygame.KEYDOWN:
                wenn event.key == pygame.K_LEFT:
                    x1_änderung = -snake_block
                    y1_Änderung = 0
                elif event.key == pygame.K_RIGHT:
                    x1_Änderung = Schlangenblock
                    y1_Änderung = 0
                elif event.key == pygame.K_UP:
                    y1_Änderung = -Schlangenblock
                    x1_Änderung = 0
                elif event.key == pygame.K_DOWN:
                    y1_Änderung = Schlangenblock
                    x1_Änderung = 0

        wenn x1 >= dis_width oder x1 < 0 oder y1 >= dis_height oder y1 < 0:
            game_close = Wahr
        x1 += x1_Änderung
        y1 += y1_Änderung
        dis.fill(blau)
        pygame.draw.rect(dis, grün, [foodx, foody, Schlangenblock, Schlangenblock])
        Schlangenkopf = []
        Schlangenkopf.anhängen(x1)
        Schlangenkopf.anhängen(y1)
        Schlangenliste.anhängen(Schlangenkopf)
        wenn len(Schlangenliste) > Länge_der_Schlange:
            del snake_List[0]

        für x in snake_List[:-1]:
            wenn x == Schlangenkopf:
                game_close = Wahr

        unsere_Schlange(Schlangenblock, Schlangenliste)

        pygame.display.update()

        wenn x1 == foodx und y1 == foody:
            foodx = rund(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
            foody = rund(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
            Länge_der_Schlange += 1

        Uhr.Tick(Schlangengeschwindigkeit)

    pygame.quit()
    aufhören()
    Spielschleife ()

Partitur anzeigen

Zum Schluss zeigen wir noch den Punktestand an. Schließlich ist der Punktestand des Spielers immer noch sehr wichtig für das Spiel.

Pygame importieren
Importzeit
zufällig importieren

pygame.init()
pygame.display.set_caption('Schlange')
font_style = pygame.font.Font("C:/Windows/Fonts/STFANGSO.TTF", 20)
score_font = pygame.font.Font("C:/Windows/Fonts/STCAIYUN.TTF", 30)

weiß = (255, 255, 255)
gelb = (255, 255, 102)
schwarz = (0, 0, 0)
rot = (213, 50, 80)
grün = (0, 255, 0)
blau = (50, 153, 213)

dis_width = 600
dis_height = 400

dis = pygame.display.set_mode((dis_width, dis_height))

Uhr = pygame.time.Clock()

Schlangenblock = 10
Schlangengeschwindigkeit = 15


def Dein_Ergebnis(Ergebnis):
    Wert = score_font.render("Ihre Punktzahl: " + str(score), True, gelb)
    dis.blit(Wert, [0, 0])


def unsere_Schlange(Schlangenblock, Schlangenliste):
    für x in snake_list:
        pygame.draw.rect(dis, schwarz, [x[0], x[1], Schlangenblock, Schlangenblock])


def Nachricht (Nachricht, Farbe):
    mesg = Schriftstil.render(msg, True, Farbe)
    dis.blit(mesg, [dis_width / 6, dis_height / 3])


def gameLoop():
    game_over = Falsch
    game_close = Falsch

    x1 = dis_width / 2
    y1 = Abstandshöhe / 2

    x1_Änderung = 0
    y1_Änderung = 0

    Schlangenliste = []
    Länge_der_Schlange = 1

    foodx = rund(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
    foody = rund(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0

    solange nicht game_over:

        während game_close == True:
            dis.fill(blau)
            Nachricht("Sie haben versagt, bitte starten Sie das Spiel neu!", rot)
            Ihr_Ergebnis(Länge_der_Schlange - 1)
            pygame.display.update()

            für Ereignis in pygame.event.get():
                wenn event.type == pygame.KEYDOWN:
                    wenn event.key == pygame.K_q:
                        game_over = Wahr
                        game_close = Falsch
                    wenn event.key == pygame.K_c:
                        Spielschleife ()

        für Ereignis in pygame.event.get():
            wenn event.type == pygame.QUIT:
                game_over = Wahr
            wenn event.type == pygame.KEYDOWN:
                wenn event.key == pygame.K_LEFT:
                    x1_änderung = -snake_block
                    y1_Änderung = 0
                elif event.key == pygame.K_RIGHT:
                    x1_Änderung = Schlangenblock
                    y1_Änderung = 0
                elif event.key == pygame.K_UP:
                    y1_Änderung = -Schlangenblock
                    x1_Änderung = 0
                elif event.key == pygame.K_DOWN:
                    y1_Änderung = Schlangenblock
                    x1_Änderung = 0

        wenn x1 >= dis_width oder x1 < 0 oder y1 >= dis_height oder y1 < 0:
            game_close = Wahr
        x1 += x1_Änderung
        y1 += y1_Änderung
        dis.fill(blau)
        pygame.draw.rect(dis, grün, [foodx, foody, Schlangenblock, Schlangenblock])
        Schlangenkopf = []
        Schlangenkopf.anhängen(x1)
        Schlangenkopf.anhängen(y1)
        Schlangenliste.anhängen(Schlangenkopf)
        wenn len(Schlangenliste) > Länge_der_Schlange:
            del snake_List[0]

        für x in snake_List[:-1]:
            wenn x == Schlangenkopf:
                game_close = Wahr

        unsere_Schlange(Schlangenblock, Schlangenliste)
        Ihr_Ergebnis(Länge_der_Schlange - 1)

        pygame.display.update()

        wenn x1 == foodx und y1 == foody:
            foodx = rund(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
            foody = rund(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
            Länge_der_Schlange += 1

        Uhr.Tick(Schlangengeschwindigkeit)

    pygame.quit()
    aufhören()


Spielschleife ()

Hier erstellen wir eine Your_score-Funktion, um den Punktestand des Spielers aufzuzeichnen

Auf diese Weise haben wir ein einfaches Schlangenspiel fertiggestellt.

Zum Schluss fügen wir dem Spiel Hintergrundmusik hinzu, um die Spielzeit angenehmer zu gestalten.

# Musik abspielen pygame.init()
pygame.mixer.music.load(r"Spiel.mp3")
pygame.mixer.music.play()


Dies ist das Ende dieses Artikels über die Erstellung eines Schlangenspiels mit 100 Zeilen Pygame-Code. Weitere Informationen zur Erstellung eines Schlangenspiels mit Pygame finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Beispiel für die Implementierung eines Snake-Spiels basierend auf Pygame
  • Implementierung eines einfachen Snake-Spiels basierend auf Pygame
  • Python-Praxis: Verwenden von Pygame zur Implementierung des Snake-Spiels (Teil 2)
  • Python: Praktische Verwendung von Pygame zur Realisierung des Schlangenspiels (I)
  • Verwenden Sie die Python-Drittanbieterbibliothek pygame, um ein Schlangenspiel zu schreiben
  • Python verwendet das Pygame-Toolkit, um das Schlangenspiel zu implementieren (bunte Version).
  • Pygame implementiert das Schlangenspiel (Teil 2)
  • Pygame implementiert das Schlangenspiel (Teil 1)

<<:  Eine kurze Diskussion zum Problem, dass der Text in der Schaltfläche im Kompatibilitätsmodus des Browsers nicht vertikal zentriert ist

>>:  So erstellen Sie eine MySQL-Master-Slave-Datenbank mit Docker unter MacOS

Artikel empfehlen

Implementierung eines einfachen Weihnachtsspiels mit JavaScript

Inhaltsverzeichnis Vorwort Ergebnisse erzielen Co...

Detaillierte Erläuterung der ersten Erfahrungen mit Vue3.0 + TypeScript + Vite

Inhaltsverzeichnis Projekterstellung Projektstruk...

Der einfachste Weg, MySQL 5.7.20 mit yum in CentOS 7 zu installieren

Die Standarddatenbank von CentOS7 ist MariaDB, ab...

Details zu Makrotasks und Mikrotasks in JavaScript

Inhaltsverzeichnis 1. Was sind Mikroaufgaben? 2. ...

Detaillierte Installationsschritte für MySQL 8.0.11

In diesem Artikel werden die Installationsschritt...

Einführung in die drei wesentlichen Protokolle für MySQL-Datenbankinterviews

Inhaltsverzeichnis 1. Redo-Log (Transaktionsproto...

Detaillierte Erklärung der Speicher-Engine in MySQL

Übersicht über die MySQL-Speicher-Engine Was ist ...

Konfigurationsmethode für die SystemC-Umgebung unter Linux

Das Folgende ist die Konfigurationsmethode unter ...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.14

Dieser Artikel dokumentiert den Installations- un...