Schlangenspiel in Python | Snake-Game-Programm mit Pygame | Edureka (2024)

Werden Sie zertifizierter Fachmann

Ja, ich weiß, dass Sie alle das Schlangenspiel gespielt haben und auf jeden Fall nie verlieren wollten. Als Kinder liebten wir es alle, nach Cheats zu suchen, um nie die „Game Over“-Meldung zu sehen, aber als Technikbegeisterte weiß ich, dass Sie diese „Schlange“ am liebsten zu Ihren Beats tanzen lassen würden. Das zeige ich Ihnen allen in diesem Artikel über Snake Game in Python.

Möchten Sie sich weiterbilden, um beruflich voranzukommen? Besuche dieoder schließen Sie sich unserem anKurs „Data Science mit Python“..
Bevor wir fortfahren, werfen wir einen kurzen Blick auf alle Unterbits, aus denen das Snake Game in Python besteht:

  1. Pygame installieren
  2. Erstellen Sie den Bildschirm
  3. Erschaffe die Schlange
  4. Die Schlange bewegen
  5. Das Spiel ist vorbei, wenn Snake an die Grenzen stößt
  6. Hinzufügen des Essens
  7. Verlängerung der Schlange
  8. Anzeige der Partitur

Pygame installieren:

Um Spiele mit Pygame zu erstellen, müssen Sie es zunächst auf Ihren Systemen installieren. Dazu können Sie einfach den folgenden Befehl verwenden:

Pip Pygame installieren

Sobald dies erledigt ist, importieren Sie einfach Pygame und beginnen Sie mit der Spieleentwicklung. Bevor Sie fortfahren, werfen Sie einen Blick auf die Pygame-Funktionen, die in diesem Schlangenspiel verwendet wurden, und auf deren Beschreibungen.

FunktionBeschreibung

drin()

Initialisiert alle importierten Pygame-Module (gibt ein Tupel zurück, das den Erfolg und Misserfolg der Initialisierungen anzeigt)

display.set_mode()

Nimmt ein Tupel oder eine Liste als Parameter zum Erstellen einer Oberfläche (Tupel bevorzugt)

aktualisieren()

Aktualisiert den Bildschirm

aufhören()

Wird verwendet, um alles zu deinitialisieren

set_caption()

Legt den Beschriftungstext oben auf dem Bildschirm fest

event.get()

Gibt eine Liste aller Ereignisse zurück

Surface.fill()

Füllt die Oberfläche mit einer einfarbigen Farbe

Zeit Uhr()

Hilft, die Zeit zu verfolgen

Schriftart.SysFont()

Erstellt eine Pygame-Schriftart aus den Schriftartressourcen des Systems

Erstellen Sie den Bildschirm:

Um den Bildschirm mit Pygame zu erstellen, müssen Sie Folgendes verwendendisplay.set_mode()Funktion. Außerdem müssen Sie das nutzendrin()und dasaufhören()Methoden, um alles am Anfang und am Ende des Codes zu initialisieren und zu deinitialisieren. Deraktualisieren()Die Methode wird verwendet, um alle am Bildschirm vorgenommenen Änderungen zu aktualisieren. Es gibt eine andere Methode, d.hflip()Das funktioniert ähnlich wie die Funktion update(). Der Unterschied besteht darin, dass die update()-Methode nur die vorgenommenen Änderungen aktualisiert (wenn jedoch keine Parameter übergeben werden, aktualisiert sie den gesamten Bildschirm), während die flip()-Methode den gesamten Bildschirm erneut wiederherstellt.

CODE:

import pygamepygame.init()dis=pygame.display.set_mode((400,300))pygame.display.update()pygame.quit()quit()

AUSGANG:

Schlangenspiel in Python | Snake-Game-Programm mit Pygame | Edureka (1)

Wenn Sie diesen Code ausführen, wird der Bildschirm angezeigt, aber auch sofort geschlossen. Um das zu beheben, sollten Sie eine Spielschleife mit verwendenwhile-Schleifebevor ich das Spiel tatsächlich wie folgt beende:

import pygamepygame.init()dis=pygame.display.set_mode((400,300))pygame.display.update()pygame.display.set_caption('Snake game by Edureka')game_over=Falsewhile not game_over: für Ereignis in pygame.event .get(): print(event) #druckt alle Aktionen aus, die auf dem Bildschirm stattfindenpygame.quit()quit()

Wenn Sie diesen Code ausführen, werden Sie feststellen, dass der Bildschirm, den Sie zuvor gesehen haben, nicht geschlossen wird und außerdem alle darüber ausgeführten Aktionen zurückgegeben werden. Ich habe das mit dem gemachtevent.get()Funktion. Außerdem habe ich den Bildschirm mit dem Namen „Snake Game by Edureka“ benanntdisplay.set_caption()Funktion.

AUSGANG:

Schlangenspiel in Python | Snake-Game-Programm mit Pygame | Edureka (2)

Jetzt haben Sie einen Bildschirm zum Spielen Ihres Snake-Spiels, aber wenn Sie versuchen, auf die Schaltfläche „Schließen“ zu klicken, wird der Bildschirm nicht geschlossen. Dies liegt daran, dass Sie nicht angegeben haben, dass Ihr Bildschirm geschlossen werden soll, wenn Sie auf die Schaltfläche „Schließen“ klicken. Zu diesem Zweck stellt Pygame ein Ereignis namens „QUIT“ zur Verfügung, das wie folgt verwendet werden sollte:

import pygamepygame.init()dis=pygame.display.set_mode((400,300))pygame.display.update()pygame.display.set_caption('Snake game by Edureka')game_over=Falsewhile not game_over: für Ereignis in pygame.event .get(): if event.type==pygame.QUIT: game_over=Truepygame.quit()quit()

Jetzt ist Ihr Bildschirm fertig. Der nächste Teil besteht darin, unsere Schlange auf dem Bildschirm zu zeichnen, was im folgenden Thema behandelt wird.

Erstelle die Schlange:

Um die Schlange zu erstellen, werde ich zunächst einige Farbvariablen initialisieren, um die Schlange, das Futter, den Bildschirm usw. einzufärben. Das in Pygame verwendete Farbschema ist RGB, also „Rot, Grün, Blau“. Wenn Sie alle diese auf 0 setzen, ist die Farbe schwarz und alle 255 sind weiß. Unsere Schlange wird also tatsächlich ein Rechteck sein. Um in Pygame Rechtecke zu zeichnen, können Sie eine Funktion namens verwendendraw.rect()Dies wird Ihnen helfen, das Rechteck mit der gewünschten Farbe und Größe zu zeichnen.

import pygamepygame.init()dis=pygame.display.set_mode((400,300))pygame.display.set_caption('Snake game by Edureka')blue=(0,0,255)red=(255,0,0)game_over=Falsewhile nicht game_over: für Ereignis in pygame.event.get(): if event.type==pygame.QUIT: game_over=True pygame.draw.rect(dis,blue,[200,150,10,10]) pygame.display.update ()pygame.quit()quit()

AUSGANG:

Schlangenspiel in Python | Snake-Game-Programm mit Pygame | Edureka (3)

Wie Sie sehen können, wird der Schlangenkopf als blaues Rechteck erstellt. Der nächste Schritt besteht darin, Ihre Schlange in Bewegung zu setzen.

Die Schlange bewegen:

Um die Schlange zu bewegen, müssen Sie die in der KEYDOWN-Klasse von Pygame vorhandenen Schlüsselereignisse verwenden. Die hier verwendeten Ereignisse sind K_UP, K_DOWN, K_LEFT und K_RIGHT, um die Schlange nach oben, unten, links und rechts zu bewegen. Außerdem wird der Anzeigebildschirm mithilfe von von der Standardeinstellung Schwarz auf Weiß geändertfüllen()Methode.

Ich habe neue Variablen erstelltx1_changeUndy1_changeum die Aktualisierungswerte der x- und y-Koordinaten zu halten.

import pygamepygame.init()white = (255, 255, 255)black = (0, 0, 0)red = (255, 0, 0)dis = pygame.display.set_mode((800, 600))pygame.display .set_caption('Snake Game by Edureka')game_over = Falsex1 = 300y1 = 300x1_change = 0 y1_change = 0clock = pygame.time.Clock()while not game_over: für Ereignis in pygame.event.get(): if event.type = = pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x1_change = -10 y1_change = 0 elif event.key == pygame.K_RIGHT: x1_change = 10 y1_change = 0 elif event.key == pygame.K_UP: y1_change = -10 x1_change = 0 elif event.key == pygame.K_DOWN: y1_change = 10 x1_change = 0 x1 += x1_change y1 += y1_change dis.fill(white) pygame. draw.rect(dis, black, [x1, y1, 10, 10]) pygame.display.update() clock.tick(30)pygame.quit()quit()

