Pong⚓︎
Pong est un des premiers jeux vidéo d'arcade et le premier jeu vidéo d'arcade de sport. Il a été imaginé par l'Américain Nolan Bushnell et développé par Allan Alcorn, et la société Atari le commercialise à partir de novembre 1972. Bien que d'autres jeux vidéo aient été inventés précédemment, comme Computer Space, Pong est le premier à devenir populaire. Source Wikipedia.
L'objectif de ce projet est de modifier un code existant utilisant la bibliothèque davistk pour rendre le jeu fonctionnel.
Exécuter le code initial⚓︎
Pour éxécuter le code initial donné avec le projet, vous devez avoir dans le même répertoire le fichier davistk.py
et le fichier pong.py
donné avec le projet.
On rappelle que la bibliothèque davistk est téléchargeable sur classroom. Elle documentée à l'adresse suivante https://davistk.brunache.ovh
A la première exécution, cela affichera la fenêtre suivante:
La barre de gauche représente une raquette, elle ne se déplace que verticalement. Elle est gérée par une fonction déjà programmée.
La barre de droite représente une raquette également, elle ne se déplace pas pour l'instant mais ne derva se déplacer que verticalement avec les touches haut et bas du clavier.
La point blanc représente la balle, elle bouge, détecte les raquettes et rebondit dessus mais, elle ne détecte, pour l'instant, ni les murs, ni la zone derrière les raquettes.
Objectif⚓︎
-
BASIQUE : Compléter toutes les fonctions dont la docstring ne commence pas par "Ne pas modifier" pour que le jeu fonctionne comme sur la vidéo visionnable ci-dessous:
-
AMELIORATIONS : Proposer et mettre en oeuvre des améliorations de ce jeu. Par exemple:
- Un menu au démarrage
- Un menu à la fin du jeu
- Un réglage de la vitesse des raquettes
- Un réglage de la vitesse de la balle
- Une balle allant de plus en plus vite
- ...
Méthode⚓︎
-
Commencer par bien lire le code existant et le comprendre. En particulier:
- La boucle while de la ligne 176 contient toutes les instructions jouées tous les 20ème de seconde. C'est ici qu'est la gestion du jeu. C'est à cet endroit que les fonctions sont appelées.
- Les variables globales des lignes 7 à 12 peuvent être utilisées dans les fonctions.
- Les variables comme
position_balle
peuvent contenir des couples de flottants. On appelle cela des tuples (documentation : https://docs.python.org/fr/3/tutorial/datastructures.html#tuples-and-sequences).
-
Comprendre comment fonctionne davistk en lisant la documentation. On rappellera en particulier que l'origine du repère est en haut à gauche, que l'axe des abscisses est orienté vers la droite et que l'axe des ordonnées est orienté vers le bas
-
Compléter fonction par fonction pour qu'elle réalise ce qui est indiqué dans sa docstring. En particulier:
- Réfléchir à ce que fait une balle lorsqu'elle rebondit sur un mur (que fait la vitesse horizontale et que fait la vitesse verticale)