top of page
Snake-2000.webp

II PARCIAL

Para el segundo parcial, se realizó un informe de investigación sobre un lenguaje de programación de interés.  Este fue Python.

Asimismo, se tendría que presentar un producto haciendo uso del lenguaje en cuestión. El docente al mencionar esto, hacía referencia a la creación de un un menú. En este caso, junto a Aragonés, quién es miembro de mi grupo para la presentación de este último trabajo, decidimos presentar un juego. 

De esta forma, nuestro trabajo final de curso es la exposición conceptual del lenguaje de programación Python, la presentación de un informe de investigación sobre el mismo, y la explicación y demostración del funcionamiento de una estructura de código para la creación del juego Snake.  

Martes 12/03/2024

PRESENTACIÓN DEL INFORME

INFORME DE INVESTIGACIÓN

PRODUCTO: ESTRUCTURA DE CÓDIGO DEL JUEGO SNAKE EN PYTHON

from operator import index

import turtle

import time

import random

 

posponer = 0.1

 

#Marcador

score = 0

high_score = 0

 

#Configuracion de la ventana

wn = turtle.Screen()

wn.title("Juego de Snake")

wn.bgcolor("black")

wn.setup(width = 600, height = 600)

wn.tracer(0)

 

#Cabeza de la serpiente

cabeza = turtle.Turtle()

cabeza.speed(0)

cabeza.shape("square")

cabeza.color("white")

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(100,0)

 

#Cuerpo de la serpiente

segmentos = []

 

#Texto

texto = turtle.Turtle()

texto.speed(0)

texto.color("white")

texto.penup()

texto.hideturtle()

texto.goto(0,260)

texto.write("Score: 0       High Score: 0", align = "center", font = ("Courier", 24, "normal"))

 

#Funciones

def arriba():

    cabeza.direction = "up"

def abajo():

    cabeza.direction = "down"

def izquierda():

    cabeza.direction = "left"

def derecha():

    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

wn.listen()

wn.onkeypress(arriba, "Up")

wn.onkeypress(abajo, "Down")

wn.onkeypress(izquierda, "Left")

wn.onkeypress(derecha, "Right")

 

while True:

    wn.update()

 

    #Colisiones con los bordes

 

    if cabeza.xcor() > 280 or cabeza.xcor() < -280 or cabeza.ycor() > 280 or cabeza.ycor() < -280:

        time.sleep(1)

        cabeza.goto(0,0)

        cabeza.direction = "stop"

 

        #Esconder segmentos de partidas pasadas

        for segmento in segmentos:

            segmento.goto(2000,2000)

 

        #Limpiar lista de segmentos

            segmentos.clear()

 

        #Resetear marcador

        score = 0

        texto.write("Score: {}       High Score: {}".format(score, high_score), align = "center", font = ("Courier", 24, "normal"))

 

    #Colisiones con la comida

    if cabeza.distance(comida) < 20:

       

        #Mover la comida a posicion random

        x = random.randint(-280,280)

        y = random.randint(-280,280)

        comida.goto(x,y)

 

        nuevo_segmento = turtle.Turtle()

        nuevo_segmento.speed(0)

        nuevo_segmento.shape("square")

        nuevo_segmento.color("gray")

        nuevo_segmento.penup()

        segmentos.append(nuevo_segmento)

 

        #Aumentar marcador

        score += 10

 

        if score > high_score:

            high_score = score

 

        texto.clear()

        texto.write("Score: {}       High Score: {}".format(score, high_score), align = "center", font = ("Courier", 24, "normal"))

 

    #Mover el cuerpo de la serpiente

    totalSeg = len(segmentos)

    for i in range(totalSeg -1, 0, 1):

        x = segmentos[index - 1].xcor()

        y = segmentos[index - 1].ycor()

        segmentos[index].goto(x,y)

 

    if totalSeg > 0:

        x = cabeza.xcor()

        y = cabeza.ycor()

        segmentos[0].goto(x,y)

 

    mov()

 

    #Colisiones con el cuerpo de la serpiente

    for segmento in segmentos:

        if segmento.distance(cabeza) < 20:

            time.sleep(1)

            cabeza.goto(0,0)

            cabeza.direction = "stop"

 

            #Esconder segmentos de partidas pasadas

            for segmento in segmentos:

                segmento.goto(2000,2000)

 

            #Limpiar lista de segmentos

                segmentos.clear()

 

            #Resetear marcador

            score = 0

            texto.write("Score: {}       High Score: {}".format(score, high_score), align = "center", font = ("Courier", 24, "normal"))

 

    time.sleep(posponer)

image.png
image.png
bottom of page