Snake Python 게임(소스 코드 + 주석 + 붙여넣기 및 사용) 이 Snake 게임은 매우 간단하며 로드하기 어려운 pygame을 사용하지 않습니다. 다음은 실행 다이어그램입니다.
게임 이미지를 그릴 때는 pygame보다 가벼운 Turtle Graphics를 데이터베이스에 사용합니다
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()
위는 거북이를 통해 그리는 것입니다. 거리를 둔 후 회전합니다. 90도 회전한 다음 작은 정사각형이 그려질 때까지 다시 90도 회전
방금 그린 데이터베이스를 참조하세요
from turtle import * from gamebase import square from random import randrange
그런 다음 캔버스 크기를 정의합니다
setup(420,420,0,0) //隐藏乌龟头 emoj.emoj. hideturtle //隐藏轨迹 tracer(False) //绘制 done()
def gameLoop(): //随机生成苹果 apple_x = randrange(-200, 200) apple_y = randrange(-200, 200) //绘制苹果 square(apple_x, apple_y, 10, "red") //刷新画布 update()
Snake를 대기열로 생각할 수 있으며 이 대기열의 각 요소에는 두 개의 변수(수평 및 수직 좌표)가 포함되어 있습니다. 요소)
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()
뱀 움직임의 원리: 뱀의 움직임을 원활하게 하기 위해서는 뱀이 움직일 때 대기열에 있는 첫 번째 요소를 던져야 합니다. 스네이크 큐(pop()), 스네이크 끝에 요소 추가(append())
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)
그런 다음 실행 시간을 새로 고치는 루프를 추가해야 합니다.
ontimer(gameLoop, 100) # 每100毫秒运行一下gameLoop函数
Python에서는 매우 간단한 키보드 모니터링 설정이 필요합니다
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()
이것도 매우 쉽습니다. 뱀의 가로 및 세로 좌표만 비교하면 됩니다. 머리는 사과의 가로, 세로 좌표와 같습니다 (뱀 머리가 사과와 일치)
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
이 원리는 위의 뱀이 사과를 먹는지 여부의 원리와 유사합니다
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
def inside(): if -200 <= snake[-1][0] <= 180 and -190 <= snake[-1][1]<=190: return True else : return False
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()
from time import sleep apple_x = randrange(-20, 18) * 10 apple_y = randrange(-19, 19) * 10 snake = [[0, 0], [10, 0], [20, 0], [30, 0], [40, 0], [50, 0]] aim_x = 10 aim_y = 0 def inside(): if -200 <= snake[-1][0] <= 180 and -190 <= snake[-1][1]<=190: return True else : return False def change(x, y): global aim_x, aim_y aim_x = x aim_y = y 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 def gameLoop(): global apple_x, apple_y, snake, aim_x, aim_y #全局变量申请 snake.append([ snake[-1][0] + aim_x, snake[-1][1] + aim_y ]) 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 if(not inside()) or bite(): square(snake[-1][0], snake[-1][1], 10,"hotpink") update() sleep(2)# 暂停2秒 apple_x = randrange(-20, 18) * 10 apple_y = randrange(-19, 19) * 10 snake = [[0, 0], [10, 0], [20, 0], [30, 0], [40, 0], [50, 0]] aim_x = 10 aim_y = 0 n = 0 clear() square(-210,-200,410,"black") square(-200,-190,390,"white") square(apple_x, apple_y, 10, "red") for n in range(len(snake)): square(snake[n][0], snake[n][1], 10, 'black') ontimer(gameLoop, 100) # 每300毫秒运行一下gameLoop函数 update() #注意:代码的前后顺序会给游戏带来不同的体感 setup(420, 420, 0, 0) hideturtle() tracer(False) 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() done()
위 내용은 Python으로 스네이크 게임을 작성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!