AUSGANG:

Schlangenspiel in Python | Snake-Game-Programm mit Pygame | Edureka (4)

Game Over, wenn Snake an die Grenzen stößt:

Wenn der Spieler in diesem Schlangenspiel die Grenzen des Bildschirms erreicht, verliert er. Um dies zu spezifizieren, habe ich eine „if“-Anweisung verwendet, die die Grenzen dafür definiert, dass die x- und y-Koordinaten der Schlange kleiner oder gleich denen des Bildschirms sein dürfen. Bitte beachten Sie hier auch, dass ich die Hardcodes entfernt und stattdessen Variablen verwendet habe, damit Sie später problemlos Änderungen am Spiel vornehmen können.

import pygameimport timepygame.init()white = (255, 255, 255)black = (0, 0, 0)red = (255, 0, 0)dis_width = 800dis_height = 600dis = pygame.display.set_mode((dis_width, dis_width ))pygame.display.set_caption('Snake Game by Edureka')game_over = Falsex1 = dis_width/2y1 = dis_height/2snake_block=10x1_change = 0y1_change = 0clock = pygame.time.Clock()snake_speed=30font_style = pygame.font.SysFont( Keine, 50)def message(msg,color): mesg = font_style.render(msg, True, color) dis.blit(mesg, [dis_width/2, dis_height/2])while not game_over: für Ereignis in pygame.event .get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x1_change = -snake_block y1_change = 0 elif event.key = = pygame.K_RIGHT: x1_change = Snake_block y1_change = 0 elif event.key == pygame.K_UP: y1_change = -snake_block x1_change = 0 elif event.key == pygame.K_DOWN: y1_change = Snake_block x1_change = 0 wenn x1 >= dis_width oder x1 < 0 oder y1 >= dis_height oder y1 < 0: game_over = True x1 += x1_change y1 += y1_change dis.fill(white) pygame.draw.rect(dis, black, [x1, y1, Snake_block, Snake_block]) pygame.display.update() clock.tick(snake_speed)message("Du hast verloren",rot)pygame.display.update()time.sleep(2)pygame.quit()quit()

AUSGANG:

Schlangenspiel in Python | Snake-Game-Programm mit Pygame | Edureka (5)Hinzufügen des Lebensmittels:

Hier werde ich etwas Futter für die Schlange hinzufügen und wenn die Schlange dieses Futter überquert, erhalte ich eine Nachricht mit der Aufschrift „Lecker!!“. Außerdem werde ich eine kleine Änderung vornehmen, indem ich die Option einbaue, das Spiel zu beenden oder erneut zu spielen, wenn der Spieler verliert.

import pygameimport timeimport randompygame.init()white = (255, 255, 255)black = (0, 0, 0)red = (255, 0, 0)blue = (0, 0, 255)dis_width = 800dis_height = 600dis = pygame.display.set_mode((dis_width, dis_height))pygame.display.set_caption('Snake Game by Edureka')clock = pygame.time.Clock()snake_block = 10snake_speed = 30font_style = pygame.font.SysFont(None, 30) def message(msg, color): mesg = font_style.render(msg, True, color) dis.blit(mesg, [dis_width/3, dis_height/3])def gameLoop(): # Erstellen einer Funktion game_over = False game_close = falsch / 10.0) * 10.0 while not game_over: while game_close == True: dis.fill(white) message("You Lost! Press Q-Quit or C-Play Again", red) pygame.display.update() für Ereignis in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_q: game_over = True game_close = False if event.key == pygame.K_c: gameLoop() für Ereignis in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x1_change = -snake_block y1_change = 0 elif-Ereignis .key == pygame.K_RIGHT: x1_change = Snake_block y1_change = 0 elif event.key == pygame.K_UP: y1_change = -snake_block x1_change = 0 elif event.key == pygame.K_DOWN: y1_change = Snake_block x1_change = 0 wenn x1 > = dis_width oder x1 < 0 oder y1 >= dis_height oder y1 < 0: game_close = True x1 += x1_change y1 += y1_change dis.fill(white) pygame.draw.rect(dis, blue, [foodx, foody, Snake_block, Snake_block]) pygame.draw.rect(dis, black, [x1, y1, Snake_block, Snake_block]) pygame.display.update() if x1 == foodx and y1 == foody: print("Yummy!!") Uhr .tick(snake_speed) pygame.quit() quit()gameLoop()

