PROGRAMACIÓN DE Snake (PROGRAMACIÓN)

  Hola gente bonita, en esta ocasión les mostraré el código de la versión 1.0 de "Snake".


Este proyecto es una simple adaptación del clásico Snake.

Programé el proyecto con el lenguaje de programación Python y el IDE VisualStudio Code. Las librerías que utilicé fueron:

  • time
  • turtle
  • random
Luego de terminar de realizar la programación, empaqueté el archivo en formato .exe, esto con una librería llamada "py2exe".

Código de aplicación:


import time, turtle, random

posponer = 0.1

score = 0
record = 0

#VENTANA
ventana = turtle.Screen()
ventana.title("Snake")
ventana.bgcolor("black")
ventana.setup(width=600, height=600)
ventana.tracer(0)

#CABEZA SERPIENTE
cabeza = turtle.Turtle()
cabeza.speed(0)
cabeza.shape("square")
cabeza.color("green")
cabeza.penup()
cabeza.goto(0,0)
cabeza.direction = "stop"

#COMIDA
comida = turtle.Turtle()
comida.speed(0)
comida.shape("circle")
comida.color("red")
comida.penup()
comida.goto(0,100)

#CUERPO SERPIENTE
segmentos = []

#PUNTUACIÓN
texto = turtle.Turtle()
texto.speed(0)
texto.color("White")
texto.penup()
texto.hideturtle()
texto.goto(0,260)
texto.write("Score: 0           Record: 0", align= "center", font= ("Courier", 24, "normal"))

def puntuaciones():
    texto.clear()
    texto.write("Score: {}           Record: {}".format(score, record),         align= "center", font= ("Courier", 24, "normal"))

#PUNTUACIÓN
texto_gameover = turtle.Turtle()
texto_gameover.speed(0)
texto_gameover.color("red")
texto_gameover.penup()
texto_gameover.hideturtle()
texto_gameover.goto(0,0)

def gameover():
    texto_gameover.write("GAME OVER", align= "center", font= ("Courier", 50, "normal"))
    time.sleep(2)
    texto_gameover.clear()

def esconder_segmentos():
    for segmento in segmentos:
        segmento.goto(2000,2000)
    segmentos.clear()  

#ACCIONES DE MOVIMIENTO
def up():
    cabeza.direction = "up"

def down():
    cabeza.direction = "down"

def left():
    cabeza.direction = "left"

def right():
    cabeza.direction = "right"


def mov():
    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
ventana.listen()
ventana.onkeypress(up, "Up")
ventana.onkeypress(down, "Down")
ventana.onkeypress(right, "Right")
ventana.onkeypress(left, "Left")

while True:

    ventana.update()

    #Colisiones con los extremos
    if cabeza.xcor() > 280 or cabeza.xcor() < -280 or cabeza.ycor() > 280 or cabeza.ycor() < -280 :
        cabeza.goto(0,0)
        cabeza.direction = "Stop"

        esconder_segmentos()    
        
        score = 0
        puntuaciones()
        gameover()

    #ACCIONES LUEGO DE COLISIONAR CON LA COMIDA
    if cabeza.distance(comida) < 20:
        x = random.randint(-14,14)
        y = random.randint(-14,14)
        comida.goto(x*20,y*20)

        #crea y agrega un nuevo segmento al cuerpo de la serpiente
        nuevo_segmento = turtle.Turtle()    
        nuevo_segmento.speed(0)
        nuevo_segmento.shape("square")
        nuevo_segmento.color("green")
        nuevo_segmento.penup()
        segmentos.append(nuevo_segmento)

        score = score + 1
        if score > record:
            record = score

        puntuaciones()

   # Mover el cuerpo de la serpiente
    total_Seg = len(segmentos)
    for index in range(total_Seg -1, 0, -1):
        x = segmentos[index - 1].xcor()
        y = segmentos[index - 1].ycor()
        segmentos[index].goto(x, y)

    if total_Seg > 0:
        x = cabeza.xcor()
        y = cabeza.ycor()
        segmentos[0].goto(x, y)

    mov()
    
    #colisiones con el cuerpo
    for segmento in segmentos:
        if segmento.distance(cabeza) < 20:
            cabeza.goto(0,0)
            cabeza.direction = "stop"

            esconder_segmentos()  

            score = 0
            puntuaciones()
            gameover()

    time.sleep(posponer)

Dankon por legu ĉi eniri. Ĝis la revido :3.

Comentarios

Entradas populares de este blog

CÓMO INTERCALAR GIF EN VISUAL STUDIO MEDIANTE BOTONES (TUTORIAL)

CAMBIO DE PILA A NETBOOK (PRÁCTICA)

INSTALACIÓN DE PAQUETE COREL DRAW (PRÁCTICA)