-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsnake.py
More file actions
173 lines (123 loc) · 3.37 KB
/
snake.py
File metadata and controls
173 lines (123 loc) · 3.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# ...
import time
import turtle
import random
Posponer = 0.12
#Variables Marcador
Score = 0
High_Score = 0
#Funcion Para resetear Marcador
def resetear_marcador():
Marcador.clear()
Marcador.write("Score: {} High Score: {}".format(Score, High_Score), align="center", font=("Courier", 12))
#Funcion de Morir
def morir():
global Score
Score = 0
Cabeza.goto(0,0)
Cabeza.direction = "stop"
time.sleep(Posponer)
for segment in Cuerpo:
segment.goto(1000, 1000)
Cuerpo.clear()
#Ventana
window = turtle.Screen()
window.title("Snake Game")
window.bgcolor("black")
window.setup(width=600, height=600)
window.tracer(0)
#Cabeza de la serpiente
Cabeza = turtle.Turtle()
Cabeza.speed(0)
Cabeza.shape("square")
Cabeza.penup()
Cabeza.goto(0,0)
Cabeza.direction = "stop"
Cabeza.color("white")
#Comida
Comida = turtle.Turtle()
Comida.speed(0)
Comida.shape("circle")
Comida.penup()
Comida.goto(0,100)
Comida.color("red")
#Cuerpo de la serpiente
Cuerpo = []
#Marcador
Marcador = turtle.Turtle()
Marcador.speed(0)
Marcador.shape("square")
Marcador.penup()
Marcador.goto(0,260)
Marcador.color("white")
Marcador.hideturtle()
Marcador.write("Score: 0 High Score: 0", align="center", font=("Courier", 12))
# Funciones para mover la cabeza del snake
def arriba():
Cabeza.direction = "up"
def abajo():
Cabeza.direction = "down"
def izquierda():
Cabeza.direction = "left"
def derecha():
Cabeza.direction = "right"
def move():
if Cabeza.direction == "up":
y = Cabeza.ycor()
Cabeza.sety(y + 20)
if Cabeza.direction == "down":
y = Cabeza.ycor()
Cabeza.sety(y - 20)
if Cabeza.direction == "left":
x = Cabeza.xcor()
Cabeza.setx(x - 20)
if Cabeza.direction == "right":
x = Cabeza.xcor()
Cabeza.setx(x + 20)
# Teclado
window.listen()
window.onkeypress(arriba, "Up")
window.onkeypress(abajo, "Down")
window.onkeypress(izquierda, "Left")
window.onkeypress(derecha, "Right")
# Bucle principal del juego
while True:
window.update()
#Colisiones bordes
if Cabeza.xcor() > 280 or Cabeza.xcor() < -280 or Cabeza.ycor() > 280 or Cabeza.ycor() < -280:
morir()
resetear_marcador()
#Colisiones Comida
if Cabeza.distance(Comida) < 25:
x = random.randint(-280, 280)
y = random.randint(-280, 280)
Comida.goto(x,y)
ParteNueva = turtle.Turtle()
ParteNueva.speed(0)
ParteNueva.shape("square")
ParteNueva.penup()
ParteNueva.color("grey")
Cuerpo.append(ParteNueva)
#Aumentar marcador
Score += 10
if Score > High_Score:
High_Score = Score
Marcador.clear()
Marcador.write("Score: {} High Score: {}".format(Score, High_Score), align="center", font=("Courier", 12))
#Mover el cuerpo de la serpiente
PartesTotales = len(Cuerpo)
for index in range(PartesTotales -1, 0, -1):
x = Cuerpo[index - 1].xcor()
y = Cuerpo[index - 1].ycor()
Cuerpo[index].goto(x,y)
if PartesTotales > 0:
x = Cabeza.xcor()
y = Cabeza.ycor()
Cuerpo[0].goto(x,y)
move()
#Colisiones con el cuerpo
for segment in Cuerpo:
if segment.distance(Cabeza) < 20:
morir()
resetear_marcador()
time.sleep(Posponer)