#Pong pour PythonExtra de Fcalva - 07/02/2024
#Ce programme est dans le domaine public

try:
  from gint import*
except:
  print("Ce programme a besoin\nde PythonExtra !")
  int("a")
from math import sqrt
from random import random

#score,paddle y, pad w
p1=[0,112,20]
p2=[0,112,20]

#x,y,vx,vy
ball=[198,112,0,0]

gamed=[p1,p2,ball]

def pball(gamed):
  coll=0
  tx=gamed[2][0]+gamed[2][2]
  ty=gamed[2][1]+gamed[2][3]
  if tx<15:
    gamed[1][0]+=1
    tx=198
    ty=112
    a=random()-0.5
    gamed[2][3]=random()-0.5
    gamed[2][2]=(a*sqrt(1-gamed[2][3]*gamed[2][3]))/abs(a)
  if tx>380:
    if gamed[0][0]>-1:
      gamed[0][0]+=1
    else:
      gamed[1][0]=0
    tx=198
    ty=112
    a=random()-0.5
    gamed[2][3]=random()-0.5
    gamed[2][2]=(a*sqrt(1-gamed[2][3]*gamed[2][3]))/abs(a)
  if ty<20:
    coll=1
    ty=22
  if ty>224:
    coll=1
    ty=222
  if tx>16 and tx<20 and ty>gamed[0][1] and ty<gamed[0][1]+gamed[0][2]:
    coll=2
    tx=21
    if gamed[0][0]==-1:
      gamed[1][0]+=1
  if tx>375 and tx<379 and ty>gamed[1][1] and ty<gamed[1][1]+gamed[1][2]:
    coll=2
    tx=374
  gamed[2][0]=tx
  gamed[2][1]=ty
  if coll:
    gamed[2][2]=gamed[2][2]*1.1
    gamed[2][3]=gamed[2][3]*1.1
  if coll==1:
    gamed[2][3]= -gamed[2][3]
  if coll==2:
    gamed[2][2]= -gamed[2][2]

def ppad(gamed):
  pollevent()
  if gamed[0][0]>-1:
    if keydown(KEY_SHIFT):
      if gamed[0][1]>20:
        gamed[0][1]-=2
    if keydown(KEY_ALPHA):
      if  gamed[0][1]<224:
        gamed[0][1]+=2
  if keydown(KEY_UP):
    if gamed[1][1]>20:
      gamed[1][1]-=2
  if keydown(KEY_DOWN):
    if  gamed[1][1]<224:
      gamed[1][1]+=2

def draw(gamed):
  dclear(C_BLACK)
  p1s="p1:"+str(gamed[0][0])
  p2s="p2:"+str(gamed[1][0])
  if gamed[0][0]==-1:
    dtext(1,1,C_WHITE,p2s)
  else:
    dtext(1,1,C_WHITE,p1s)
    dtext(300,1,C_WHITE,p2s)
  dline(0,20,395,20,C_WHITE)
  drect(15,gamed[0][1],20,gamed[0][1]+gamed[0][2],C_WHITE)
  drect(370,gamed[1][1],375,gamed[1][1]+gamed[1][2],C_WHITE)
  drect(int(gamed[2][0])-2,int(gamed[2][1])-2,int(gamed[2][0])+2,int(gamed[2][1])+2,C_WHITE)
  
a=random()-0.5
gamed[2][3]=random()-0.5
gamed[2][2]=(a*sqrt(1-gamed[2][3]*gamed[2][3]))/abs(a)

print("modes de jeu :")
print("1-contre mur")
print("2-1v1")
while True:
  try:
    i=int(input())
    if i in [1,2]:
      break
  except:
    continue

if i==1:
  gamed[0]=[-1,20,224]
  
while True:
  ppad(gamed)
  pball(gamed)
  draw(gamed)
  dupdate()
