
Juego de la vida toroidal
Publicado por sor (12 intervenciones) el 09/02/2017 04:33:47
Hola. El ejercicio pide implementar el juego de la vida toroidal con gráficos de tortuga, teniendo en cuenta que una casilla (y, x) siempre tiene 8 vecinas aunque esté en un borde. He intentado esto:
¿Qué estoy haciendo mal?¿Se os ocurre algo? Un saludo.
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
print('Programa del juego de la vida toroidal.')
filas=int(input('Dime el número de filas: '))
columnas=int(input('Dime el número de colúmnas: '))
tablero=[]
for i in range(filas):
tablero.append([False]*columnas)
from turtle import Screen, Turtle
pantalla=Screen()
pantalla.setup(1025,1025)
pantalla.screensize(1000,1000)
pantalla.delay(0)
tablero[4][5]=True
tablero[5][5]=True
tablero[6][5]=True
#Representar el tablero.
for y in range(filas):
for x in range(columnas):
if tablero[y][x]:
célula=Turtle('square')
célula.color('blue')
célula.speed(0)
célula.penup()
célula.goto(y,x)
célula.pendown()
else:
célula=Turtle('square')
célula.color('red')
célula.speed(0)
célula.penup()
célula.goto(y,x)
célula.pendown()
pulsos=6
for t in range(pulsos):
#Preparar un nuevo tablero.
nuevo=[]
for i in range(filas):
nuevo.append([False]*columnas)
#Actualizar el tablero.
tablero=nuevo
for y in range(filas):
for x in range(columnas):
#Calcular el número de vecinos de la celda que estamos visitando.
n=0
if y>0 and x>0 and tablero[(y-1)%filas][(x-1)%columnas]:
n+=8
if x>0 and tablero[y][(x-1)%columnas]:
n+=8
if y<filas-1 and x>0 and tablero[(y+1)%filas][(x-1)%columnas]:
n+=8
if y>0 and tablero[(y-1)%filas][x]:
n+=8
if y<filas-1 and tablero[(y+1)%filas][x]:
n+=8
if y>0 and x<columnas-1 and tablero[y-1%(filas)][x+1%(columnas)]:
n+=8
if x<columnas-1 and tablero[y][(x+1)%columnas]:
n+=8
if y<filas-1 and x<columnas-1 and tablero[(y+1)%filas][(x+1)%columnas]:
n+=8
#Aplicar las reglas.
if tablero[y][x] and n>=8:#Supervivencia.
nuevo[y][x]=True
elif not tablero[y][x] and n==8:#Nacimiento.
nuevo[y][x]=True
else:#Superpoblación y aislamiento.
nuevo[y][x]=False
célula.goto(n)
#Actualizar el tablero.
tablero=nuevo
#Representar el tablero.
print('Pulso',t+1)
for y in range(filas):
for x in range(columnas):
if tablero[y][x]:
célula=Turtle('square')
célula.color('blue')
else:
célula=Turtle('square')
célula.color('red')
pantalla.exitonclick()
¿Qué estoy haciendo mal?¿Se os ocurre algo? Un saludo.
Valora esta pregunta


0