Squash Pong (Python Tkinter)

(actualisé le ) par Corto

Le but de ce programme (réalisé par mes soins) était, comme tout Pong qui se respecte, de faire rebondir une balle sur une raquette, ou, si elle tombe hors de la zone rebondissable, de plonger dans les méandres les plus profonds du jeu.

L’opération n’était pas simple. En effet, il fallait faire rebondir la balle aux coordonnées X et aux coordonnées Y de la raquette, mais dans une distance donnée, compliquant un peu plus la tache.

Malgré ses qualités graphiques extremement développées, le jeu fonctionne sans un lag, étant donné qu’elle ont été réalisées avec Tkinter, l’éditeur graphique de Pyzo.

Ci-dessous, le code du Pong, jeu avec lequel vous pourrez jouer des heures durant sans jamais vous lasser.

from tkinter import *
 
PosX=60
PosY=10
PosX2=200
PosY2=480
dx=10
dy=7
score=0
 
def jouer():
    global menu
   
    def deplacement():
        global dx, dy, PosX2, PosY2, score
        if canvas.coords(balle)[1]<0:
            dy=-1*dy
        if canvas.coords(balle)[2]>500:
            dx=-1*dx
        if canvas.coords(balle)[0]<0:
            dx=-1*dx
        if canvas.coords(balle)[3]>=PosY2 and canvas.coords(balle)[2]>=canvas.coords(raquette)[0] and canvas.coords(balle)[0]<=canvas.coords(raquette)[2] and canvas.coords(balle)[3]<=490:
            dy=-1*dy
            score=score+1
            TextGame.set("Score : "+ str(score))
        if canvas.coords(balle)[3]<550:
            tk.after(10,deplacement)
        canvas.move(balle,dx,dy)
 
    def KeyBoard(event):
        global PosX2, menu
        Key = event.keysym
 
        if Key == 'Right':
            canvas.move(raquette,30,0)
        if Key == 'Left':
            canvas.move(raquette,-30,0)
   
    menu.destroy()#Detruire le menu pour utiliser le score
    tk = Tk()
    tk.title("[New Game]")
 
    canvas = Canvas(tk,width = 500, height = 500 , bd=0, bg="grey")
    canvas.pack(padx=10,pady=10)
 
    balle = canvas.create_oval(PosX,PosY,PosX+20,PosY+20,fill='white')
    raquette = canvas.create_rectangle(PosX2,PosY2,PosX2+100,PosY2+10,fill='black')
 
    TextGame = StringVar()
    LabelGame = Label(tk, textvariable = TextGame , bg ="grey")
    TextGame.set("Score : "+ str(score))
    LabelGame.pack(padx = 15, pady = 5)
 
    canvas.focus_set()
 
    canvas.bind('<Key>',KeyBoard)
 
    deplacement()
   
    tk.mainloop()
 
menu = Tk()
menu.title("[Squash Pong]")
menu.geometry("260x90")
 
ButtonJouer = Button(menu, text ="   Play   ", command = jouer)
ButtonJouer.pack(padx = 5, pady = 5)
 
ButtonQuitter = Button(menu, text ="   Exit    ", command = menu.destroy)
ButtonQuitter.pack(padx = 5, pady = 5)
 
menu.mainloop()

Télécharger

Seul problème, le score qui reffuse pertinament de s’afficher, mais qui sera certainement vite résolu.

Merci d’avoir lu cet article !