Snake¶
Snake, jogo clássico de arcade.
"""Snake, classic arcade game.
Exercises
1. How do you make the snake faster or slower?
2. How can you make the snake go around the edges?
3. How would you move the food?
4. Change the snake to respond to mouse clicks.
1. Como você deixa a cobra mais rápida ou mais lenta? FEITO
2. Como você pode fazer a cobra contornar as bordas?
3. Como você moveria a comida?
4. Mude a cobra para responder às teclas de seta FEITO
"""
from random import randrange
from turtle import *
from freegames import square, vector
food = vector(0, 0) #posição inicial da comida
snake = [vector(10, 0)]#posição inicial da cobra
aim = vector(0,-10) # velocidade/direção da cobra
def change(x, y):
"Change snake direction."#"Mudar a direção da cobra."
aim.x = x
aim.y = y
def inside(head):
"Return True if head inside boundaries."#"Retorne True se a cabeça estiver dentro dos limites."
return -200 < head.x < 190 and -200 < head.y < 190
def move():
"Move snake forward one segment." #Mova a cobra um segmento para frente
head = snake[-1].copy()
head.move(aim)
if not inside(head) or head in snake: # caso a cobra encoste nas bordas
square(head.x, head.y, 9, 'red')# desenha um dradrado vermelho
update()
return
snake.append(head) #adiciona um quadrado na direção aim no vetor snake
if head == food:
print('Snake:', len(snake))
food.x = randrange(-15, 15) * 10 #novo X da comida no intervalo determinado
food.y = randrange(-15, 15) * 10 #novo Y da comida no intervalo determinado
else:
snake.pop(0) # remove o quadrado da posição anterior do vetor snake
clear()
#tamanho do corpo da cobra em relação ao vetor snake
for body in snake:
square(body.x, body.y, 9, 'black')
#tamanho da comida
square(food.x, food.y, 9, 'green')
update()
ontimer(move, 100)
setup(420, 420, 370, 0)
hideturtle()
tracer(False)
listen()
onkey(lambda: change(10, 0), 'Right')
onkey(lambda: change(-10, 0), 'Left')
onkey(lambda: change(0, 10), 'Up')
onkey(lambda: change(0, -10), 'Down')
move()
done()