Comment créer un jeu de serpent en Python à l'aide de Turtle - Python Guides (2024)

Dans ceTutoriel Python, nous apprendrons àcréer un jeu de serpent en python en utilisant la tortue. Il est facile de créer un jeu Snake en Python.

Table des matières

À propos du jeu de serpent

  • Le concept de jeu de serpent est né en 1976, développé par une société britannique appelée Gremlin Interactive.
  • Le jeu du serpent est considéré comme un jeu intéressant et habile. Il est popularisé parmi les gens depuis des générations.
  • Le serpent dans le jeu du serpent est contrôlé dans quatre directions, et si la tête de serpent frappe le mur ou se frappe, alors le serpent meurt et le jeu se terminera avec le score.
  • L'objectif principal du joueur dans le jeu est d'obtenir le maximum de points possible en collectant la nourriture.
  • Donc, si vous êtes débutant et que vous avez découvert la tortue, vous pouvez utiliser ce module pour créer un jeu de serpent.

Si vous êtes nouveau sur la tortue Python, consultezProgrammation de tortue PythonetDessinez des formes colorées remplies à l'aide de Python Turtle.

Présentation du jeu Snake dans la tortue Python

En cela, nous allons créer unJeu de serpent en pythonen utilisant ce qui suit :

  • Tortue- Il s'agit d'une bibliothèque préinstallée en python qui est utilisée pour créer des formes, des images et des jeux.
  • Temps– Il est utilisé pour compter le nombre de secondes écoulées depuis l'époque.
  • aléatoire– Ce module est utilisé pour générer des nombres aléatoires en python à l'aide du module random.
  • fermeture()– Il arrête le dessin du stylo tortue.
  • vitesse()– Il s'agit d'une valeur entière comprise entre 0 et 10. Ainsi, 0 est le plus rapide, 10 est rapide, 6 est normal, 3 est lent et 1 est le plus lent. Si aucun argument n'est donné, renvoie la vitesse actuelle.
  • couleur()- Il renvoie ou définit la couleur du stylo et la couleur de remplissage.
  • forme()- Il a défini la forme de la tortue sur la forme d'un nom donné.
  • cachertortue()– Il rend la tortue invisible.
  • xcor()– Renvoie la coordonnée x de la tortue.
  • ycor()– Renvoie la coordonnée y de la tortue.

LireFonction d'écriture de la tortue Python

Créer un jeu de serpent en utilisant la tortue Python (étape par étape)

Ici, nous expliquerons la manière simple de coder lejeu de serpenten Python. Il est recommandé d'aller lancer l'étape ci-dessous.

Étape 1:

Premièrement, nous importerons tous les modules dans le programme, et nous donnerons la valeur par défaut pour le jeu.

import turtleimport timeimport randomdelay = 0.1score = 0high_score = 0

Étape 2:

  • Maintenant, nous allons créer l'écran de la fenêtre pour le jeu, et nous allons également créer la tête du serpent et de la nourriture pour le serpent. Le score sera affiché dans l'en-tête du jeu.
  • La fonction turtle.Screen() permet de créer une fenêtre. Dans ce code, notre fenêtre est« wn »pour le jeu.
  • Il faut donner un nom à la fenêtre avec la fonction"wn.title ("Jeu de serpent")".
  • Pour définir la couleur de fond de la fenêtre que nous avons utilisée"wn.bgcolor('noir')". Réglez la hauteur et la largeur de la fenêtre avec la fonction"wn.setup(largeur=X, hauteur=Y)". Ici, largeur=600 et hauteur=600.
  • La fonctionfenêtre.tracer(0)désactive les mises à jour de l'écran. Comme nous n'avons besoin d'aucune mise à jour d'écran autre que le tableau de bord, il est donc défini sur 0.
  • Maintenant, nous allons créer une tête de serpent, c'est essentiellement une tortue qui sera un serpent et qui se déplacera.
  • Pour créer une tortue, nous utiliserons"tortue.Tortue()"et attribuez le nom head. La vitesse de la tête est réglée sur 0 car nous venons juste d'initialiser et la tête n'a pas besoin de bouger.
  • Initialisons la forme et la couleur de la tête en utilisant"tête.forme ("cercle")"et"tête.couleur("vert")".
  • La fonction"head.penup()"s'assure que le chemin emprunté par le serpent n'est pas dessiné.
  • Le"tête.goto (0,0)"est utilisé pour que la position du serpent soit le centre de la fenêtre et la direction d'arrêt que nous utiliseronshead.direction = "stop".
  • Et"stylo.write()"La fonction est utilisée pour écrire le texte à la position actuelle de la tortue.
  • Nous avons besoin de la fonctionnalité qui augmente le corps du serpent chaque fois qu'il touche de la nourriture. Nous avons donc utilisé des tableaux pour cela. Nous créons un tableau appelé segments, qui est initialisé vide.
