Projet Pong Tiphaine Compain, TS3 Josselin Techer, TS1 Spécialité ISN, année 2012-2013.

Slides:



Advertisements
Présentations similaires
Python Interfaces graphiques
Advertisements

Python Interfaces graphiques
Gestion des événements liés à la fenêtre et aux périphériques dentrée.
Configurer votre périphérique audio Tout d’abord : configurez votre périphérique audio et vérifiez la qualité du son. Vous pouvez utiliser le micro et.
La programmation créative Scratch
PROCESSING Semaine 03. PLAN DE LEÇON Interaction avec un programme Gestion de la souris Gestion du clavier.
 Ludovic : gestion des obstacles  Loïc : gestion du personnage  Antoine : gestion des collisions (sol et obstacles), du score, des sons et du « Game.
Abes agence bibliographique de l’enseignement supérieur Comment adapter les “modéles de notices” à vos besoins ?
Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
«Une image vaut mille mots» Quitte r. Sommaire - Quiz - Introduction - Motif Writing Laban - Historique - Définition de l'alphabet - Exemple écrit avec.
Les jeux vidéos[ ] Les bornes d'arcades; Les consoles; Les ordinateurs.
Tableau Numérique Interactif Quels usages du TNI dans sa pratique de classe et pourquoi ? Prise en main des différentes fonctionnalités et applications.
Programmation créative Semaine 03. Agenda de leçon  Rotation d’un sprite  Modifier la couleur d’un sprite (lutin)  Son et musique  Souris  Glisser.
But du jeu et contrôles Joueur 2 sur le point de se faire exploser par joueur 1 Touches de déplacement du joueur 2 Touches de déplacement du joueur 1.
Rencontre de parents Saison estivale 2017
Le badminton Mon sport préféré est le badminton pour son originalité.
Environnement du développement de BD ORACLE REPORTS 10g
Occuper l’espace en Largeur et Profondeur
Occuper l’espace en Largeur et Profondeur
Occuper l’espace en Largeur et Profondeur
Visite guidée - session 3 Les postes de charge et les gammes
BasketBall.
Présentation du projet d’E.P.I.
Occuper l’espace en Largeur et Profondeur
Nouvelles lois du jeu U7 et U / 2018
AIDE A L’UTILISATION DU LOGICIEL LATISPRO
Javadoc et débogueur Semaine 03 Version A17.
Occuper l’espace en Largeur et Profondeur
STSWEB Structures : Divisions et groupes Supprimer une division
Programmation avec Scratch
Occuper l’espace en Largeur et Profondeur
Occuper l’espace en Largeur et Profondeur
Pour cette découverte de S cratch !
Apprendre par l’exemple V4 avec scratch 2.0 partie 2/2
Séance 1 : voiture-ville
Programmation créative – Les vecteurs
CHAPITRE 14 Transformations en chimie organique Aspect microscopique
Occuper l’espace en Largeur et Profondeur
HISTORIQUE Rugby : Japon en 1899 Ligue japonaise fondée en 1926 (JRFU) Ligue nationale fondée en 1993 Coupe du monde 2011 : plus de pratique Coupe du.
Les instruments de musique
Favoriser l’occupation de l’aire de jeu
Priorités d’entraînements Pour les 8-11 ans
GRAPHISME PAR ORDINATEUR
ECOLE D’ARBITRAGE LE MANIEMENT DU BALLON Hervé GARCIA - BVEHB.
Java, open GL et la mobilité
Format des rencontres USEP
2018 Nouveau Portail Web Journée des utilisateurs Octopus
Tableau Numérique Interactif
Niveau de compétence à l’arbitrage au tennis de table

Thème principal : « gagner deux duels consécutifs »


Créer un diaporama avec Open Office Impress

Favoriser l’occupation de l’aire de jeu
3- Nouvelles pages d’accueil
Un arbitrage à deux … Il n’existe pas un arbitre leader dont le pouvoir de décision est plus important que celui de l’autre. Chaque arbitre possède un.

Mathématiques – algorithmique – jeux vidéos
Progression, évolution graphique
Football Américain Virgile et charles
Thème principal : « gagner deux duels consécutifs »

PLAN Introduction générale Problématique & Objectifs.
Disposition du titre Sous-titre.
Conseils aux joueurs Formation Arbitrage Thème 20 Plan général 1 / 3

Occuper l’espace en Largeur et Profondeur Matériel Thème de la séance: Occuper l’espace en Largeur et Profondeur 20 On a le ballon Conserver.
Avec ballon Maitriser puis 30’ Sans ballon Maitriser puis 15’
Transcription de la présentation:

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