Nicool_
Motherfucker
Je crois que c'est à cause du using namespace std; qu'il ne faut pas mettre de .h ! En fait il fait appel aux noms de la bibliothèque standart
Ben peut être sous Visual... Sous Builder, il n'y a pas de problème. Par contre, il est vrai que je n'ai jamais configuré VC comme je l'ai fait avec Borland.Nicool a dit:Je crois que c'est à cause du using namespace std; qu'il ne faut pas mettre de .h ! En fait il fait appel aux noms de la bibliothèque standart
// ____________
//=== ( les entêtes ) ===
#include <iostream>
#include <conio.h>
#include "Player.h"
using namespace std;
// ______________
//=== ( prg principal ) ===
int main(int argc, char* argv[])
{
cout << "Nous allons créer un joueur :";
cout << "\n====================================================\n\n";
Gamerz Bourne;
cout << "Vous venez de créer un Gamerz, bravo !\n"
"Voici ces caractéristiques :\n";
Bourne.afficherJoueur();
cout << "\n====================================================\n\n";
cout << "Nous allons vous créer en partant de l'objet de base\n";
Bourne.modifierjoueur();
cout << "\n\n\nVoici VOS caractéristiques :\n";
Bourne.afficherJoueur();
puts("\nAppuyez sur une touche pour terminer");
getch();
return 0;
}
//---------------------------------------------------------------------------
// ________________________________
//=== ( Déclaration de la classe Gamerz ) ===
// la classe qui "instancie"/crée des objets
class Gamerz
{
private:
// les infos persos d'un joueur
char *nick;
int age, skill;
public:
// constructeur : il initialise l'objet
Gamerz();
// pour afficher les infos d'un joueur
void afficherJoueur();
// pour modifier les infos d'un joueur
void modifierjoueur();
};
// ____________
//=== ( les entêtes ) ===
#include "Player.h"
#include <iostream.h>
// ___________________________
//=== ( Construction / Destruction ) ===
Gamerz::Gamerz()
{
nick = "Bourne";
age = 34;
skill = 3;
}
void Gamerz::afficherJoueur()
{
cout << "\n";
cout << nick << ", " << age << " ans, et son skill est : " << skill;
}
void Gamerz::modifierjoueur()
{
// on initialise la chaîne de caractères
nick = "";
// dialogue Ecran <-> Utilisateur
cout << "\n";
cout << "Entrez votre Nick : ";
cin >> nick;
cout << "Entrez votre Age : ";
cin >> age;
cout << "Entrez votre skill (entier 1 - 3) : ";
cin >> skill;
// petite vérification sur le skill
while ((skill <= 0) || (skill >= 4))
{
cout << "Entrez un skill correct !\nskill (1 - 3) : ";
cin >> skill;
}
}
# include <iostream.h>
# include <stdlib.h>
# include <time.h>
const int taille = 152;
typedef int matrice3D [3] [taille] [taille];
void bombe ( matrice3D, int, int, int );
void matrice_solution ( matrice3D, int, int, int );
void placement ( matrice3D, int, int );
void zero ( matrice3D, int, int );
void affiche ( matrice3D, matrice3D, int, int );
void rien ( matrice3D, int, int );
// note : l = navigateur du vecteur, h = navigateur de ligne, k = navigateur de colonne
// j'ai créé une matrice de 2 cases plus grande que celle demandée par l'utilisateur,
// cela permet d'incrémenter tout autour des bombes de manière aisée. Et aussi de ne pas
// devoir a chaque fois décrémenter de 1 la valeur entrée par l'utilisateur ( sauf pour le
// vecteur )
int main ( )
{
char rep; // déclaration d'une variable de type charactère
int nbr , longueur, largeur, l2, h2, k2, cpt=0, cptX=0, q;
bool die = false, test = false;
matrice3D M3D, M3D2; // création de 2 matrice3D
cout << " !!!! Bienvenue dans le fabuleux DEMINEUR 3D tm !!!! " << endl << endl;
cout << "Entrez le nombre de bombes souhaitees : " << endl << endl;
cin >> nbr;
cout << "Entrez le nombre de lignes souhaitees (max 150): " << endl << endl;
cin >> longueur;
cout << "Entrez le nombre de colonnes souhaitees (conseil : max 19) : " << endl << endl;
// si on entre une valeur supérieur à 19, la matrice sera affiché sur plusieurs ligne -> illisible
cin >> largeur;
cout << endl << endl;
zero ( M3D, longueur, largeur ); // initialisation de ma matrice solution à 0
matrice_solution ( M3D, longueur, largeur, nbr ); // crée les valeurs de ma matrice solution
rien ( M3D2, longueur, largeur ); // initialise ma matrice de jeu à inconnue partout ( 555 )
affiche ( M3D, M3D2, longueur, largeur ); // affiche la matrice jeu
while ( die == false && test == false ) // dès qu'une case retournée est une bombe ou que
// le nombre de drapeaux égale le nbr de bombe et
// sont correctement placés
{
cout << "Entrez le numero de la grille : " << endl;
cin >> l2;
l2 = l2-1; //permet d'entrer des valeurs comme 1, 2 ou 3 car vecteur est de 0 à 2
cout << "Entrez le numero de la ligne : " << endl;
cin >> h2;
cout << "Entrez le numero de la colonne : " << endl;
cin >> k2;
cout << "Cette case est-elle une bombe ? ( y/n )" << endl;
cin >> rep;
if ( rep == 'y' ) // si c'est une bombe on initialise la case a drapeau ( 444 )
{
M3D2 [l2] [h2] [k2] = 444;
cptX ++; // et on incrémente le compteur drapeau de 1
}
else if ( M3D [l2] [h2] [k2] == 666 ) // si la case retournée est une bombe
{
M3D2 [l2] [h2] [k2] = 777; // init a 777 ( = erreur )
die = true; // et die passe à true
}
else
M3D2 [l2] [h2] [k2] = M3D [l2] [h2] [k2]; // sinon la case retournée prend
// la valeur de la case de la matrice solution
if ( cptX >= nbr ) // test permettant de voir si les drapeaux ont été correctement
// placé, et ce test ne commencera qu'après un certain nombre de
{ // de drapeaux placés
for ( int l1=0; l1 < 3; l1++ )
{
for ( int h1=1; h1 < longueur+1; h1++ )
{
for ( int k1=1; k1 < largeur+1; k1++ )
{
if ( M3D [l1] [h1] [k1] == 666 ) // si une case de la matrice solution est une
{ // bombe
if ( M3D2 [l1] [h1] [k1] == 444 ) // et si la case de la matrice jeu est un
cpt++; // drapeau, on augmente le compteur de 1.
}
}
}
}
}
if ( cpt == nbr ) // si le nbr de drapeau = le nbr de bombe
test = true; // test passe à true et c'est gagné
affiche ( M3D, M3D2, longueur, largeur ); // et on affiche a chaque tour la matrice
} // jeu modifié
if ( die == true ) // si la boucle s'est arreté car die est passé à true
{
cout << "Dommage, essayez encore une fois..." << endl; // message d'encouragement
affiche ( M3D, M3D, longueur, largeur ); // affichage de la solution
}
else if ( test == true ) // si la boucle s'est arreté car test est passé à true
cout<<"BRAVO, vous avez GAGNE !!! reessayez avec plus de bombes... ;-)"<< endl;
cout << "Appuyer sur une touche pour quitter :" << endl;
cin >> q;
return 0;
}
void matrice_solution ( matrice3D M3D, int longueur, int largeur, int nbr )
{
bombe ( M3D, nbr, longueur, largeur ); // appel de la fonction bombe
placement ( M3D, longueur, largeur ); // appel de la fonction placement
}
void zero ( matrice3D M3D, int longueur, int largeur )
// initialise toute la matrice à zéro
{
for ( int h=0; h <= (longueur+2); h++ )
{
for ( int k=0; k <= (largeur+2); k++ )
{
M3D [0] [h] [k] = 0;
M3D [1] [h] [k] = 0;
M3D [2] [h] [k] = 0;
}
}
}
void bombe ( matrice3D M3D, int nbr, int longueur, int largeur )
// fonction random
{
unsigned seed = time(NULL);
srand(seed);
for ( int cpt=0; cpt < nbr; ) // le compteur ne peut pas etre supérieur au nbr de bombe
{
int l, h, k;
l = rand()%3; // l = navigateur de vecteur ( de 0 à 2 )
h = 1+rand()%longueur; // h = navigateur de lignes ( de 1 à longueur )
k = 1+rand()%largeur; // k = navigateur de colonnes ( de 1 à largeur )
if ( M3D [l] [h] [k] != 666 ) // si la case n'est pas encore une bombe
{
M3D [l] [h] [k] = 666; // cette case devient une bombe
cpt++; // et on augmente compteur de 1
}
}
}
void placement ( matrice3D M3D, int longueur, int largeur )
// incrémentation des cases autour des bombes
{
for ( int l=0; l < 3; l++ )
{
if ( l == 0 ) // si on est dans la première grille
{
for ( int h=1; h < (longueur+1); h++ )
{
for ( int k=1; k < (largeur+1); k++ )
{
if ( M3D [0] [h] [k] == 666 )
{
for ( int l1 = l; l1 < (l+2); l1++ )
{
for ( int h1 = (h-1); h1 < (h+2); h1++ )
{
for ( int k1 = (k-1); k1 < (k+2); k1++ )
// incrémentation tout autour de la bombe et dans la grille suivante aussi
{
if ( M3D [l1] [h1] [k1] != 666 )
M3D [l1] [h1] [k1] +=1;
}
}
}
}
}
}
}
else if ( l == 1 ) // si on est dans la 2eme grille
{
for ( int h=1; h < (longueur+1); h++ )
{
for ( int k=1; k < (largeur+1); k++ )
{
if ( M3D [1] [h] [k] == 666 )
{
for ( int l1 = (l-1); l1 < (l+2); l1++ )
{
for ( int h1 = (h-1); h1 < (h+2); h1++ )
{
for ( int k1 = (k-1); k1 < (k+2); k1++ )
// incrémentation tout autour de la bombe et dans la grille suivante et précédante
{
if ( M3D [l1] [h1] [k1] != 666 )
M3D [l1] [h1] [k1] += 1;
}
}
}
}
}
}
}
else if ( l == 2 ) // si on est dans la 3eme grille
{
for ( int h=1; h < (longueur+1); h++ )
{
for ( int k=1; k < (largeur+1); k++ )
{
if ( M3D [2] [h] [k] == 666 )
{
for ( int l1 = ( l-1 ); l1 < (l+1); l1++ )
{
for ( int h1 = (h-1); h1 < (h+2); h1++ )
{
for ( int k1 = (k-1); k1 < (k+2); k1++ )
// incrémentation tout autour de la bombe et dans la grille précédante
{
if ( M3D [l1] [h1] [k1] != 666 )
M3D [l1] [h1] [k1] += 1;
}
}
}
}
}
}
}
}
}
void affiche ( matrice3D M3D, matrice3D M3D2, int longueur, int largeur )
// permet d'afficher la matrice et aussi de faire de jolies petites cases autour ...
{
int cpt;
for ( int l=0; l < 3; l++ ) // permet d'afficher la matrice de manière lisible
{
cout << l+1 << "." << endl << endl;
for ( cpt = 1; cpt < (largeur+1); cpt++ )
if ( cpt <= 9 )
cout << " " << cpt << " ";
else if ( cpt <= 99 )
cout << " " << cpt << " ";
cout << endl;
for ( cpt = 1; cpt < (largeur+1); cpt++ )
cout << "----";
cout << endl;
for ( int h=1; h < (longueur+1); h++ )
{
for ( int k=1; k < (largeur+1); k++ )
{
if ( M3D2 [l] [h] [k] == 444 ) // 444 = drapeau
cout << " " << "x" << " ";
else if ( M3D2 [l] [h] [k] == 555 ) // 555 = inconnue
cout << " " << "?" << " ";
else if ( M3D2 [l] [h] [k] == 666 ) // 666 = BOMBE
cout << " " << "B" << " ";
else if ( M3D2 [l] [h] [k] == 777 ) // 777 = erreur
cout << " " << "!" << " ";
else if ( M3D2 [l] [h] [k] <= 9 )
cout << " " << M3D2 [l] [h] [k] << " ";
else
cout << " " << M3D2 [l] [h] [k];
cout << "|";
}
cout << " " << h;
cout << endl;
for ( int k=1; k < (largeur+1); k++ )
cout << "----";
cout << endl;
}
cout << endl;
}
}
void rien ( matrice3D M3D2, int longueur, int largeur )
// initialise une matrice à la valeur 555 = inconnue = ?
{
for ( int h=0; h <= (longueur+2); h++ )
{
for ( int k=0; k <= (largeur+2); k++ )
{
M3D2 [0] [h] [k] = 555;
M3D2 [1] [h] [k] = 555;
M3D2 [2] [h] [k] = 555;
}
}
}
ben le puts c comme un printf avec le \n inclus...THiBOo a dit:Pas mal maverick
Suis aussi en info ( à l'ULB ) mais juste un truc pour ton prog de base là que tu lui a écris ...
le puts il sert à quoi ?
et le getchar() je connais, mais il ne sert à rien si tu fais un cout << " blaalalablabla " a la fin ...
google -> C++ code sourceAcTAruS a dit:Salut est ce que qqun peut me dire ou on peut trouver des programme en C++ pour que je puisse tester mon compilateur Visual C++. Si vous connaissez un site...
Ou alors donner m'en un svp
Merci
Meme un bête programme c bon
Je compte sur vous Merci :wink: :wink:
THiBOo a dit:J'étais encore jeune et inexpérimenté j'avais meme pas fais de classe :shock: :?
C'est dire mais bon now je dois faire un labyrinthe avec des téléporteurs a la place des murs et des clés, jusque là c'est simple, mais en plus je dois créer un algo qui me sorte de ce labyrinthe par lui meme en récupérant toutes les clés ... backtracking power quoi
déso mais ya une erreur a ton programme et la trouve aps non plusTHiBOo a dit:Pas mal maverick
Suis aussi en info ( à l'ULB ) mais juste un truc pour ton prog de base là que tu lui a écris ...
le puts il sert à quoi ?
et le getchar() je connais, mais il ne sert à rien si tu fais un cout << " blaalalablabla " a la fin ...
en général le prog de base c ça :
#include <iostream.h>
void main ()
{
int q;
cout << "Hello world" << endl;
cout << "Appuyez sur une touche pour quitter";
cin >> q;
}
mais bon ça change rien en fait
Sinon pour un bon compilo pas lourd et assez bon, avec un bon débugger, c'est DEV C++
Le mieux reste tjr Linux et son excellent GCC
Et pour un prog assez simple en voici un ( mav t fou de lui donner des classe déjà si il y connait rien c'est chaud :shock: )
Code:# include <iostream.h> # include <stdlib.h> # include <time.h> const int taille = 152; typedef int matrice3D [3] [taille] [taille]; void bombe ( matrice3D, int, int, int ); void matrice_solution ( matrice3D, int, int, int ); void placement ( matrice3D, int, int ); void zero ( matrice3D, int, int ); void affiche ( matrice3D, matrice3D, int, int ); void rien ( matrice3D, int, int ); // note : l = navigateur du vecteur, h = navigateur de ligne, k = navigateur de colonne // j'ai créé une matrice de 2 cases plus grande que celle demandée par l'utilisateur, // cela permet d'incrémenter tout autour des bombes de manière aisée. Et aussi de ne pas // devoir a chaque fois décrémenter de 1 la valeur entrée par l'utilisateur ( sauf pour le // vecteur ) int main ( ) { char rep; // déclaration d'une variable de type charactère int nbr , longueur, largeur, l2, h2, k2, cpt=0, cptX=0, q; bool die = false, test = false; matrice3D M3D, M3D2; // création de 2 matrice3D cout << " !!!! Bienvenue dans le fabuleux DEMINEUR 3D tm !!!! " << endl << endl; cout << "Entrez le nombre de bombes souhaitees : " << endl << endl; cin >> nbr; cout << "Entrez le nombre de lignes souhaitees (max 150): " << endl << endl; cin >> longueur; cout << "Entrez le nombre de colonnes souhaitees (conseil : max 19) : " << endl << endl; // si on entre une valeur supérieur à 19, la matrice sera affiché sur plusieurs ligne -> illisible cin >> largeur; cout << endl << endl; zero ( M3D, longueur, largeur ); // initialisation de ma matrice solution à 0 matrice_solution ( M3D, longueur, largeur, nbr ); // crée les valeurs de ma matrice solution rien ( M3D2, longueur, largeur ); // initialise ma matrice de jeu à inconnue partout ( 555 ) affiche ( M3D, M3D2, longueur, largeur ); // affiche la matrice jeu while ( die == false && test == false ) // dès qu'une case retournée est une bombe ou que // le nombre de drapeaux égale le nbr de bombe et // sont correctement placés { cout << "Entrez le numero de la grille : " << endl; cin >> l2; l2 = l2-1; //permet d'entrer des valeurs comme 1, 2 ou 3 car vecteur est de 0 à 2 cout << "Entrez le numero de la ligne : " << endl; cin >> h2; cout << "Entrez le numero de la colonne : " << endl; cin >> k2; cout << "Cette case est-elle une bombe ? ( y/n )" << endl; cin >> rep; if ( rep == 'y' ) // si c'est une bombe on initialise la case a drapeau ( 444 ) { M3D2 [l2] [h2] [k2] = 444; cptX ++; // et on incrémente le compteur drapeau de 1 } else if ( M3D [l2] [h2] [k2] == 666 ) // si la case retournée est une bombe { M3D2 [l2] [h2] [k2] = 777; // init a 777 ( = erreur ) die = true; // et die passe à true } else M3D2 [l2] [h2] [k2] = M3D [l2] [h2] [k2]; // sinon la case retournée prend // la valeur de la case de la matrice solution if ( cptX >= nbr ) // test permettant de voir si les drapeaux ont été correctement // placé, et ce test ne commencera qu'après un certain nombre de { // de drapeaux placés for ( int l1=0; l1 < 3; l1++ ) { for ( int h1=1; h1 < longueur+1; h1++ ) { for ( int k1=1; k1 < largeur+1; k1++ ) { if ( M3D [l1] [h1] [k1] == 666 ) // si une case de la matrice solution est une { // bombe if ( M3D2 [l1] [h1] [k1] == 444 ) // et si la case de la matrice jeu est un cpt++; // drapeau, on augmente le compteur de 1. } } } } } if ( cpt == nbr ) // si le nbr de drapeau = le nbr de bombe test = true; // test passe à true et c'est gagné affiche ( M3D, M3D2, longueur, largeur ); // et on affiche a chaque tour la matrice } // jeu modifié if ( die == true ) // si la boucle s'est arreté car die est passé à true { cout << "Dommage, essayez encore une fois..." << endl; // message d'encouragement affiche ( M3D, M3D, longueur, largeur ); // affichage de la solution } else if ( test == true ) // si la boucle s'est arreté car test est passé à true cout<<"BRAVO, vous avez GAGNE !!! reessayez avec plus de bombes... ;-)"<< endl; cout << "Appuyer sur une touche pour quitter :" << endl; cin >> q; return 0; } void matrice_solution ( matrice3D M3D, int longueur, int largeur, int nbr ) { bombe ( M3D, nbr, longueur, largeur ); // appel de la fonction bombe placement ( M3D, longueur, largeur ); // appel de la fonction placement } void zero ( matrice3D M3D, int longueur, int largeur ) // initialise toute la matrice à zéro { for ( int h=0; h <= (longueur+2); h++ ) { for ( int k=0; k <= (largeur+2); k++ ) { M3D [0] [h] [k] = 0; M3D [1] [h] [k] = 0; M3D [2] [h] [k] = 0; } } } void bombe ( matrice3D M3D, int nbr, int longueur, int largeur ) // fonction random { unsigned seed = time(NULL); srand(seed); for ( int cpt=0; cpt < nbr; ) // le compteur ne peut pas etre supérieur au nbr de bombe { int l, h, k; l = rand()%3; // l = navigateur de vecteur ( de 0 à 2 ) h = 1+rand()%longueur; // h = navigateur de lignes ( de 1 à longueur ) k = 1+rand()%largeur; // k = navigateur de colonnes ( de 1 à largeur ) if ( M3D [l] [h] [k] != 666 ) // si la case n'est pas encore une bombe { M3D [l] [h] [k] = 666; // cette case devient une bombe cpt++; // et on augmente compteur de 1 } } } void placement ( matrice3D M3D, int longueur, int largeur ) // incrémentation des cases autour des bombes { for ( int l=0; l < 3; l++ ) { if ( l == 0 ) // si on est dans la première grille { for ( int h=1; h < (longueur+1); h++ ) { for ( int k=1; k < (largeur+1); k++ ) { if ( M3D [0] [h] [k] == 666 ) { for ( int l1 = l; l1 < (l+2); l1++ ) { for ( int h1 = (h-1); h1 < (h+2); h1++ ) { for ( int k1 = (k-1); k1 < (k+2); k1++ ) // incrémentation tout autour de la bombe et dans la grille suivante aussi { if ( M3D [l1] [h1] [k1] != 666 ) M3D [l1] [h1] [k1] +=1; } } } } } } } else if ( l == 1 ) // si on est dans la 2eme grille { for ( int h=1; h < (longueur+1); h++ ) { for ( int k=1; k < (largeur+1); k++ ) { if ( M3D [1] [h] [k] == 666 ) { for ( int l1 = (l-1); l1 < (l+2); l1++ ) { for ( int h1 = (h-1); h1 < (h+2); h1++ ) { for ( int k1 = (k-1); k1 < (k+2); k1++ ) // incrémentation tout autour de la bombe et dans la grille suivante et précédante { if ( M3D [l1] [h1] [k1] != 666 ) M3D [l1] [h1] [k1] += 1; } } } } } } } else if ( l == 2 ) // si on est dans la 3eme grille { for ( int h=1; h < (longueur+1); h++ ) { for ( int k=1; k < (largeur+1); k++ ) { if ( M3D [2] [h] [k] == 666 ) { for ( int l1 = ( l-1 ); l1 < (l+1); l1++ ) { for ( int h1 = (h-1); h1 < (h+2); h1++ ) { for ( int k1 = (k-1); k1 < (k+2); k1++ ) // incrémentation tout autour de la bombe et dans la grille précédante { if ( M3D [l1] [h1] [k1] != 666 ) M3D [l1] [h1] [k1] += 1; } } } } } } } } } void affiche ( matrice3D M3D, matrice3D M3D2, int longueur, int largeur ) // permet d'afficher la matrice et aussi de faire de jolies petites cases autour ... { int cpt; for ( int l=0; l < 3; l++ ) // permet d'afficher la matrice de manière lisible { cout << l+1 << "." << endl << endl; for ( cpt = 1; cpt < (largeur+1); cpt++ ) if ( cpt <= 9 ) cout << " " << cpt << " "; else if ( cpt <= 99 ) cout << " " << cpt << " "; cout << endl; for ( cpt = 1; cpt < (largeur+1); cpt++ ) cout << "----"; cout << endl; for ( int h=1; h < (longueur+1); h++ ) { for ( int k=1; k < (largeur+1); k++ ) { if ( M3D2 [l] [h] [k] == 444 ) // 444 = drapeau cout << " " << "x" << " "; else if ( M3D2 [l] [h] [k] == 555 ) // 555 = inconnue cout << " " << "?" << " "; else if ( M3D2 [l] [h] [k] == 666 ) // 666 = BOMBE cout << " " << "B" << " "; else if ( M3D2 [l] [h] [k] == 777 ) // 777 = erreur cout << " " << "!" << " "; else if ( M3D2 [l] [h] [k] <= 9 ) cout << " " << M3D2 [l] [h] [k] << " "; else cout << " " << M3D2 [l] [h] [k]; cout << "|"; } cout << " " << h; cout << endl; for ( int k=1; k < (largeur+1); k++ ) cout << "----"; cout << endl; } cout << endl; } } void rien ( matrice3D M3D2, int longueur, int largeur ) // initialise une matrice à la valeur 555 = inconnue = ? { for ( int h=0; h <= (longueur+2); h++ ) { for ( int k=0; k <= (largeur+2); k++ ) { M3D2 [0] [h] [k] = 555; M3D2 [1] [h] [k] = 555; M3D2 [2] [h] [k] = 555; } } }
Voila stun ptit démineur programmé en 3D mais en apparence console, càd qu'il faut superposer mentalement les 3 tableaux
C'était mon projet 3 en API au premier semestre ...
edit : taille du code -> petit[/code]
1° candi polytech à l'ULB apparement à voir l'intitulé des projets que j'ai pas fait comme j'étais dispensé d'info pr ma 2° première...zine a dit:sinon je peux toujours de filer mes 2 projets dinfos ( calcul boursier rudimentaire et mini traitement de texte) si besoin est