AUSGANG:

Schlangenspiel in Python | Snake-Game-Programm mit Pygame | Edureka (6)

Terminal:

Schlangenspiel in Python | Snake-Game-Programm mit Pygame | Edureka (7)Verlängerung der Schlange:

Der folgende Code vergrößert unseren Sake, wenn er das Essen isst. Wenn die Schlange außerdem mit ihrem eigenen Körper kollidiert, ist das Spiel beendet und Sie erhalten die Meldung „Sie haben verloren.“! Drücken Sie Q-Quit oder C-Play Again„. Die Länge der Schlange ist grundsätzlich in einer Liste enthalten und die Anfangsgröße, die im folgenden Code angegeben wird, ist ein Block.

import pygameimport timeimport randompygame.init()white = (255, 255, 255)gelb = (255, 255, 102)schwarz = (0, 0, 0)rot = (213, 50, 80)grün = (0, 255 , 0)blue = (50, 153, 213)dis_width = 600dis_height = 400dis = pygame.display.set_mode((dis_width, dis_height))pygame.display.set_caption('Snake Game by Edureka')clock = pygame.time.Clock ()snake_block = 10snake_speed = 15font_style = pygame.font.SysFont("bahnschrift", 25)score_font = pygame.font.SysFont("comicsansms", 35)def our_snake(snake_block, Snake_list): für x in Snake_list: pygame.draw .rect(dis, black, [x[0], x[1], Snake_block, Snake_block])def message(msg, color): mesg = font_style.render(msg, True, color) dis.blit(mesg, [ dis_width / 6, dis_height / 3])def gameLoop(): game_over = False game_close = False x1 = dis_width / 2 y1 = dis_height / 2 x1_change = 0 y1_change = 0 Snake_List = [] Length_of_snake = 1 foodx = Round(random.randrange (0, dis_width - Snake_block) / 10.0) * 10.0 foody = Round(random.randrange(0, dis_height - Snake_block) / 10.0) * 10.0 while not game_over: while game_close == True: dis.fill(blue) message(" Du hast verloren! Drücken Sie C-Play Again oder Q-Quit", rot) pygame.display.update() für Ereignis in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_q : game_over = True game_close = False if event.key == pygame.K_c: gameLoop() für Ereignis in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x1_change = -snake_block y1_change = 0 elif event.key == pygame.K_RIGHT: x1_change = Snake_block y1_change = 0 elif event.key == pygame.K_UP: y1_change = - Snake_block x1_change = 0 elif event.key == pygame.K_DOWN: y1_change = Snake_block x1_change = 0 wenn x1 >= dis_width oder x1 < 0 oder y1 >= dis_height oder y1 < 0: game_close = True x1 += x1_change y1 += y1_change dis.fill(blue) pygame.draw.rect(dis, green, [foodx, foody, Snake_block, Snake_block]) Snake_Head = [] Snake_Head.append(x1) Snake_Head.append(y1) Snake_List.append(Snake_Head) if len (snake_List) > Länge_der_Schlange: del Snake_List[0] für x in Snake_List[:-1]: if x == Snake_Head: game_close = True our_snake(snake_block, Snake_List) pygame.display.update() if x1 == foodx und y1 == foody: foodx = Round(random.randrange(0, dis_width - Snake_block) / 10.0) * 10.0 foody = Round(random.randrange(0, dis_height - Snake_block) / 10.0) * 10.0 Length_of_snake += 1 clock.tick( Snake_speed) pygame.quit() quit()gameLoop()

AUSGANG:

Schlangenspiel in Python | Snake-Game-Programm mit Pygame | Edureka (8)Anzeige der Partitur:

Zu guter Letzt müssen Sie den Punktestand des Spielers anzeigen. Dazu habe ich eine neue Funktion als „Your_score“ erstellt. Diese Funktion zeigt die um 1 subtrahierte Länge der Schlange an, da dies die Anfangsgröße der Schlange ist.

