Comment créer un labyrinth console en c++ ? [Résolu]

jirasengan - 11 mai 2013 à 01:26 - Dernière réponse : cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 18 avril 2018 Dernière intervention
- 20 mai 2013 à 15:43
Bonjour à tous,

pas obliger de lire
Ce post en fera sans doute rire beaucoup mais cela fait quelque semaines que je cherche en vain comment faire !
Je débute en C++ et j'ai un niveau très lamentable ...
Le truc c'est que je suis en terminale avec une spé informatique(plus découverte qu'autre chose) et j'ai comme projet, entre autre, la création d'un labyrinthe même très simple sur console en c++.
Seulement après m'être occupé de la partie web et graphique de mon projet, je me suis rendu compte qu'il était très difficile de concevoir un jeu comme ça avec les maigres connaissances acquises lors de cette année.
J'ai chercher des codes sources ici afin de comprendre comment réaliser mon jeu le plus simplement mais c'était toujours très compliqué ou en POO.

La question :
Pouvez vous m'expliquer ou me montrer comment créer un labyrinthe sur console en c++ le plus simplement possible ?
-le déplacement
-placer les murs et ne pas les traverser



je pensais à
1 joueur = 1 caractère
1 bloc de mur = 1 autre caractère (à positionner -> la structure)
1 point de départ et d'arriver par un caractère de couleur

J'espère ne pas vous déranger et ne pas passer pour un imbécile profitant de votre immense savoir ,
Merci

PS: n'hésitez pas à m'envoyer lire des codes sur ce site, j'ai peut être louper des codes se rapprochant de ce que je veux faire
Afficher la suite 

5 réponses

Répondre au sujet
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 18 avril 2018 Dernière intervention - 11 mai 2013 à 14:49
+3
Utile
Bonjour.

pas obliger de lire
Ce post en fera sans doute rire beaucoup mais cela fait quelque semaines que je cherche en vain comment faire !
Je débute en C++ et j'ai un niveau très lamentable ...

Tout d'abord, lorsque tu poses une question, ne te rabaisse jamais. C'est un forum d'échange et de partage, ceux qui viennent y poser des questions ont forcément des difficultés sur un sujet donné (sinon ils ne viendraient pas poser des questions :p). Pose simplement ta question, comme tu l'as très bien fait juste après.

Pouvez vous m'expliquer ou me montrer comment créer un labyrinthe sur console en c++ le plus simplement possible ?

Tout dépend de ce que tu veux faire. Si c'est créer un labyrinthe aléatoirement, il existe des algorithmes, mais à mon sens encore un peu trop difficile pour ton niveau actuel. Si c'est juste charger des labyrinthes à partir d'un fichier que tu as écrit, alors ça devrait être faisable, voir même avoir des labyrinthes fixes prédéfinis.

Il te faut les outils suivants:
- Un tableau à double dimension de type caractère (tu peux commencer par un tableau à taille fixe, c'est plus facile. Néanmoins, peut être qu'on t'impose une taille choisissable ?).
- Ce tableau contient dans chaque case un caractère. Un caractère représente un élément (joueur, mur, point départ, point arrivé).
- Une fois ce tableau construit, pour te déplacer, il faut demander une position (donc deux coordonnés, X et Y).
- A partir des coordonnés données, tu regardes si ça t'emmènes en dehors du labyrinthe ou sur un mur, auquel cas tu refuses le mouvement. Sinon, tu transformes la case choisie en case joueur, et la case joueur en case vide.
- A toi de voir si tu veux faire des labyrinthes fixes (plus facile) ou alors les charger à partir d'un fichier (un peu plus difficile).
- Voilà pour le principe, fais ces actions dans l'ordre petit à petit, et revient poster tes avancées que l'on puisse t'aider et te conseiller.

Ce que tu ne peux pas faire:
- Déplacement avec des touches du clavier. Ce n'est ni du C, ni du C++. Il faudra forcément passer par des API ou des bibliothèques externes. Je te conseille tout simplement de ne pas te compliquer la vie et de demander à chaque tour des coordonnés à l'utilisateur. Ce n'est pas extrêmement compliqué, mais je te déconseille de te focaliser là dessus.
- Les couleurs. Ce n'est pas non plus prévu par le C ou le C++. Les couleurs sont des attributs du terminal. Chaque terminal à son propre jeu de couleur (et sa manière de faire). Ce qui fonctionne pour l'un, ne fonctionnera pas forcément pour l'autre. Je t'invite, là aussi, à ne pas trop te prendre la tête dessus. Un simple caractère différent pour le point d'arrivé, le joueur, et le point de départ sera amplement suffisant.

Reprécise bien ce qui est attendu de ta part, afin que l'on puisse t'aider au mieux (j'ai du pas mal supposer).

Bonne chance.
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cptpingu
jirasengan - 14 mai 2013 à 21:49
0
Utile
bonjour,

pourriez vous s'il te plais être plus détaillé dans tes explication car c'est assez flou pour moi particulièrement sur le tableau à double dimensionnel
merci


Believe
Commenter la réponse de jirasengan
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 18 avril 2018 Dernière intervention - 14 mai 2013 à 22:38
0
Utile
pourriez vous s'il te plais être plus détaillé dans tes explication car c'est assez flou pour moi particulièrement sur le tableau à double dimensionnel


Si tu ne sais pas ce qu'est un tableau à double dimension, alors ce n'est pas un problème technique, mais un problème de connaissance que tu as.
Je ne peux pas résoudre ce souci, il faut que tu fasses la démarche de lire des cours et des tutoriaux sur les bases du langage C++.

Je peux t'aider à améliorer une architecture que tu proposerais, ou corriger ton code, mais pour tout ce qui est lacune, je t'invite à récupérer des cours sur le net (extrêmement facile à trouver sur ton moteur de recherche préféré).

Une fois que tu seras à l'aise avec cette notion de tableau à double dimension, ce qu'il faudra faire te sera limpide.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
jirasengan - 20 mai 2013 à 15:34
0
Utile
J'ai un problème lorsque je veux commencer il faut que je fasse un mouvement vers la droite et je ne peux pas gagner
voici mon code
//labyrinthe
//
#include
#include
#include <cstdlib>
#include <stdlib.h>
using namespace std;
int main()
{
//variable
int e(0), d(0); //pour crée le labyrinthe
int g (0), c(0), h(0), s(0); //les entrer pour le déplacement
int o(0),a(1); //la position du "personnage"
int z(0), y(1); //la position de la destination
int m(0); //le choix pour le menu
int x(0); //variable de la boucle pour le jeu
int tableau1[10][10] = {{0,3,2,2,2,2,2,2,2,0},
{0,1,0,1,0,1,1,1,1,0},
{0,1,1,1,1,1,0,1,0,0},
{0,1,0,1,1,1,0,1,1,0},
{0,2,1,2,1,1,2,1,2,0},
{0,1,1,1,0,1,0,1,1,0},
{0,1,2,1,1,1,0,1,0,0},
{0,2,1,1,0,1,1,1,1,0},
{0,1,1,2,0,2,1,0,1,0},
{0,2,2,2,2,2,2,2,1,0}};
//corps du programme
cout<<"\n";
cout<<"************************************"<<endl;
cout<<"* *"<<endl;
cout<<"* labyrhinthe *"<<endl;
cout<<"* *"<<endl;
cout<<"************************************"<<endl<<endl;
do
{
if (x==0)
{
cout<<" MENU\n";
cout<<"1. jouer\n";
cout<<"2. regle\n";
cout<<"3. quitter\n\n";
cin>>m;
system("CLS");
}
if (m==1)
{
cout<<"\n";
while (d<10)
{
while (e<10)
{
if(tableau1[d][e]==0)
{
cout<<" | ";
}
else if (tableau1[d][e]==1)
{
cout<<" ";
}
else if (tableau1[d][e]==2)
{
cout<<"---";
}
else if (tableau1[d][e]==3)
{
cout<<" 0 ";
}
if (e==9)
{
cout<<" "<<endl;
}
e++;
}
d++;
e=0;
cout<<" "<<endl;
}
cout <<"deplacement vers la gauche de : ";
cin>>g;
cout<<"\n";
cout <<"deplacement vers la droite de : ";
cin>>c;
cout<<"\n";
cout <<"deplacement vers le haut de : ";
cin>>h;
cout<<"\n";
cout <<"deplacement vers le bas de : ";
cin>>s;
cout<<"\n";
y=o+c-g;
z=a+s-h;
if (tableau1[z][y]==1)
{
tableau1[o][a]=1;
tableau1[z][y]=3;
a=z;
o=y;
}
d=0;
e=0;
x=2;
system("CLS");
}
else if (m==2)
{
cout<<" regle\n\n";
cout<<"le but du jeu est de sortir du labyrinthe pour ce faire il vous est demande une certain quantité de deplacement ";
cout<<"vers la droite, la gauche, le haut ou le bas. Nous vous conseillons d'enter de petit valeur pour vous aider et ";
cout<<"de faire les déplacement droite, gauche etc un part un. Votre personnage est représenté par un 0 et la sortie ";
cout<<"est en bas à droite.Si vous entrez une coordonne avec un mur alors il y aura pas de mouvement ";
system("pause");
system("CLS");
}
else if (m==3)
{
tableau1[10][9]=3;
}
else
{
cout<<"ERRUER D'ENTRER";
system("pause");
}
} while (tableau1[10][9]!=3);
cout<<" VOUS AVEZ GAGNE\n";
system("pause");
return 0;
}

merci de votre aide
Commenter la réponse de jirasengan
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 18 avril 2018 Dernière intervention - 20 mai 2013 à 15:43
0
Utile
Plusieurs soucis, avant de pouvoir t'aider:
- Utilise des balises de code (troisième icone en partant de la droite), et indente ton code. Pas de balise == pas de réponse.
- A quoi correspond tes chiffres dans ton labyrinthe ? (0, 1, 2, 3 ?)

Quelques conseils:
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Pas besoin de stdlib, ni de iomanip d'ailleurs.
- Découpe ton code en petites fonctions.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.