5.0 Juego en Python(Ping Pong)


Ping Pong




Código:


from tkinter import *
import time
from tkinter import messagebox

class Animacion():
 def __init__(self):
  self.ventana = Tk()
  self.canvas = Canvas(self.ventana,width=400,height=400)
  self.ventana.geometry("400x400")
  self.canvas.place(x=0,y=0)
  self.boton = Button(self.ventana,command=self.iniciar,text="Iniciar")
  self.boton.place(x=180,y=0)
  self.pelota = self.canvas.create_oval(50,100,100,150,fill='blue')
  self.jugador1 = self.canvas.create_rectangle(0,200,20,100,fill='red')
  self.jugador2 = self.canvas.create_rectangle(380,200,400,100,fill='yellow')
  self.ventana.bind("",self.key)
  self.ventana.mainloop()

 def iniciar(self):
  self.boton.place(x=-50,y=-20)
  self.animacion()

 def key(self,event):
  if event.keycode==65:
   self.canvas.move(self.jugador1,0,4)
  if event.keycode==81:
   self.canvas.move(self.jugador1,0,-4)
  if event.keycode==40:
   self.canvas.move(self.jugador2,0,4)
  if event.keycode==38:
   self.canvas.move(self.jugador2,0,-4)

 def animacion(self):
  x=1
  y=1
  while True:
   coordenadas=self.canvas.coords(self.pelota)
   # x1,y1,x2,y2
   x=self.colision(x)
   if x==0:
    messagebox.showinfo("Perdiste","Perdiste jugador rojo")
    self.ventana.destroy()
    obj = Animacion()
   if x==2:
    messagebox.showinfo("Perdiste","Perdiste jugador amarillo")
    self.ventana.destroy()
    obj = Animacion()
   if coordenadas[3]>=400:
    y=-1
   if  coordenadas[1]<=0:
    y=1
   time.sleep(0.005)
   self.canvas.move(self.pelota,x,y)
   self.canvas.update()

 def colision(self,x):
  coordenadasJ1 = self.canvas.coords(self.jugador1)
  coordenadasJ2 = self.canvas.coords(self.jugador2)
  coordenadasP = self.canvas.coords(self.pelota)
  if (coordenadasJ1[0]<=coordenadasP[0] and coordenadasJ1[2]>=coordenadasP[0] and coordenadasJ1[1]<=coordenadasP[1] and coordenadasJ1[3]>=coordenadasP[1]) or (coordenadasJ1[0]<=coordenadasP[0] and coordenadasJ1[2]>=coordenadasP[0] and coordenadasJ1[1]<=coordenadasP[3] and coordenadasJ1[3]>=coordenadasP[3]):
   x=1
  elif (coordenadasJ2[0]<=coordenadasP[2] and coordenadasJ2[2]>=coordenadasP[2] and coordenadasJ2[1]<=coordenadasP[1] and coordenadasJ2[3]>=coordenadasP[1]) or (coordenadasJ2[0]<=coordenadasP[2] and coordenadasJ2[2]>=coordenadasP[2] and coordenadasJ2[1]<=coordenadasP[3] and coordenadasJ2[3]>=coordenadasP[3]):
   x=-1
  elif coordenadasP[0]<=10:
   x=0
  elif coordenadasP[2]>=390:
   x=2
  return x

obj = Animacion()

Comentarios