Bonjour ! Je suis en train de devellopé un programe de puissance 4.
#include <iostream>
#include <iomanip>
#include <windows.h>
void affiche_tableau(char tabjeu[6][7],int tour)
{
std::cout << "\ntour : " << tour;
std::cout << "\n *************\n *puissance 4*\n *************\n";
std::cout << " -----------------------------\n";
for (int i{0}; i < 6; i++)
{
std::cout << " |";
for (int j{0}; j < 7; j++)
{
std::cout << std::setw(2) << tabjeu[i][j] << std::setw(2) << '|';
}
std::cout << std::endl;
}
std::cout << " -----------------------------\n ";
for (int i{0}; i < 7; i++)
{
std::cout << std::setw(4) << i + 1;
}
}
void demande_joueur(int tour)
{
if (tour%2==1)
{
std::cout << "\n\nC'est au tour du rouge (Representer avec des &) d'ajouter une piece,\nveuilliez choisir ou vous la rentrer (utilise le numero de la colone) : ";
}
else
{
std::cout << "\n\nC'est au tour du jaune (Representer avec des *) d'ajouter une piece,\nveuilliez choisir ou vous la rentrer (utilise le numero de la colone) : ";
}
}
void ajoute_piece(char tab[6][7], int a, int &safe, int tour)
{
int cont{0};
char piece{};
if (tour%2==1)
{
piece = '&';
}
else
{
piece = '*';
}
safe = 1;
while (tab[cont][a] == ' ')
{
safe = 0;
system("cls");
tab[cont - 1][a] = ' ';
tab[cont][a] = piece;
affiche_tableau(tab, tour);
Sleep(100);
cont++;
}
}
void verif_nb(int a, bool &b)
{
if (a < 0 || a > 6)
{
b = 0;
std::cout << "ereur le nombre doit-etre entre 1 et 7 !\n";
}
else
{
b = 1;
}
}
void demande(char tab[6][7], int &tour)
{
int colone{};
bool verif{1};
int safe{0};
do
{
do
{
demande_joueur(tour);
std::cin >> colone;
colone--;
verif_nb(colone, verif);
}
while (!verif);
safe = 0;
ajoute_piece(tab, colone, safe, tour);
if (safe == 1)
{
std::cout << "\nVous avez rentrer rentrer un pion dans une colone remplis.";
system("pause");
}
else
{
tour++;
std::cout << "\njoueur : " << (tour%2)+1;
}
}
while (safe == 0);
}
int main()
{
system("color 0B");
char tabjeu[6][7] {};
int tour(1);
bool partiefini(1);
for (int i{0}; i < 6; i++)
{
for (int j{0}; j < 7; j++)
{
tabjeu[i][j] = ' ';
}
}
while (partiefini)
{
//system("cls");
affiche_tableau(tabjeu,tour);
demande(tabjeu, tour);
}
return 0;
}
et quand j’execute la ligne
tab[cont - 1][a] = ' ';
Et que je rentre une valeur au dessus de 4 (qui devien alors 3 dans mon tableau) La valeur de ma variable tour est réécrite (pour 4 c’est 32, pour 5 c’est 8194 etc..) Je sais que mon code n’est pas très optimal je commence à suivre le cours de zestedesavoir actuellement mais j’ai appris en cours mais mon prof utilise le courp d’op donc j’ai quelque erreur encore à réglé (comme le std::aray) Et quand je mets cette ligne en commentaire
tab[cont - 1][a] = ' ';
Ça n’efface plus forcement donc j’ai les traces de ou est passer ma piece mais je n’ai surtout plus le problème. Quelqu’un comprend ce qu’il se passe et peut me l’expliquer et peut être donner des pistes pour changer ça (ps : j’ai déjà essayer de changé ma variable tour par une autre mais tour se fait ré-écrire quand même ) Je ne comprend pas vraiment ce qui se passe ahah Merci à tous ce qui prendrons du temps à lire et m’aider !