Juego con código fuente Python
Desde Tkinter import *
Importación aleatoria
Snake (framework):
def __init__ ( self, master=Ninguno):
Marco.
__init__(self, main)
self.body = [(0, 0)]
self.bodyid = []
self.food = [ - 1, -1 ]
self.foodid = -1
self.gridcount = 10
self.size = 500
self .di = 3
Autovelocidad = 500
self.top = self.winfo_toplevel()
self.top.resizable(False, False)
p>self.grid()
self.canvas = Lienzo(self)
self.canvas.grid()
self . canvas config(ancho = self. tamaño, alto = self.size, relieve = RIDGE)
self.drawgrid()
s = self.size/self.gridcount<. /p>
id = self . lienzo . crear _ rectángulo(self . body[0][0]*s, self.body[0][1]*s,
(self. cuerpo[0 ][0] 1)*s, (self . cuerpo[0][1] 1)* s, fill="amarillo ")
self.bodyid.insert(0,id)
self.bind_all("lt;KeyRelease>, self.keyrelease)
self.drawfood()
self.after(self.speed, self. drawsnake )
Defina la cuadrícula de dibujo (self):
s = self.size/self.gridcount
Para I(0, self.gridcount en el rango 1 ):
self.canvas.create_line(i*s, 0, i*s, self.size)
self.canvas.create_line(0, i*s, self . tamaño, i*s)
def drawsnake(self):
s = self.size/self.gridcount
cabeza = self.body[0]
nuevo = [cabeza[0], cabeza[1]]
Si self.di == 1:
nuevo[1]=(cabeza [ 1]-1) self . recuento de cuadrícula
elif self.di == 2:
new[0]=(head[0] 1) self . >
elif self.di == 3:
new[1]=(head[1] 1) self . grid count
De lo contrario:
nuevo[0]=(head[0]-1) self . recuento de cuadrícula
siguiente = (nuevo[0], nuevo[1])
Si está en se
Siguiente en lf.body:
Salir()
elif siguiente == (self.food[0], self.food[1]):
self.body.insert(0, siguiente)
self.bodyid.insert(0, self.foodid)
self.drawfood()
De lo contrario:
tail = self.body.pop()
id = self.bodyid.pop()
self.canvas.move(id, (siguiente[ 0]-tail[0])*s, (siguiente[1]-tail[1])*s)
self.body.insert(0, siguiente)
self .bodyid.insert(0, id)
self.after(self.speed, self.drawsnake)
def drawfood(self):
s = self.size/self.gridcount
x = random.randrange(0, self.gridcount)
y = random.randrange(0, self.gridcount)
p >mientras (x, y) en self.body:
x = random.randrange(0, self.gridcount)
y = random.randrange(0, self .gridcount)
id = self . crear _ rectángulo(x * s, y*s, (x 1)*s, (y 1)*s, fill="amarillo ")< / p>
self.food[0] = x
self.food[1] = y
self.foodid = id
liberación de clave def (self, evento):
if event.keysym == "Arriba" y self.di! = 3:
self.di = 1
elif event.keysym == "Correcto" y self.di! =4:
self.di = 2
elif event.keysym == "Abajo" y self.di! = 1:
self.di = 3
elif event.keysym == "Izquierda" y self.di! = 2:
self.di = 4
app = serpiente()
app.master.title("Serpiente codiciosa")
App.mainloop() serpiente