import pygameimport timeimport randompygame.init()white = (255, 255, 255)gelb = (255, 255, 102)schwarz = (0, 0, 0)rot = (213, 50, 80)grün = (0, 255 , 0)blue = (50, 153, 213)dis_width = 600dis_height = 400dis = pygame.display.set_mode((dis_width, dis_height))pygame.display.set_caption('Snake Game by Edureka')clock = pygame.time.Clock ()snake_block = 10snake_speed = 15font_style = pygame.font.SysFont("bahnschrift", 25)score_font = pygame.font.SysFont("comicsansms", 35)def Your_score(score): value = score_font.render("Your Score: " + str(score), True, yellow) dis.blit(value, [0, 0])def our_snake(snake_block, Snake_list): for x in Snake_list: pygame.draw.rect(dis, black, [x[0 ], x[1], Snake_block, Snake_block])def message(msg, color): mesg = font_style.render(msg, True, color) dis.blit(mesg, [dis_width / 6, dis_height / 3])def gameLoop (): game_over = False game_close = False x1 = dis_width / 2 y1 = dis_height / 2 x1_change = 0 y1_change = 0 Snake_List = [] Length_of_snake = 1 foodx = Round(random.randrange(0, dis_width - Snake_block) / 10.0) * 10.0 foody = Round(random.randrange(0, dis_height - Snake_block) / 10.0) * 10.0 while not game_over: while game_close == True: dis.fill(blue) message("Du hast verloren! Drücken Sie C-Play Again oder Q-Quit", rot) Your_score(Length_of_snake - 1) pygame.display.update() für Ereignis in pygame.event.get(): if event.type == pygame.KEYDOWN: if event. key == pygame.K_q: game_over = True game_close = False if event.key == pygame.K_c: gameLoop() für Ereignis in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x1_change = -snake_block y1_change = 0 elif event.key == pygame.K_RIGHT: x1_change = Snake_block y1_change = 0 elif event.key == pygame .K_UP: y1_change = -snake_block x1_change = 0 elif event.key == pygame.K_DOWN: y1_change = Snake_block x1_change = 0 wenn x1 >= dis_width oder x1 < 0 oder y1 >= dis_height oder y1 < 0: game_close = True x1 + = x1_change y1 += y1_change dis.fill(blue) pygame.draw.rect(dis, green, [foodx, foody, Snake_block, Snake_block]) Snake_Head = [] Snake_Head.append(x1) Snake_Head.append(y1) Snake_List. append(snake_Head) if len(snake_List) > Length_of_snake: del Snake_List[0] for x in Snake_List[:-1]: if x == Snake_Head: game_close = True our_snake(snake_block, Snake_List) Your_score(Length_of_snake - 1) pygame. display.update() if x1 == foodx and y1 == foody: foodx = Round(random.randrange(0, dis_width - Snake_block) / 10.0) * 10.0 foody = Round(random.randrange(0, dis_height - Snake_block) / 10.0) * 10.0 Length_of_snake += 1 clock.tick(snake_speed) pygame.quit() quit()gameLoop()

AUSGANG:

Schlangenspiel in Python | Snake-Game-Programm mit Pygame | Edureka (9)Damit sind wir am Ende dieses Artikels über Snake Game in Python angelangt. Ich hoffe, Sie verstehen alles, was Ihnen in diesem Artikel mitgeteilt wurde.Stellen Sie sicher, dass Sie so viel wie möglich üben und Ihre Erfahrungen rückgängig machen.

Haben Sie eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich dieses „Snake Game in Python“-Blogs und wir werden uns so schnell wie möglich bei Ihnen melden.

Um detaillierte Kenntnisse über alle Trendtechnologien und ihre verschiedenen Anwendungen zu erhalten, können Sie sich live anmeldenSchulung zur Python-Zertifizierungmit 24/7-Support und lebenslangem Zugriff.

Schlangenspiel in Python | Snake-Game-Programm mit Pygame | Edureka (2024)

References

Top Articles
Latest Posts
Article information

Author: Kerri Lueilwitz

Last Updated:

Views: 6250

Rating: 4.7 / 5 (47 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Kerri Lueilwitz

Birthday: 1992-10-31

Address: Suite 878 3699 Chantelle Roads, Colebury, NC 68599

Phone: +6111989609516

Job: Chief Farming Manager

Hobby: Mycology, Stone skipping, Dowsing, Whittling, Taxidermy, Sand art, Roller skating

Introduction: My name is Kerri Lueilwitz, I am a courageous, gentle, quaint, thankful, outstanding, brave, vast person who loves writing and wants to share my knowledge and understanding with you.