Problème programme c++
Résolu
dqsdqsfds
-
hjsldqdsq -
hjsldqdsq -
Bonjour,
Bonjour,
Salut, je commence le c++, et je ne vois pas pourquoi le programme ne fonctionne pas ; le debugger (Code::Blocks) ne dit rien, mais le programme "A cessé de fonctionné. Windows cherche une solution au programme" :
#include <iostream>
#include <cstdlib>
#include <string>
#include <ctime>
//system("cls");
using namespace std;
int main()
{
cout << "Bienvenue dans le systeme de combats" << endl << endl;
//Variables du joueur
int joueur_vie(100);
string joueur_arme;
int degats_arme;
string joueur_armure;
int defense_armure;
int potion_vie(30);
//Variables des monstres
//Monstre 1
string blob("Blob");
string description_blob("Un monstre visqueux et faible");
int vie_blob(20);
int degats_blob(5);
int defense_blob(1);
int taux_apparition_blob(30);
//Monstre 2
string loup("Loup");
string description_loup("Un animal feroce. Prenez garde !");
int vie_loup(50);
int degats_loup(10);
int defense_loup(2);
int taux_apparition_loup(20);
//Monstre 3
string goliath("Goliath");
string description_goliath("Un goliath de pierre. A beaucoup de vie.");
int vie_goliath(100);
int degats_goliath(3);
int defense_goliath(5);
int taux_apparition_goliath(10);
//Monstre 4
string lave("Monstre de lave");
string description_lave("Constitue de lave. Attention aux brûlures.");
int vie_lave(40);
int degats_lave(15);
int defense_lave(2);
int taux_apparition_lave(20);
int brulure(20);
//Monstre 5
string squelette("Squelette");
string description_squelette("Un gentil tas d'os.");
int vie_squelette(10);
int degats_squelette(10);
int defense_squelette(5);
int taux_apparition_squelette(20);
int esquive(50);
//Tableaux regroupants les monstres
string nom[5];
string description[5];
int vie[5];
int degats[5];
int defense[5];
nom[0] = blob;
nom[1] = loup;
nom[2] = goliath;
nom[3] = lave;
nom[4] = squelette;
description[0] = description_blob;
description[1] = description_loup;
description[2] = description_goliath;
description[3] = description_lave;
description[4] = description_squelette;
vie[0] = vie_blob;
vie[1] = vie_loup;
vie[2] = vie_goliath;
vie[3] = vie_lave;
vie[4] = vie_squelette;
degats[0] = degats_blob;
degats[1] = degats_loup;
degats[2] = degats_goliath;
degats[3] = degats_lave;
degats[4] = degats_squelette;
defense[0] = defense_blob;
defense[1] = defense_loup;
defense[2] = defense_goliath;
defense[3] = defense_lave;
defense[4] = defense_squelette;
//Armes
string epee_bois("Epee en bois");
int degat_bois(10);
string epee_fer("Epee en fer");
int degat_fer(15);
string lance_or("Lance d'or");
int degat_or(20);
string excalibur("Excalibur");
int degat_excalibur(30);
string error_404("Error 404");
int degat_error404(42);
//Defense
string armure_bois("Armure en bois");
int defense_bois(2);
string armure_fer("Armure en fer");
int defense_fer(5);
string armure_or("Armure en or");
int defense_or(8);
string error_403("Error 403");
int defense_error403(42);
//Variables joueur au départ du jeu
joueur_arme = epee_bois;
degats_arme = degat_bois;
joueur_armure = armure_bois;
defense_armure = defense_bois;
cout << "Votre aventure commence dans un petit chateau." << endl << "Bla bla bla" << endl << "Vous trouvez une epee en bois et une armure en bois" << endl << "Et vous decidez de partir a l'aventure" << endl << endl;
while (joueur_vie > 0)
{
int choix_du_monstre(0); //Choix du monstre
choix_du_monstre = rand() % 10;
int monstre;
if (choix_du_monstre < 3)
{
int monstre(0);
}
else if (choix_du_monstre < 5)
{
int monstre(1);
}
else if (choix_du_monstre < 6)
{
int monstre(2);
}
else if (choix_du_monstre < 8)
{
int monstre(3);
}
else
{
int monstre(4);
}
//Debut du combat
string nom_monstre;
string description_monstre;
int vie_monstre;
int degats_monstre;
int defense_monstre;
nom_monstre = nom[monstre];
description_monstre = description[monstre];
vie_monstre = vie[monstre];
degats_monstre = degats[monstre];
defense_monstre = defense[monstre];
}
cout << endl << "Vous avez perdu ... Dommage !" << endl;
return 0;
}
Voilà, merci en avance pour votre aide.
Bonjour,
Salut, je commence le c++, et je ne vois pas pourquoi le programme ne fonctionne pas ; le debugger (Code::Blocks) ne dit rien, mais le programme "A cessé de fonctionné. Windows cherche une solution au programme" :
#include <iostream>
#include <cstdlib>
#include <string>
#include <ctime>
//system("cls");
using namespace std;
int main()
{
cout << "Bienvenue dans le systeme de combats" << endl << endl;
//Variables du joueur
int joueur_vie(100);
string joueur_arme;
int degats_arme;
string joueur_armure;
int defense_armure;
int potion_vie(30);
//Variables des monstres
//Monstre 1
string blob("Blob");
string description_blob("Un monstre visqueux et faible");
int vie_blob(20);
int degats_blob(5);
int defense_blob(1);
int taux_apparition_blob(30);
//Monstre 2
string loup("Loup");
string description_loup("Un animal feroce. Prenez garde !");
int vie_loup(50);
int degats_loup(10);
int defense_loup(2);
int taux_apparition_loup(20);
//Monstre 3
string goliath("Goliath");
string description_goliath("Un goliath de pierre. A beaucoup de vie.");
int vie_goliath(100);
int degats_goliath(3);
int defense_goliath(5);
int taux_apparition_goliath(10);
//Monstre 4
string lave("Monstre de lave");
string description_lave("Constitue de lave. Attention aux brûlures.");
int vie_lave(40);
int degats_lave(15);
int defense_lave(2);
int taux_apparition_lave(20);
int brulure(20);
//Monstre 5
string squelette("Squelette");
string description_squelette("Un gentil tas d'os.");
int vie_squelette(10);
int degats_squelette(10);
int defense_squelette(5);
int taux_apparition_squelette(20);
int esquive(50);
//Tableaux regroupants les monstres
string nom[5];
string description[5];
int vie[5];
int degats[5];
int defense[5];
nom[0] = blob;
nom[1] = loup;
nom[2] = goliath;
nom[3] = lave;
nom[4] = squelette;
description[0] = description_blob;
description[1] = description_loup;
description[2] = description_goliath;
description[3] = description_lave;
description[4] = description_squelette;
vie[0] = vie_blob;
vie[1] = vie_loup;
vie[2] = vie_goliath;
vie[3] = vie_lave;
vie[4] = vie_squelette;
degats[0] = degats_blob;
degats[1] = degats_loup;
degats[2] = degats_goliath;
degats[3] = degats_lave;
degats[4] = degats_squelette;
defense[0] = defense_blob;
defense[1] = defense_loup;
defense[2] = defense_goliath;
defense[3] = defense_lave;
defense[4] = defense_squelette;
//Armes
string epee_bois("Epee en bois");
int degat_bois(10);
string epee_fer("Epee en fer");
int degat_fer(15);
string lance_or("Lance d'or");
int degat_or(20);
string excalibur("Excalibur");
int degat_excalibur(30);
string error_404("Error 404");
int degat_error404(42);
//Defense
string armure_bois("Armure en bois");
int defense_bois(2);
string armure_fer("Armure en fer");
int defense_fer(5);
string armure_or("Armure en or");
int defense_or(8);
string error_403("Error 403");
int defense_error403(42);
//Variables joueur au départ du jeu
joueur_arme = epee_bois;
degats_arme = degat_bois;
joueur_armure = armure_bois;
defense_armure = defense_bois;
cout << "Votre aventure commence dans un petit chateau." << endl << "Bla bla bla" << endl << "Vous trouvez une epee en bois et une armure en bois" << endl << "Et vous decidez de partir a l'aventure" << endl << endl;
while (joueur_vie > 0)
{
int choix_du_monstre(0); //Choix du monstre
choix_du_monstre = rand() % 10;
int monstre;
if (choix_du_monstre < 3)
{
int monstre(0);
}
else if (choix_du_monstre < 5)
{
int monstre(1);
}
else if (choix_du_monstre < 6)
{
int monstre(2);
}
else if (choix_du_monstre < 8)
{
int monstre(3);
}
else
{
int monstre(4);
}
//Debut du combat
string nom_monstre;
string description_monstre;
int vie_monstre;
int degats_monstre;
int defense_monstre;
nom_monstre = nom[monstre];
description_monstre = description[monstre];
vie_monstre = vie[monstre];
degats_monstre = degats[monstre];
defense_monstre = defense[monstre];
}
cout << endl << "Vous avez perdu ... Dommage !" << endl;
return 0;
}
Voilà, merci en avance pour votre aide.
A voir également:
- Problème programme c++
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
3 réponses
Je pense que tu ne sors jamais de la boucle
Vérifie que joueur_vie vaut bien 0 à un moment.
while (joueur_vie > 0)
Vérifie que joueur_vie vaut bien 0 à un moment.
Bonjour
Comme l'a dit Jithel, il semble que tu ne modifies jamais joueur_vie, donc tu ne sortiras jamais de ta boucle.
Mais ce n'est pas ce qui provoque "Le programme a cessé de fonctionner". Au contraire, ça l'empêcherait plutôt de cesser !
Le problème est que tu n'initialises pas ta variable monstre, donc une instruction comme
Tu crois que tu initialises monstre quand tu fais
Pour initialiser la variable dans les accolades, il suffit d'une affectation
Voir le 4e exemple du paragraphe IV-A qui correspond exactement à ton cas :
https://www.squalenet.net/fr/ti/tutorial_c/6-variables-type-declaration-portee.php5
Comme l'a dit Jithel, il semble que tu ne modifies jamais joueur_vie, donc tu ne sortiras jamais de ta boucle.
Mais ce n'est pas ce qui provoque "Le programme a cessé de fonctionner". Au contraire, ça l'empêcherait plutôt de cesser !
Le problème est que tu n'initialises pas ta variable monstre, donc une instruction comme
nom_monstre = nom[monstre];va chercher n'importe où dans la mémoire , et provoque un gros plantage.
Tu crois que tu initialises monstre quand tu fais
if (choix_du_monstre < 3) { int monstre(0); }Ce n'est pas vrai. Pas complètement faux, mais en fait tu déclares une nouvelle variable monstre que tu initialises à 0 et qui est détruite aussitôt, car la portée d'une variable est limitée au bloc dans lequel elle est déclarée , c'est à dire entre l'accolade { qui précède et l'accolade } correspondante. Cette variable n'existe qu'entre ces deux accolades, et cache la variable monstre définie à l'extérieur des accolades.
Pour initialiser la variable dans les accolades, il suffit d'une affectation
monstre = 0;, il ne faut pas redéfinir monstre.
Voir le 4e exemple du paragraphe IV-A qui correspond exactement à ton cas :
https://www.squalenet.net/fr/ti/tutorial_c/6-variables-type-declaration-portee.php5