Tuesday, December 3, 2019

VIDEO JUEGO DE PONG EN PYTHON

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.

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
view raw Pong.py hosted with ❤ by GitHub