Projet pygame: River Raid

Projet pygame: River Raid - Python - Programmation

Marsh Posté le 22-11-2015 à 19:24:33    

Bonjour,
 
Je suis à la fac et j'ai un projet en cours sur la création d'un jeu connu d'époque : River Raid de chez Activision. J'ai des consignes précises à suivre tout au long du projet mais j'ai quelque soucis.
 
Voici l'étape 1: (Désolé pour les quelconques fautes de grammaire et d'orthographe mon prof est d'origine brésilienne)  
 
Projet River Ride
— Étape 1 —
1 Objectifs
Dans la première étape du projet vous devez créer l’ouverture du jeu et les figures représentant le
joueur, les obstacles mobiles et immobiles.
2 Les modules
Pour démarrer le projet, vous devez créer un dossier appelé projet et à l’intérieur de celui-ci les
fichiers suivants :
— __main__.py : contiendra la fonction principale.
— couleur.py : contiendra les définitions de toutes les couleurs utilisées dans le programme.
— joueur.py : contiendra la définition de l’objet du joueur (ex. : un avion).
— mobile.py : contiendra la définition des objets mobiles (ex. : les bateaux).
— obstacle.py : contiendra la définition des objets immobiles (ex. : les bords et les îles).
— scenario.py : contiendra la définition d’un scénario (un joueur et plusieurs objets mobiles et
immobiles).
3 Module principal
3.1 Ouverture
Dans le module principal (__main__.py), vous devez créer la fonction dessine_ouverture qui
reçoit la surface en argument. La fonction doit dessiner l’écran d’ouverture du jeu. Il doit contenir :
— le titre du jeu en grandes lettres (vous pouvez inventer un nouveau titre pour votre jeu) ;
— la date de création du jeu ;
— le nom des auteurs ;
— l’institution (Université d’Artois) ;
— des instructions pour le joueur (ex. : ESC pour quitter et ENTRER pour commencer).
Vous pouvez, optionnellement, afficher un dessin pour que l’ouverture du jeu soit encore mieux !
3.2 Fonction principale
Dans le module principal (__main__.py), vous devez créer la fonction principale (main), qui ne
reçoit pas d’argument. Cette fonction sera un peu différente des fonctions principales que nous avons
créées jusqu’ici. La différence est que dans un jeu, tout n’est pas affiché tout de suite. En effet, nous
voulons afficher d’abord l’écran d’ouverture du jeu et ensuite plusieurs phases de jeu différentes. Donc,
cette fonction doit :
1. Initialiser Pygame.
2. Ouvrir la fenêtre de l’application.
3. Afficher l’ouverture du jeu.
4. Tant que le programme n’est pas terminé et que le jeu n’est pas commencé :
1
(a) Pour chaque événement détecté :
i. Si événement QUIT : termine le programme.
ii. Si événement clavier K_ESCAPE : termine le programme.
iii. Si événement clavier K_RETURN : commence le jeu.
(b) Si le jeu a commencé :
i. Initialise Scénario 1 (sera expliqué plus tard).
ii. Exécute Scénario 1 (sera expliqué plus tard).
iii. . . .
5. Termine Pygame.
Les instructions « Initialise Scénario 1 » et « Exécute Scénario 1 » ne sont pas encore prêtes (vous allez
les faire dans la section 7). Donc, pour l’instant, insérez ici plutôt une instruction de ne rien faire (pass).
Testez votre programme maintenant. Il doit montrer l’ouverture et s’arrêter. Si vous cliquez sur
quitter ou si vous appuyez sur ESC, le programme doit terminer.
4 Module joueur
Initialisation : Dans le module joueur (joueur.py), écrivez une fonction init qui reçoit un couple
d’entiers « pos » en argument. La fonction doit initialiser le dictionnaire des attributs du joueur et le
retourner. Pour l’instant, le seul attribut à initialiser est pos : une liste de deux entiers qui contient les
coordonnées du joueur à l’écran.
Dessin : Encore dans le module joueur, écrivez la fonction dessine qui reçoit les attributs du joueur
et la surface en argument. La fonction doit dessiner le joueur sur la surface aux les coordonnées sauvegardées
dans les attributs du joueur.
Vous pouvez dessiner le joueur avec les instructions pygame.draw. Vous pouvez également utiliser
une image récupérée sur internet ou construite par vous même avec un logiciel de dessin. Si vous choisissez
d’utiliser une image, ajoutez un attribut img à votre objet joueur. Ensuite, chargez-la et convertissez
l’image dans la fonction init. Ainsi, cette tâche sera faite une seule fois en début du jeu et économisera
énormément de temps de calcul de la machine.
Teste : Pour tester le dessin du joueur rapidement, réutilisez l’astuce du TP d’animation. C’est à dire,
créez une fonction teste comme suit :
def teste():
import pygame
import joueur
pygame.init()
surface = pygame.display.set_mode((640, 480))
suface.fill((0, 0, 0))
j = joueur.init((0, 0))
joueur.dessine(j, surface)
pygame.display.update()
Pour tester le module jouer, choisissez « run » sur le menu de Idle et ensuite, dans la console de Python
saisissez :
>>> teste()
2
5 Module mobile
Initialisation : Dans le module mobile (mobile.py), écrivez une fonction init qui reçoit un copule
d’entiers « pos » en argument. Comme pour le joueur, la fonction doit initialiser le dictionnaire des
attributs d’un objet mobile et le retourner. Pour l’instant, il y a deux attributs à initialiser :
— pos : une liste de deux entiers qui contient les coordonnées de l’objet à l’écran.
— vit : une liste de deux entiers qui contient les vitesses de déplacement horizontale et verticale
de l’objet.
Dessin : Les objets mobiles se déplacent de horizontalement et peuvent percuter le joueur. Pour réaliser
cela, nous aurons donc besoin de trois fonctions :
— dessine_droite : reçoit les attributs d’un objet mobile et la surface en argument. La fonction
doit dessiner un objet mobile qui va à droite sur la surface dans les coordonnées sauvegardés
dans ses attributs.
— dessine_gauche : reçoit les attributs d’un objet mobile et la surface en argument. La fonction
doit dessiner un objet mobile qui va à gauche sur la surface dans les coordonnées sauvegardés
dans ses attributs.
— dessine : reçoit les attributs d’un objet mobile et la surface en argument. En fonction de la vitesse
de déplacement de l’objet, la fonction appelle dessine_droite ou bien dessine_gauche
et passe les arguments nécessaires.
Comme pour le joueur vous pouvez utiliser des images pour les objet mobiles.
Teste : Comme pour le joueur, testez votre figure avec la fonction de test.
6 Module obstacle
Initialisation : Dans le module obstacle (obstacle.py), écrivez une fonction init qui reçoit une
liste de couples d’entiers en argument. La fonction doit initialiser le dictionnaire des attributs d’un
obstacle et le retourner. Pour l’instant, le seul attribut à initialiser est poly : une liste de couples d’entiers
représentant les coordonnées de chaque point du polygone qui représente l’obstacle (il s’agit de la liste
passée en argument à la fonction init).
Dessin : Encore dans le module obstacle, écrivez la fonction dessine qui reçoit les attributs d’un
obstacle et la surface en argument. La fonction doit dessiner un obstacle sur la surface qui correspond
aux points du polygone lui représentant.
Remarque : L’algorithme de collision (à réaliser dans l’étape 4 du projet) ne fonctionnera pas avec
des polygones concaves. Donc, si vous voulez que les bord de la rivière soient irréguliers, vous allez
devoir utiliser plusieurs polygones.
Teste : Testez quelques polygones.
7 Module scénario
Le scénario est l’objet qui correspondra à une phase du jeu. Chaque scénario contiendra un joueur,
plusieurs objets mobiles et plusieurs obstacles.
3
Initialisation : Dans le module scénario (scenario.py), écrivez la fonction init qui ne reçoit pas
d’argument. La fonction doit initialiser le dictionnaire des attributs du scénario et le retourner. Les attributs
à initialiser sont :
— joueur : valeur initiale : None. Contiendra le personnage du joueur.
— mobiles : valeur initiale : liste vide. Contiendra la liste de tous les objets mobiles du scénario.
— obstacle : valeur initiale : liste vide. Contiendra la liste de tous les obstacles du scénario.
Dessin : Encore dans le module scénario, écrivez la fonction dessine qui reçoit le dictionnaire des
attributs d’un scénario et la surface. La fonction doit dessiner touts les objets du scénario. C’est à dire,
le joueur, touts les objets mobiles et touts les obstacles.
Teste : Testez la création d’un scénario. Vous pouvez écrire une fonction de test comme suit :
def teste():
import pygame
import joueur
import mobile
import obstacle
import scenario
pygame.init()
surface = pygame.display.set_mode((640, 480))
joueur = joueur.init((330, 400))
e1 = mobile.init((100, 200), (-5, 0))
o1 = obstacle.init([[0, 0], [0, 50], [50, 480], [0, 480]])
o2 = obstacle.init([[590, 0], [640, 0], [640, 480], [590, 480]])
scen = scenario.init()
scen[’joueur’] = joueur
scen[’mobiles’] = [e1]
scen[’obstacles’] = [o1, o2]
scenario.dessine(scen, surface)
pygame.display.update()
Essayez également de changer les coordonnées des objets ainsi que d’en créer d’autres et vérifier que
tout s’affiche correctement.
8 Retour au module principal
À nouveau dans le module principal, écrivez la fonction init_scenario_01 qui ne reçoit pas d’argument.
La fonction doit initialiser un scénario et ensuite initialiser les objets du scenario et les ajouter
à ces attributs. Par exemple :
scen = scenario.init()
e1 = mobile.init((100, 100), (-5, 0))
e2 = mobile.init((200, 200), (5, 0))
scen[’mobiles’] = [e1, e2]
...
Remplissez le scénario avec un joueur, un obstacle de chaque coté de l’écran et plusieurs objets mobiles.
La fonction doit retourner le scenario initialisé.
Encore dans le module principal, remplissez l’item « Initialiser Scenario 1 »avec l’appel de la fonction
init_scenario_01. Ensuite, faite appel à la fonction dessine du scenario pour le dessiner.
4
8.1 Teste de l’Étape 1
Testez votre programme maintenant, l’ouverture doit s’afficher. Ensuite, si vous appuyez sur ENTRER,
le scénario doit s’afficher. Ensuite, si vous appuyez sur quitter, le programme termine.

 
Je suis arrivé au 5. mais je bloque sur celui la, si quelqu'un pouvait m'aider j'ai juste commencé comme sa :
 
def init(position_objet, (vit_horizontale, vit_verticale)):
    dict = {}
    dict["pos"]=[position_objet[0], position_objet[1]]
    dict["vit"]=[vit_horizontale[3], vit_verticale[3]]
    return dict
 
def dessine_droite(objet_mobile, surface):
 
 
 
def dessine_gauche(objet_mobile, surface):
 
 
 
def dessine(objet_mobiel, surface):

 
J'espère que vous pourrais m'aider, bonne soirée.


Message édité par neeo22 le 22-11-2015 à 19:39:31
Reply

Marsh Posté le 22-11-2015 à 19:24:33   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed