跟着B站up主做的,权当是仓库记录一下,效果直接粘贴跑下就好了
import turtle
from random import randrange
snake = [[0,0],[0,10],[0,20]]
aim = [0,10]
food = [-10,0]
def change_direction(x,y):
aim[0] = x
aim[1] = y
def square(x,y,size,color):
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
turtle.color(color)
turtle.begin_fill()
for i in range(4):
turtle.forward(size)
turtle.left(90)
turtle.end_fill()
def inside(head):
return -250<head[0]<250 and -250<head[1]<250
import copy
def snake_move():
head = copy.deepcopy(snake[-1])
head = [head[0]+aim[0],head[1]+aim[1]]
print("snake的长度", len(snake))
if head in snake or not inside(head):
print("game over")
square(head[0],head[1],10,"red")
return
if head == food:
food[0] = randrange(-15,15)*10
food[1] = randrange(-15,15)*10
else:
snake.pop(0)
snake.append(head)
turtle.clear()
square(food[0],food[1],10,"green")
for body in snake:
square(body[0],body[1],10,"black")
turtle.update()
turtle.ontimer(snake_move,200)
turtle.setup(500,500)
turtle.tracer(False)
turtle.hideturtle()
turtle.listen()
turtle.onkey(lambda :change_direction(0,10),"Up")
turtle.onkey(lambda :change_direction(0,-10),"Down")
turtle.onkey(lambda :change_direction(10,0),"Right")
turtle.onkey(lambda :change_direction(-10,0),"Left")
snake_move()
turtle.done()
|