wn = turtle.Screen()wn.title("Snake Game")wn.bgcolor('black')wn.setup(width=600, height=600)wn.tracer(0)head = turtle.Turtle()head .speed(0)head.shape("circle")head.color("green")head.penup()head.goto(0,0)head.direction = "stop"food = turtle.Turtle()food. speed(0)food.shape("square")food.color("red")food.penup()food.goto(0,100)segments = []pen = turtle.Turtle()pen.speed(0)pen. shape("square")pen.color("green")pen.penup()pen.hideturtle()pen.goto(0,260)pen.write("Score : 0 High score : 0", align = "center", font=("Courrier", 24, "normal"))

Étape 3:

  • Maintenant, nous devons définir une fonction pour chacune de ces directions et définir letête.directionvers le haut, le bas, la gauche et la droite.
  • Après cela, nous continuerons et ferons bouger le serpent. Nous allons donc définir une fonction appeléedéplacer().
  • Si la tête monte, la coordonnée "y" est augmentée, si la tête descend, la coordonnée "y" diminue.
  • Si la tête se déplace vers la droite, la coordonnée "x" augmente et si la tête se déplace vers la gauche, la coordonnée "x" diminue.
def go_up(): if head.direction != "down": head.direction = "up"def go_down(): if head.direction != "up": head.direction = "down"def go_left(): if head.direction != "right": head.direction = "left"def go_right(): if head.direction != "left": head.direction = "right"def move(): if head.direction == " up": y = head.ycor() head.sety(y+20) if head.direction == "down": y = head.ycor() head.sety(y-20) if head.direction == " left": x = head.xcor() head.setx(x-20) if head.direction == "right": x = head.xcor() head.setx(x+20)

Étape 4:

  • Nous attribuerons une clé aux mouvements du serpent. En cliquant sur les mots-clés, nous pouvons déplacer le serpent vers le haut, le bas, la gauche et la droite.
  • Nous avons besoin que le système écoute nos touches de contrôle, nous allons donc ajouter une fonction appeléewn.listen()qui écoute la touche enfoncée.
  • Chaque pression de touche doit être liée à une fonction qui exécute une action. Nous utiliserons la fonction" wn.onkeypress(fonction, "touche") "pour les quatre. Ici, j'ai utilisé "y" pour haut, "h" pour bas, "g" pour gauche et "j" pour droite.
  • Maintenant, nous pouvons opérer le mouvement d'un serpent sur l'écran.
wn.listen()wn.onkeypress(go_up, "y")wn.onkeypress(go_down, "h")wn.onkeypress(go_left, "g")wn.onkeypress(go_right, "j")

Étape 5 :

  • Donc, maintenant la fonction ne fait rien jusqu'à ce qu'elle soit appelée. Nous devons appeler la fonction chaque fois que nous mettons à jour l'écran ou la fenêtre.
  • Nous devons être sûrs que les serpents meurent lorsqu'ils entrent en collision avec la frontière. Nous avons déjà les coordonnées de la frontière. Donc, nous avons juste besoin de réinitialiser la position de la tête de serpent lorsqu'elle touche les coordonnées.
  • De plus, le serpent doit arrêter de bouger et donc changer de direction pour s'arrêter.
  • Pour ralentir le mouvement du serpent, nous devons utiliser le module de temps, sinon le comportement par défaut de la fonction de déplacement est très rapide.
  • Nous utiliserons donc la fonctionle sommeil de temps()pour réduire la vitesse de la tortue.
  • Le segment doit disparaître lorsque le serpent meurt.
  • Nous devons donc maintenant définir la position des segments en dehors des coordonnées de la fenêtre. Le jeu redémarre et efface donc la liste des segments.
  • Nous devons ajouter un segment au corps du serpent chaque fois qu'il touche la nourriture. Nous avons donc la condition qui vérifie la collision de la tête avec la nourriture.
  • Créez un new_segment, définissez sa vitesse, sa forme et sa couleur et ajoutez-le au tableau de segments.
  • Maintenant, ajouter le segment à la tête de serpent ne suffit pas. Ces segments doivent se déplacer lorsque la tête de serpent se déplace.
  • Pour déplacer le dernier segment qui est en position x vers x-1 et x-1 vers x-2 et ainsi de suite.
  • Le serpent doit mourir s'il se touche. Nous allons donc vérifier si la distance entre le segment et la tête est inférieure à 20. Si c'est le cas, réinitialisez la position et la direction de la tête.
  • Enfin, nous devons voir la situation lorsque le score augmente. Le premier est lorsque la tête entre en collision avec la nourriture. Augmenter lescoreet mettre à jour lescore élevé.
  • Nous avons utiliséstylo.écrire()fonction pour écrire la partition sur l'écran.
  • Nous devons réinitialiser le score lorsque la tête de serpent entre en collision avec la bordure et avec sa propre queue
  • Et ensuite appeler la fonctiontime.sleep (délai)pour réduire la vitesse de la tortue.
