-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjuego.py
More file actions
83 lines (67 loc) · 2.41 KB
/
juego.py
File metadata and controls
83 lines (67 loc) · 2.41 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
import random
import msvcrt
from serpiente import Serpiente
from vector2D import Vector2D
class Juego:
def __init__(self, size_x=10, size_y=10):
self.jugar = True;
self.puntos = 0;
self.size_x = size_x;
self.size_y = size_y;
self.mapa = self.generar_mapa_vacio();
self.serpiente = Serpiente(5, 5);
self.frutas = [];
self.generar_frutas(15);
def generar_mapa_vacio(self):
mapa = []
for _ in range(self.size_x):
fila = [];
for _ in range(self.size_y):
fila.append(" ");
mapa.append(fila);
return mapa
def rellenar_mapa(self):
for bola in self.serpiente.bolas:
self.mapa[bola.y][bola.x] = "O";
for fruta in self.frutas:
self.mapa[fruta.y][fruta.x] = "*";
def generar_frutas(self, cantidad):
if len(self.frutas) < cantidad:
for _ in range(cantidad - len(self.frutas)):
self.frutas.append(Vector2D(random.randrange(0, self.size_x), random.randrange(0, self.size_y)));
def comprobar_colision(self):
if self.serpiente.bolas[0] in self.serpiente.bolas[1:]:
self.jugar = False;
for fruta in self.frutas:
if fruta == self.serpiente.bolas[0]:
self.frutas.remove(fruta);
self.puntos += 12;
self.serpiente.bolas.append(Vector2D(fruta.x, fruta.y));
def input(self):
if msvcrt.kbhit():
tecla = ord(msvcrt.getch());
if tecla == 72: #Arriba
self.serpiente.mover(0);
elif tecla == 80: #Abajo
self.serpiente.mover(1);
elif tecla == 75: #Izquierda
self.serpiente.mover(2);
elif tecla == 77: #Derecha
self.serpiente.mover(3);
def update(self):
self.mapa = self.generar_mapa_vacio();
self.generar_frutas(15);
self.rellenar_mapa();
self.serpiente.actualizar(self.size_x, self.size_y);
self.comprobar_colision();
def draw(self):
texto = f"""SNAKE 1.0
Puntos: {self.puntos}\n\n""";
texto += "#" * (self.size_x * 2 + 2) + "\n";
for fila in self.mapa:
texto += "#";
for valor in fila:
texto += f"{valor} ";
texto += "#\n";
texto += "#" * (self.size_x * 2 + 2);
return texto;