Hecho por: Cassandra González y Brandon Esquivel.
Es el código de un videojuego en Python, siendo el proyecto final de la materia de Graficación.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import turtle | |
#Creacion de ventana | |
wn = turtle.Screen() | |
wn.title("Pong By Brandon and cassandra") | |
wn.bgcolor("black") | |
wn.setup(width = 800, height = 600) | |
wn.tracer(0) #Fluidez del Juego | |
#Marcador | |
marcadorA = 0 | |
marcadorB = 0 | |
#JugadorA | |
jugadorA = turtle.Turtle() | |
jugadorA.speed(0) #Velocidad | |
jugadorA.shape("square") | |
jugadorA.color("white") | |
jugadorA.penup() #Quita una linea, por defecto cuando se crea un cuadrado este se pone en el centro y simplemente con esta opcion la ocultamos | |
jugadorA.goto(-350, 0) | |
jugadorA.shapesize(stretch_wid=5, stretch_len = 1) #Son las dimensiones de nuestro rectangulo para el jugadorA | |
#JugadorB | |
jugadorB = turtle.Turtle() | |
jugadorB.speed(0) | |
jugadorB.shape("square") | |
jugadorB.color("white") | |
jugadorB.penup() | |
jugadorB.goto(350, 0) | |
jugadorB.shapesize(stretch_wid=5, stretch_len = 1) | |
#Pelota | |
pelota = turtle.Turtle() | |
pelota.shape("square") | |
pelota.color("white") | |
pelota.penup() | |
pelota.goto(0,0) | |
pelota.dx = 0.5 #La pelota se ira moviendo 3 pixeles en el eje x | |
pelota.dy = 0.5 #La pelota se ira moviendo 3 pixeles en el eje y | |
#Linea de Division | |
division = turtle.Turtle() | |
division.color("white") | |
division.goto(0,400) | |
division.goto(0,-400) | |
#Pen | |
pen = turtle.Turtle() | |
pen.speed(0) | |
pen.color("white") | |
pen.penup() | |
pen.hideturtle() #Crea una imagen pero despues la borra | |
pen.goto(0,260) | |
pen.write("Jugador A: 0 Jugador B: 0", align = "center", font=("Courier", 24, "normal")) | |
#FUNCIONES | |
#Movimiento JugadorA | |
def jugadorA_up(): | |
y = jugadorA.ycor() #Guardara la coordenada en la que estamos | |
y += 20 #Aumentara 20 Pixeles al moverse | |
jugadorA.sety(y) #Actualizaremos la coordenada | |
def jugadorA_down(): | |
y = jugadorA.ycor() #Guardara la coordenada en la que estamos | |
y -= 20 #Disminuira 20 Pixeles al moverse | |
jugadorA.sety(y) #Actualizaremos la coordenada | |
#Movimiento JugadorB | |
def jugadorB_up(): | |
y = jugadorB.ycor() | |
y += 20 | |
jugadorB.sety(y) | |
def jugadorB_down(): | |
y = jugadorB.ycor() | |
y -= 20 | |
jugadorB.sety(y) | |
#EVENTOS DEL TECLADO | |
wn.listen() | |
wn.onkey(jugadorA_up, 'w') #Tambien podria ser wn.onkeypress(jugadorA_up, "w")aunque en mi caso consulte en un foro y me soluciono el problema | |
wn.onkey(jugadorA_down, 's') #Mismo caso que lo anterior | |
wn.onkey(jugadorB_up, 'Up') #Tecla de flecha arriba | |
wn.onkey(jugadorB_down, 'Down') #Tecla de flecha abajo | |
#Bucle principal (Motor del juego) | |
while True: | |
wn.update() | |
pelota.setx(pelota.xcor() + pelota.dx) | |
pelota.sety(pelota.ycor() + pelota.dy) | |
#BORDES | |
if pelota.ycor() > 290: | |
pelota.dy *= -1 #Aqui la direccion se invertira en contra de la pared | |
if pelota.ycor() < -290: | |
pelota.dy *= -1 | |
#BORDES DERECHA/IZQUIERDA | |
if pelota.xcor() > 390: | |
pelota.goto(0,0) #Redimenzionamos la pelota | |
pelota.dx *= -1 #Cambia de lado la pelota | |
marcadorA += 1 #Puntuacion | |
pen.clear() | |
pen.write("Jugador A: {} Jugador B: {}".format(marcadorA,marcadorB), align = "center", font=("Courier", 24, "normal")) | |
if pelota.xcor() < -390: | |
pelota.goto(0,0) | |
pelota.dx *= -1 | |
marcadorB += 1 | |
pen.clear() | |
pen.write("Jugador A: {} Jugador B: {}".format(marcadorA,marcadorB), align = "center", font=("Courier", 24, "normal")) | |
#COLISIONES | |
if ((pelota.xcor() > 340 and pelota.xcor() < 350) | |
and (pelota.ycor() < jugadorB.ycor() + 50 | |
and pelota.ycor() > jugadorB.ycor() - 50)): | |
pelota.dx *= -1 #Se revierte el eje x de la pelota | |
if ((pelota.xcor() < -340 and pelota.xcor() > -350) | |
and (pelota.ycor() < jugadorA.ycor() + 50 | |
and pelota.ycor() > jugadorA.ycor() - 50)): | |
pelota.dx *= -1 |