while True : wn.update() si head.xcor()>290 ou head.xcor()<-290 ou head.ycor()>290 ou head.ycor()<-290 : time.sleep(1) head .goto(0,0) head.direction = "stop" for segment in segments: segment.goto(1000,1000) segments.clear() score = 0 delay = 0.1 pen.clear() pen.write("Score : {} Meilleur score : {}".format(score, high_score),align="center", font=("Courier", 24, "normal")) si head.distance(nourriture) <20 : x = aléatoire. randint(-290,290) y = random.randint(-290,290) food.goto(x,y) new_segment = turtle.Turtle() new_segment.speed(0) new_segment.shape("square") new_segment.color("white" ) new_segment.penup() segments.append(new_segment) delay -= 0.001 score += 10 if score > high_score : high_score = score pen.clear() pen.write("Score : {} High score : {}".format (score, high_score), align="center", font=("Courier", 24, "normal")) for index in range(len(segments)-1,0,-1): x = segments[index- 1].xcor() y = segments[index-1].ycor() segments[index].goto(x,y) si len(segments)>0 : x = head.xcor() y = head.ycor( ) segments[0].goto(x,y) move() pour le segment dans les segments : si segment.distance(head)<20 : time.sleep(1) head.goto(0,0) head.direction = "stop " pour le segment dans les segments : segment.goto(1000,1000) segments.clear() score = 0 délai = 0,1 pen.clear() pen.write("Score : {} Meilleur score : {}".format(score, high_score), align="center", font=("Courier", 24, "normal")) time.sleep(delay)wn.mainloop()

Code complet pour Snake Game en python utilisant turtle :

import turtleimport timeimport randomdelay = 0.1score = 0high_score = 0wn = turtle.Screen()wn.title("Snake Game")wn.bgcolor('black')wn.setup(width=600, height=600)wn.tracer( 0)head = tortue.Tortue()head.speed(0)head.shape("circle")head.color("green")head.penup()head.goto(0,0)head.direction = "stop "nourriture = tortue.Tortue()nourriture.vitesse(0)nourriture.forme("carré")nourriture.color("rouge")nourriture.penup()nourriture.goto(0,100)segments = []stylo = tortue.Tortue ()pen.speed(0)pen.shape("square")pen.color("green")pen.penup()pen.hideturtle()pen.goto(0,260)pen.write("Score : 0 Meilleur score :0", align = "center", font=("Courier", 24, "normal"))def go_up() : si head.direction != "down": head.direction = "up"def go_down() : if head.direction != "up": head.direction = "down"def go_left(): if head.direction != "right": head.direction = "left"def go_right(): if head.direction ! = "left": head.direction = "right"def move(): if head.direction == "up": y = head.ycor() head.sety(y+20) if head.direction == "down ": y = head.ycor() head.sety(y-20) if head.direction == "left": x = head.xcor() head.setx(x-20) if head.direction == "right ": x = head.xcor() head.setx(x+20)wn.listen()wn.onkeypress(go_up, "y")wn.onkeypress(go_down, "h")wn.onkeypress(go_left, "g ")wn.onkeypress(go_right, "j")tandis que True : wn.update() si head.xcor()>290 ou head.xcor()<-290 ou head.ycor()>290 ou head.ycor( )<-290 : time.sleep(1) head.goto(0,0) head.direction = "stop" pour le segment dans les segments : segment.goto(1000,1000) segments.clear() score = 0 délai = 0,1 pen.clear() pen.write("Score : {} Meilleur score : {}".format(score, high_score),align="center", font=("Courier", 24, "normal")) if head .distance(nourriture) <20 : x = random.randint(-290,290) y = random.randint(-290,290) food.goto(x,y) new_segment = turtle.Turtle() new_segment.speed(0) new_segment.shape ("carré") new_segment.color("white") new_segment.penup() segments.append(new_segment) delay -= 0.001 score += 10 if score > high_score : high_score = score pen.clear() pen.write(" Score : {} Meilleur score : {}".format(score,high_score), align="center", font=("Courier", 24, "normal")) pour l'index dans la plage (len(segments)-1, 0,-1): x = segments[index-1].xcor() y = segments[index-1].ycor() segments[index].goto(x,y) si len(segments)>0 : x = head.xcor() y = head.ycor() segments[0].goto(x,y) move() pour le segment dans les segments : si segment.distance(head)<20 : time.sleep(1) head. goto(0,0) head.direction = "stop" pour le segment dans les segments : segment.goto(1000,1000) segments.clear() score = 0 délai = 0,1 pen.clear() pen.write("Score : { } Meilleur score : {}".format(score,high_score), align="center", font=("Courier", 24, "normal")) time.sleep(delay)wn.mainloop()

