Maison  >  Article  >  développement back-end  >  Comment écrire un jeu Snake en Python ?

Comment écrire un jeu Snake en Python ?

王林
王林avant
2023-05-09 20:55:063347parcourir

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()
Définissez ensuite la taille de la toile

from turtle import *
from gamebase import square
from random import randrange

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()
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()
# 🎜🎜#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()
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)
# 🎜🎜#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函数
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()

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
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

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
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()

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer