Comment écrire un jeu Snake en Python ?

王林
Libérer: 2023-05-09 20:55:06
avant
3349 Les gens l'ont consulté

Jeu Snake Python (code source + commentaires + coller et utiliser) Ce jeu de serpent est très simple et évite d'utiliser pygame qui est difficile à charger. Voici le schéma de fonctionnement :

# 🎜🎜. #Comment écrire un jeu Snake en Python ?

Comment écrire un jeu Snake en Python ?

Implémentation du code du jeu

1. Dessiner des images

Dessiner des images de jeu Pour imiter le blé , nous utilisons Turtle Graphics dans la base de données, qui est plus léger que pygame. Faites une rotation de 90 degrés après l'unité de distance, puis faites une nouvelle rotation de 90 degrés jusqu'à ce qu'un petit carré soit dessiné

Draw Apple (snake.py)#. 🎜🎜#
Citation de la base de données que nous venons de dessiner#🎜🎜 #
from turtle import * # "*"是引用所有函数

def square(x, y, size, color_name):
    up()
    goto(x, y)
    down()
    color(color_name)
    begin_fill()

    forward(size)
    left(90)
    forward(size)
    left(90)
    forward(size)
    left(90)
    forward(size)
    left(90)

    end_fill()
Copier après la connexion
Définissez ensuite la taille de la toile

from turtle import *
from gamebase import square
from random import randrange
Copier après la connexion

Définissez la boucle du programme de jeu (équivalent au fil de boucle en Java)
setup(420,420,0,0)
//隐藏乌龟头 emoj.emoj.
hideturtle
//隐藏轨迹
tracer(False)

//绘制
done()
Copier après la connexion
Dessinez le serpent (snake.py )

Notez que nous pouvons considérer Snake comme une file d'attente, et chaque élément de cette file d'attente contient deux variables (la coordonnées horizontales et verticales de l'élément)

def gameLoop():
	//随机生成苹果
	apple_x = randrange(-200, 200)
	apple_y = randrange(-200, 200)
	//绘制苹果
	square(apple_x, apple_y, 10, "red")
	//刷新画布
	update()
Copier après la connexion
# 🎜🎜#dessiner le mouvement d'un serpent gourmand

Principe du mouvement du serpent : Afin de faciliter le mouvement du serpent, il faut inversez le serpent dans la file d'attente, et quand il bouge, nous jetterons le serpent dehors Le premier élément de la file d'attente (pop()), puis ajouterons un nouvel élément à la fin du serpent (append())#🎜🎜 #
def gameLoop():
	//随机生成苹果
	apple_x = randrange(-200, 200)
	apple_y = randrange(-200, 200)
	//绘制蛇
	for n in range(len(sanke)):
		square(snake[n][0],snake[n][1[],10,"black)
	//绘制苹果
	square(apple_x, apple_y, 10, "red")
	//刷新画布
	update()
Copier après la connexion
Ensuite, nous devons ajouter une boucle pour actualiser le temps d'exécution,
global apple_x, apple_y, snake, aim_x, aim_y #全局变量申请snake.append([ snake[-1][0] + aim_x, snake[-1][1] + aim_y ])snake.pop(0)global apple_x, apple_y, snake, aim_x, aim_y 
#全局变量申请
snake.append([ snake[-1][0] + aim_x, snake[-1][1] + aim_y ])
snake.pop(0)
Copier après la connexion
# 🎜🎜#Faire une réponse d'opération de serpent gourmand

Nous devons établir une surveillance du clavier, qui est très simple pour python

ontimer(gameLoop, 100)
 # 每100毫秒运行一下gameLoop函数
Copier après la connexion
Déterminer si le serpent a mangé la pomme#🎜🎜 #
C'est également très simple Il suffit de comparer si les coordonnées horizontales et verticales du serpent. la tête sont égales aux coordonnées horizontales et verticales de la pomme (la tête du serpent coïncide avec la pomme)

listen() #监听
onkey(lambda: change(0, 10), "w")
onkey(lambda: change(0, -10), "s")
onkey(lambda: change(-10, 0), "a")
onkey(lambda: change(10, 0), "d")
gameLoop()
Copier après la connexion

Déterminez si le serpent vous a mordu#🎜 🎜#

Ce principe est similaire à le principe ci-dessus de savoir si le serpent mange la pomme

 if snake[-1][0] != apple_x or snake[-1][1] != apple_y:
        snake.pop(0)
    else:
        apple_x = randrange(-20, 18) * 10
        apple_y = randrange(-19, 19) * 10
Copier après la connexion
Déterminer si le serpent est dans la limite
def bite():
    for n in range(len(snake)-1):
        if snake[-1][0] == snake[n][0] and snake[-1][1] == snake[n][1]:
            return True
    return False
Copier après la connexion

Code source du jeu

#🎜🎜 #gamebase.py
def inside():
    if -200 <= snake[-1][0] <= 180 and -190 <= snake[-1][1]<=190:
        return True
    else :
        return False
Copier après la connexion
snake.py

from turtle import * # "*"是引用所有函数

def square(x, y, size, color_name):
   up()
   goto(x, y)
   down()
   color(color_name)
   begin_fill()

   forward(size)
   left(90)
   forward(size)
   left(90)
   forward(size)
   left(90)
   forward(size)
   left(90)

   end_fill()
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal