Projet jeu à faire sans pygame ni tkinter [Résolu]

Signaler
Messages postés
1
Date d'inscription
mardi 27 avril 2021
Statut
Membre
Dernière intervention
27 avril 2021
-
Messages postés
15343
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 avril 2021
-
Bonjour,
J'ai un exercice à faire sur python, je dois créer un jeu, où le personnage doit se déplacer pour rejoindre sa maison. J'arrive à afficher la carte mais je n'arrive à afficher mon personnage sur la carte et je n'arrive pas à le faire bouger.
Voilà les consignes :
Sujet du projet
Vous contrôlez un personnage sur une carte qui doit rejoindre sa maison. Récupérez le maximum d’énergie pour y arriver, mais attention aux monstres !

Le but du projet est de réaliser un jeu permettant de :

1. d’initialiser une carte 10 × 20 dans lequel évoluera le personnage contrôlé par le joueur et sur laquelle seront placés des éléments comme des obstacles (rocher, arbre), des bonus (nourriture) et des malus (prédateur).

2. de permettre au joueur de déplacer son personnage sur cette carte et d’afficher la carte au fur et à mesure des déplacements. A chaque déplacement, le personnage perd 1 point d’énergie

3. de réaliser des actions en fonction de ce que le personnage rencontre sur la carte (incrémentation de l’énergie si source de nourriture ou perte massive d’énergie si prédateur, etc.)

Pour représenter une carte de 10 × 20 nous allons utiliser un tableau à 2 dimensions, soit une liste de 10 listes comportant chacune 20 éléments. On appellera cette variable liste de liste : carte.

Pour représenter la position du personnage, nous allons utiliser une liste de deux éléments correspondant aux coordonnées x et y. On appellera cette variable liste de liste : coordonnees_perso.

Carte
Initialisation de la carte
Pour représenter une carte de 10 × 20 nous allons utiliser un tableau à 2 dimensions, soit une liste de 10 listes comportant chacune 20 éléments. Chacune des cases comportera une chaîne de caractère représentant le code de ce qui se trouve à cet emplacement :

S1, S2, S3 : du sol (S1 : de la terre, S2 : du sable, S3 : de la boue)

O1, O2, O3 : un obstacle (O1 : un rocher, O2 : un arbre, O3 : un trou)

N1, N2, N3 : de la nourriture (N1 : des feuilles, N2 : une pomme, N3 : une framboise)

P1, P2, P3 : un prédateur (P1 : un rat, P2 : un serpent, P3 : un ours)

M : la maison à rejoindre

Initialisez une carte à votre convenance en y plaçant du sol, des obstacles, de la nourriture et des monstres.

Affichage de la carte
Créer une fonction afficheCartePourDebug prenant en argument la carte (variable carte) ainsi que les coordonnées du personnage (variable coordonnees_perso).Cette fonction affiche telle quelle la carte à l’écran ainsi que les coordonnées du personnage. Elle vous servira pendant tout le temps de développement de votre programme. Gardez-la même lorsque votre programme fonctionnera, elle pourra toujours être appelée pour débugguer ou lors de la soutenance.

Créer une fonction afficheCarte prenant en argument la carte (variable carte) ainsi que les coordonnées du personnage (variable coordonnees_perso). Cette fonction affiche la carte à l’écran en remplaçant les valeurs par des symboles plus représentatifs que vous choisirez (par exemple , pour l’herbe, - pour le sable, m pour un monstre N1, M pour un monstre N2, …). Lors de l’affichage de la carte, à l’endroit correspondant aux coordonnées actuelles du personnage, vous afficherez un X (ou tout autre symbole représentant le personnage) à la place de la case correspondante.

Le personnage et son déplacement sur la carte
Il s’agit de déplacer le personnage sur la carte. Initialement, le personnage se trouve à la position (1, 1).

Créer une fonction deplacePersonnage qui prend deux arguments : la carte (carte), et les coordonnées du personnage (coordonnées_perso). Cette fonction :

demande à l’utilisateur la direction vers laquelle déplacer le personnage (n=Nord, s=Sud, e=Est, o=Ouest) ou q (pour quitter le jeu). Si q est tapé, la fonction retournera -1000

Le tableau de coordonnées coordonnees_perso sera réactualisé en fonction du déplacement du personnage:

en tenant compte des obstacles du tableau : le personnage ne peut pas passer à travers un obstacle. Il reste sur place.

le personnage ne peut pas aller au-delà d’un bord de la carte, il reste sur place

dans tous les autres cas, le personnage se déplace dans la direction souhaitée par le joueur.

la carte est actualisée suivant le type de case sur laquelle s’est arrêté le personnage :

le sol : pas de changement sur cette case

un obstacle, le personnage n’a pas pu aller sur cette case qui reste inchangée

de la nourriture : la nourriture disparait (puisque le joueur la prend) et la case devient sol

un prédateur : le prédateur reste, pas de changement sur cette case.

la fonction retourne la valeur en terme de perte ou gain d’énergie de la case sur laquelle le joueur s’était arrêté ;

pour le sol : suivant le sol sur lequel le personnage se déplace, il perd 1, 2 ou 3 points d’énergie, la fonction retourne donc -1, -2 ou -3.

pour la nourriture: suivant la nourriture sur laquelle le personnage est tombé, il gagne 5, 10 ou 15 points d’énergie, la fonction retourne donc 5, 10 ou 15

pour les prédateurs: suivant le prédateur sur lequel le personnage est tombé, il perd 5, 10 ou 15 points d’énergie, la fonction retourne donc -5, -10 ou -15

si le personnage n’a pu se déplacer à cause d’un obstacle ou du bord, il n’y a ni gain ni perte d’énergie, et la fonction retourne 0

dans le cas où le personnage est arrivé à la case maison, la valeur 1000 est retournée

Déplacement
En appelant les fonctions deplacePersonnage et afficheCarte, le joueur peut déplacer son personnage . La carte éventuellement mise à jour et avec la nouvelle position du joueur doit être réaffichée à chaque fois. Tant que le personnage n’a pas rejoint sa maison et que le personnage n’est pas mort (énergie tombé à 0), le joueur continuera à déplacer son personnage.
Merci d'avance pour votre aide.

1 réponse

Messages postés
15343
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 avril 2021
842