Sortie 1 :

Comment créer un jeu de serpent en Python à l'aide de Turtle - Python Guides (1)

Sortie 2 :

Comment créer un jeu de serpent en Python à l'aide de Turtle - Python Guides (2)

Sortie 3 :

Comment créer un jeu de serpent en Python à l'aide de Turtle - Python Guides (3)

Vous aimerez peut-être les tutoriels Python suivants :

  • Barre de progression Python Tkinter
  • Python lit un fichier binaire
  • Couleurs de la tortue Python
  • Chronomètre Python Tkinter
  • Comment faire un visage souriant en tortue python
  • Comment convertir une chaîne Python en tableau d'octets
  • Python passe par référence ou valeur
  • Python sélectionner dans une liste
  • Boîte de liste Python Tkinter
  • Fichier de copie Python
  • Méthodes de fichier Python

J'espère que maintenant vous pouvez créer unJeu de serpent en python utilisant la tortueet apprenez à utiliser le module tortue et le module temps. Ici, nous avons découvert le jeu du serpent en python en utilisant la tortue et nous avons le code source complet avec une explication.

Comment créer un jeu de serpent en Python à l'aide de Turtle - Python Guides (4)

Bijay Kumar

Je suis Bijay Kumar, unMVP de Microsoftdans SharePoint. En dehors de SharePoint, j'ai commencé à travailler sur Python, l'apprentissage automatique et l'intelligence artificielle au cours des 5 dernières années. Pendant ce temps, j'ai acquis une expertise dans diverses bibliothèques Python également comme Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… pour divers clients aux États-Unis, Canada, Royaume-Uni, Australie, Nouvelle-Zélande, etc...Consultez mon profil.

Comment créer un jeu de serpent en Python à l'aide de Turtle - Python Guides (2024)

FAQs

What does the turtle represent in Python turtle? ›

turtle is a pre-installed Python library that enables users to create pictures and shapes by providing them with a virtual canvas. The onscreen pen that you use for drawing is called the turtle and this is what gives the library its name.

What is the objective of the snake game in Python? ›

Snake game is one of the most popular arcade games of all time. In this game, the main objective of the player is to catch the maximum number of fruits without hitting the wall or itself. Creating a snake game can be taken as a challenge while learning Python or Pygame.

How do you write a message in Python turtle? ›

You can use a turtle to write text. turtle. write('Hello! ')

Top Articles
Latest Posts
Article information

Author: Greg Kuvalis

Last Updated:

Views: 6332

Rating: 4.4 / 5 (55 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Greg Kuvalis

Birthday: 1996-12-20

Address: 53157 Trantow Inlet, Townemouth, FL 92564-0267

Phone: +68218650356656

Job: IT Representative

Hobby: Knitting, Amateur radio, Skiing, Running, Mountain biking, Slacklining, Electronics

Introduction: My name is Greg Kuvalis, I am a witty, spotless, beautiful, charming, delightful, thankful, beautiful person who loves writing and wants to share my knowledge and understanding with you.