Projet Pong Tiphaine Compain, TS3 Josselin Techer, TS1 Spécialité ISN, année
Plan de la présentation Introduction Les différentes étapes de développement du code Les derniers ajouts Phase de test Perspectives...
Historique du jeu ● Inspiré du Ping-Pong. ● Développé par Ralph Baer et son équipe à Sanders Associates en ● Premier jeu Atari. ● Premier jeu vidéo à succés. ● Aujourd'hui différentes versions, adaptées sur consoles et ordinateurs. Introduction Développement du code Derniers ajouts Phase de test Perspectives
Nos objectifs: ● Créer un jeu Pong où l'on puisse jouer à deux. ● Chaque joueur doit pouvoir diriger sa raquette de haut en bas. ● La balle doit rebondir sur les raquettes et les murs. ● Un score doit s'afficher. ● Le jeu s'arrête lorsque l'un des deux joueurs a atteint un certain nombre de points. ● Le gagnant est alors identifié. Introduction Développement du code Derniers ajouts Phase de test Perspectives
Créer une fenêtre python Tkinter: ● Importation du mode graphique ● from Tkinter import * ● Création de la fenêtre principale ● Mafenetre = Tk() ● Mafenetre.title('Mon jeux') ● Création d'un widget Canevas (zone graphique) Largeur = 800 Largeur = 800 Hauteur = 600 Hauteur = 600 Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ='white') Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ='white') Introduction Développement du code Derniers ajouts Phase de test Perspectives
Les raquettes: ● Définition de la raquette def annimeRaquette1(): def annimeRaquette1(): global Pad1Y global Pad1Y ● Déplacement vers le haut if activekey['z']: if activekey['z']: Pad1Y -= 5 Pad1Y -= 5 ● Déplacement vers le bas if activekey['s']: if activekey['s']: Pad1Y += 5 Pad1Y += 5 Introduction Développement du code Derniers ajouts Phase de test Perspectives ● on limite la raquette 1 dans le cadre(paroi du haut) ● on limite la raquette 1 dans le cadre(paroi du haut) if Pad1Y <= 0: if Pad1Y <= 0: Pad1Y = 0 Pad1Y = 0 ● on limite la raquette 1 dans le cadre(paroi du bas) ● on limite la raquette 1 dans le cadre(paroi du bas) if Pad1Y >= 471: if Pad1Y >= 471: Pad1Y = 471 Pad1Y = 471
Introduction Développement du code Derniers ajouts Phase de test Perspectives
Réglage du premier bug: ● on repère les touches enfoncées def pressed(event): def pressed(event): key = event.char key = event.char if key in activekey: if key in activekey: activekey[key] = True activekey[key] = True Introduction Développement du code Derniers ajouts Phase de test Perspectives ● on repère les touches relâchées def unpressed(event): key = event.char key = event.char if key in activekey: if key in activekey: activekey[key] = False activekey[key] = False
● Gestion de l'appui sur une touche du clavier ● activekey = {} ● for k in ['z', 's', 'p', 'm']: ● activekey[k] = False ● Création de l'écoute du clavier ● Canevas.focus_set() ● Canevas.bind(" ",pressed) ● Canevas.bind(" ",unpressed) Introduction Développement du code Derniers ajouts Phase de test Perspectives
Créer une balle: ● Déplacement initial(vitesse de la balle) ● dx,dy = 6, 6 ● def annimeBalle(): ● global BalleX,BalleY,dx,dy,compteur ● BalleX += dx ● BalleY += dy Introduction Développement du code Derniers ajouts Phase de test Perspectives
● Rebond sur les murs ● if BalleY >=590 or BalleY =590 or BalleY <= 10: ● dy = -dy ● Pour le rebond sur la raquette 1 ● if BalleX-Balle <= 62: ● if BalleY >= Pad1Y and\ ● BalleY <= Pad1Y+130: ● dx = -dx Introduction Développement du code Derniers ajouts Phase de test Perspectives
● Pour le rebond sur la raquette ● de player2 ● if BalleX >= 748: ● if BalleY >= Pad2Y and\ ● BalleY <= Pad2Y+130: ● dx = -dx Introduction Développement du code Derniers ajouts Phase de test Perspectives
Réglage du deuxième bug: Introduction Développement du code Derniers ajouts Phase de test Perspectives
● On regarde si la balle tape à gauche if BalleX <= 0: BalleX =400 BalleX =400 BalleY =300 BalleY =300 ● On regarde si la balle tape à droite if BalleX >= 800: BalleX =400 BalleX =400 BalleY =300 BalleY =300 Introduction Développement du code Derniers ajouts Phase de test Perspectives ● On regarde si la balle tape à gauche ● if BalleX <= 55: ● BalleX =400 ● BalleY =300 ● On regarde si la balle tape à droite ● if BalleX >= 750: ● BalleX =400 ● BalleY =300 ● On regarde si la balle tape à gauche if BalleX <= 55: BalleX =400 BalleX =400 BalleY =300 BalleY =300 ● On regarde si la balle tape à droite if BalleX >= 750: BalleX =400 BalleX =400 BalleY =300 BalleY =300
Scores: ● Ajout du score pour chaque joueur: pointA,pointB = 0,0 def annimeBalle(): global BalleX, BalleY, dx,dy, compteur, pointA, pointB global BalleX, BalleY, dx,dy, compteur, pointA, pointB BalleX += dx BalleX += dx BalleY += dy BalleY += dy Introduction Développement du code Derniers ajouts Phase de test Perspectives
● On regarde si la balle tape à gauche if BalleX <= 55: if BalleX <= 55: ● score joueur 1 + 1pt pointB += 1 pointB += 1 compt = str(pointB) + " " + str(pointA) compt = str(pointB) + " " + str(pointA) Canevas.itemconfigure (score, text=compt) Canevas.itemconfigure (score, text=compt) BalleX =400 BalleX =400 BalleY =300 BalleY =300 Introduction Développement du code Derniers ajouts Phase de test Perspectives ● On regarde si la balle tape à droite if BalleX >= 750: if BalleX >= 750: ● score joueur 2 + 1pt pointA += 1 pointA += 1 compt = str(pointB) + " " + str(pointA) compt = str(pointB) + " " + str(pointA) Canevas.itemconfigure (score, text=compt) Canevas.itemconfigure (score, text=compt) BalleX =400 BalleX =400 BalleY =300 BalleY =300
Jouer contre un mur: Introduction Développement du code Derniers ajouts Phase de test Perspectives
● Définition le mouvement de la raquette 2 def annimeRaquette2(): global Pad2Y global Pad2Y ● Déplacement vers le haut if activekey['p']: if activekey['p']: Pad2Y -= 7 Pad2Y -= 7 ● Déplacement vers le bas if activekey['m']: if activekey['m']: Pad2Y += 7 Pad2Y += 7 Introduction Développement du code Derniers ajouts Phase de test Perspectives ● Définition le mouvement de la raquette 2 def annimeRaquette2(): global Pad2Y global Pad2Y ● déplacement en mm temps que la raquette: Pad2Y = BalleY-65 Pad2Y = BalleY-65
Nous aimerions désormais vous montrer notre jeu lors d'un test que vous effectuerez Nous aimerions désormais vous montrer notre jeu lors d'un test que vous effectuerez Introduction Développement du code Derniers ajouts Phase de test Perspectives
Menu permettant de naviguer entre le mode un et deux joueurs Partition de la raquette pour changer l'angle du rebond de la balle Jeu plus esthétique avec des décors... Peut-être des bonus (de rapidité, des obstacles...) Introduction Développement du code Derniers ajouts Phase de test Perspectives Projets pour le futur:
Nous vous remercions pour votre attention et sommes prêts à écouter vos questions