Bonjour je suis loin d'être très bon en prog et l'on me demande de faire un puissance4 j'ai commencé a le réaliser mais il se trouve que je suis bloqué je n'arrive pas a aller plus loin.
Je dois utilisé DEV Cpp je n'ai pas le choix.
avant tout vous aurez besoin de la librairie de l'iut.
http://www.laas.fr/~alozes/Telecharger_C++.htm Bibliothèque pour programmes DOS (sous Dev-Cpp)
Je n'arrive plus a avancer et je dois rendre mon prog demain avant midi. Si vous etes fort en prog serait il possible de le faire tourner merci. Tout bout de programme sera le bienvenue ou modification qui fait tourner complètement
le jeu . Comme vous pouvez le voir je ne suis pas très fort mais j'ai bossé je demande de l'aide en urgence.
Vous pouvez me répondre par mp ou par le biais du forum.
TT AIDE SERA la bienvenue.
Ps: ne pas faire trop des appel de code source ou cela pour que je puisse comprendre. Merci
IL S'AGIT D'UN PUISSANCE 4.
A oui les programme qui pose souci sont
Test diagonale et place jeton principalement.
J'aimerais gardé si possible certain de mais sous prog.
Voici mon programme:
A recopie sous dev et utiliser la librairie
//************************ Application console C/C++ ***************************
//***************** IUT **** 1ERE ANNEE 08/09 ********************
//******************************************************************************
// PROGRAMME : P4.ccp (mettre à jour ce cartouche)
// DATE : 10/09/2009
// OBJET : Puissance 4
// :
// LIMITES :
// :
// APPEL :
// AUTEUR(S) :
//******************************************************************************
/******************************************************************************/
// ===================== Liste des fichiers d'entete ======================== //
/*
Si vous utilisez une des bibliothèques de iutupadte (cf. aide en ligne)
décommentez dans la ligne suivant.
*/
#include <iut_tlse3\iutupdate.hpp> //inclut en une fois tous les fichiers
#include <iostream> // flux d'entrée sortie
#include <iomanip> // manipulateurs de flux
#include <cstdlib> // bibliothèque c standard
#include <conio.h>
#include <windows.h>
#include <fstream>
using namespace std; // permet d'utiliser les flux cin et cout
// ========================= Declarations globales ========================== //
// ================================= Macros ================================= //
// =============================== Constantes =============================== //
const int tabx=7; //constante du tableau qui defini la taille de celui-ci//
const int taby=6;
const int NB_ALIGNES=4;
const int ROUGE=1;
const int JAUNE=2;
//const int NOIR=16;
//const int BLANC=15;
//const int ROUG=12;
//const int BLEU=1;
//const int GREY=7;
const int VIDE=0;
const int PLEIN = 9;
const int LEFT=20;
const int TOP=2;
const int LARGCOL=6;
const int HAUTCOL=2;
// ================================== Types ================================= //
//typedef int grille[taby][tabx];
typedef struct {int place;
int couleur;}t_cas;
typedef t_cas t_grille[taby][tabx];
// =============================== Variables ================================ //
// =============================== Fonctions ================================ //
//******************************************************************************
/*verifie si les quatre jetons sont alignés verticalement,
horizontalement et diagonale.
programme qui controle si les 4 jetons sont alignés verticalement
*/
void couleur(int couleurDuTexte,int couleurDeFond)
{
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(H,couleurDeFond*16+couleurDuTexte);
}
/*void affich_jeton( int col, int lig )
{
//declaration
int larg, lon,rop;
//action
system("cls" );
couleur(BLACK, WHITE);
//grid(20,2,7,4,6,2,DOTTEDLINE);.
larg=(LEFT+2)+col*(LARGCOL+1);
lon=(TOP+1)+lig*(HAUTCOL+1);
//gotoxy(larg,4);
cout<<" ";
//gotoxy(larg,lon+1);
cout<<" ";
}*/
void aff_jeton(int couleur, int ligne, int colonne)
{
int h, larg;
h=((3*ligne)+22);
larg=((5*colonne)+22);
gotoxy( h, larg);
if (couleur==ROUGE)
textcolor(LIGHTRED);
else
textcolor(YELLOW);
cprintf("##" );
}
void affiche_grille(t_grille gril)
{
clrscr();
cout<<" 0 1 2 3 4 5 6 "<<endl;;
int colo, lign;
grid(20,2,7,4,6,2,DOTTEDLINE);
for(colo=0;colo<taby;colo++)
for(lign=0;lign<tabx;lign++)
if(gril[colo][lign].place!=VIDE)
{
aff_jeton(gril[colo][lign].couleur, colo, lign);
}
}
bool test_horizontal(int ligne, int colonne, t_grille g)
/*verifie si trois jetons consécutif de même couleur que celui en position colonne,ligne sont alignés
horizontalement dans la grille de gauche à droite */
{
//declaration
int nbrepionaligne, couleur, i;
bool gagne;
//Action
nbrepionaligne=1;
couleur=g[ligne][colonne].couleur;
if (( colonne<=taby-3) && (couleur!=VIDE))
for ( i=1; i<NB_ALIGNES; i++)
if (g[ligne][colonne+i].couleur == couleur )
nbrepionaligne++;
gagne=(nbrepionaligne==NB_ALIGNES);
return (gagne);
}
//******************************************************************************
bool test_vertical(int ligne, int colonne, t_grille g)
/*verifie si trois jetons consécutif de même couleur que celui en position colonne,ligne sont alignés
horizontalement dans la grille de gauche à droite */
{
//declaration
int nbrepionaligne, couleur, i;
bool gagne;
//Action
nbrepionaligne=1;
couleur=g[ligne][colonne].couleur;
if (( colonne<=taby-3) && (couleur!=VIDE))
for ( i=1; i<NB_ALIGNES; i++)
if (g[ligne+i][colonne].couleur == couleur )
nbrepionaligne++;
gagne=(nbrepionaligne==NB_ALIGNES);
return (gagne);
}
//******************************************************************************
bool test_diagonale(int ligne, int colonne, t_grille g)
/*verifie si trois jetons consécutif de même couleur que celui en position colonne,ligne sont alignés
horizontalement dans la grille de gauche à droite */
{/*
//declaration
int nbrepionaligne, couleur, i,j;
bool gagne;
//Action
nbrepionaligne=1;
couleur=g[ligne][colonne].couleur;
if (( colonne<=taby-3) && (g[ligne][colonne].place!=VIDE))
for ( i=1; i<NB_ALIGNES; i++)
for ( j=1; j<NB_ALIGNES; i++)
if (g[ligne+i][colonne+j].couleur == couleur )
nbrepionaligne++;
gagne=(nbrepionaligne==NB_ALIGNES);
return (gagne); */
return(0);
}
//****************************************************************************//
//test etage verifie si l'etage est plein ou pas! SERT aRIEN A SUPP
/*bool test_etage1()
{
//declaration
grille etage;
int cpt,compte;
bool etag_plein;
//action
for (cpt=0;cpt>=7;cpt++)
if (etage[cpt==1])
compte=compte++;
if (compte==7)
return(true);
else
return(false);
} */
//******************************************************************************
//******************************************************************************
//programme qui place le jezton dans la grille
void place_jeton(int colonne, t_grille& gril, int joueur)
{
int ligne=0;
while(gril[colonne][ligne].place!=VIDE)
{
ligne++;
}
gril[colonne][ligne].place = PLEIN;
gril[colonne][ligne].couleur= joueur;
}
//******************************************************************************
//programme qui rempli la grille de jeu a des valeur de 0.
void init_grille(t_grille& grillejeu)
{
int colon,affich;
int etag;
//grille grillejeu;
//action
for(colon=0;colon<taby;colon++)
for(etag=0;etag<tabx;etag++)
grillejeu[colon][etag].place = VIDE ;
}
//******************************************************************************
//tour_joueur renvoie la valeur qui alterne le joueur 1 et 2
void tour_joueur(int &valeur)
{
//declaration
//action
if (valeur=JAUNE)
valeur=ROUGE;
else
valeur=JAUNE;
//cout<<valeur;
}
//******************************************************************************
bool test_gagne(t_grille grille_jeu)
{
int col, lign;
bool gagne, vertical, horizontal, diago;
for(col=0;col<taby;col++)
for(lign=0;lign<tabx;lign++)
{
//cout<<"etape1";
vertical = test_vertical(col, lign, grille_jeu) | vertical;
//cout<<"etape2";
horizontal = test_horizontal(col, lign, grille_jeu) | horizontal;
//cout<<"etape3";
//diago = test_diagonale(col, lign, grille_jeu) | diago;
cout<<"etape4";
}
gagne = vertical | horizontal | diago;
return(gagne);
}
//*****************************************************************************
//test colonne verifie si la colonne est pleine ou pas!
bool test_colonne(t_grille gril , int valu )
{
//declaration
bool plein=true;
int lign;
//action
for(lign=0;lign<tabx;lign++)
if(gril[lign][valu].place==VIDE)
plein=plein & true;
/*if (colonne[valu !=0].place)
return (plein=false);
else*/
return (plein);
}
//****************************************************************************//
void fin_partie(int coul_jeton)
{
if (coul_jeton==JAUNE)
cout<<"C'est le joueur "<<JAUNE<<" qui gagne !"<<endl;
else
cout<<"C'est le joueur "<<ROUGE<<" qui gagne !"<<endl;
}
// Sous programme de jeu!!!
//******************************************************************************
//******************************************************************************
void presentation()
{
couleur(WHITE, BLACK);
cout<<"--Puissance 4 --"<<endl;
couleur(LIGHTRED, BLACK);
cout<<endl;
cout<<endl;
cout<<" zzzzzzz zz zz zz zzzzzz zzzzzz zzzzzzz zzz zz zzzzzz zzzzzz "<<endl;
cout<<" zz zz zz zz z z zz zz zz z zz zz zz "<<endl;
cout<<" zzzzzzz zz zz zz zzzzzz zzzzzz zzzzzzz zz z zz zz zzzz "<<endl;
cout<<" zz zz zz zz z z zz zz zz z zz zz zz "<<endl;
cout<<" zz zzzzzzz zz zzzzzz zzzzzz zz zz zz zzz zzzzzz zzzzzz "<<endl;
couleur(LIGHTBLUE, BLACK);
cout<<" "<<endl;
cout<<" zz zz "<<endl;
cout<<" zz zz "<<endl;
cout<<" zzzzzzz "<<endl;
cout<<" zz "<<endl;
cout<<" zz "<<endl;
couleur(WHITE, BLACK);
cout<<" *********************************************************************** "<<endl;
couleur(LIGHTGRAY, BLACK);
}
//******************************************************************************
//programme qui affiche le menu
//
int menu()
{
char choix;
do
{
system("cls" );
presentation();
couleur(WHITE, BLACK);
cout<<" Quel mode de jeu desires tu ?"<<endl;
cout<<endl;
cout<<"-Selectionner :"<<endl;
cout<<"1 pour le mode Joueur 1 vs Joueur 2"<<endl;
cout<<"2 pour les regles du jeux"<<endl;
cout<<"3 pour a propos"<<endl;
cout<<"4 pour quitter"<<endl;
cout<<"-Ton choix: "<<endl;
cin>>choix;
}
while(choix!='1' and choix!='2' and choix!='3' and choix!='4');
return(choix);
}
//******************************************************************************
//******************************************************************************
void J1vsJ2()
{
//declaration
int colon, num_joueur;
t_grille grill_jeu;
//t_grille grill_jeu={{VIDE},
//{VIDE},
// {JAUNE,JAUNE,ROUGE,JAUNE},
/*{VIDE,VIDE,ROUGE,JAUNE,ROUGE},
{VIDE,ROUGE,JAUNE},
{ROUGE,JAUNE,JAUNE}*///};
//action
//init_grille(grill_jeu);
num_joueur=JAUNE;
//cout<<test_gagne(grill_jeu);
while(test_gagne(grill_jeu))
{
cout<<"hi!";
affiche_grille(grill_jeu);
delay(1000);
cin>>colon;
do
{
while(true)
{
switch(colon)
{
case 1 : place_jeton (colon, grill_jeu, num_joueur);
break;
case 2 : place_jeton (colon, grill_jeu, num_joueur);
break;
case 3 : place_jeton (colon, grill_jeu, num_joueur);
break;
case 4 : place_jeton (colon, grill_jeu, num_joueur);
break;
case 5 : place_jeton (colon, grill_jeu, num_joueur);
break;
case 6 : place_jeton (colon, grill_jeu, num_joueur);
break;
}
}
}while(true);
}
//fin_partie(num_joueur);
}
//******************************************************************************
void regle()
{
cout<<"------------------------Regle------------------------"<<endl;
cout<<"Puissance 4 est un jeu qui se joue a deux. "<<endl;
cout<<"Le but du jeu est d'aligner le premier 4 pions de sa propre couleur"<<endl;
cout<<"Les 4 pions peuvent etre alignes horizontalement, verticalement "<<endl;
cout<<"ou encore en diagonale. "<<endl;
cout<<" Taper sur une touche pour revenir au menu"<<endl;
getch();
menu();
}
//******************************************************************************
void apropos()
{
cout<<"------------------------A propos------------------------"<<endl;
cout<<"Ce programme a ete cree dans le cadre du projet de programmation"<<endl;
cout<<"il est totalement opensource"<<endl;
cout<<" Taper sur une touche pour revenir au menu"<<endl;
getch();
menu();
}
//****************************************************************************//
//****************************************************************************//
// ========================== Programme principal =========================== //
int main ()
{
// Déclaration locale
int choi;
/* grille grille_test={{VIDE},
{VIDE},
{JAUNE,JAUNE,JAUNE,JAUNE,JAUNE},
{VIDE,VIDE,ROUGE,JAUNE,ROUGE},
{VIDE,ROUGE,JAUNE},
{ROUGE,JAUNE,JAUNE}};
*/
bool resultat;
// Action
choi=menu();
switch(choi)
{
case '1' :J1vsJ2();
break;
case '2' : regle();
break;
case '3' : apropos();
break;
case '4' : return (0);
break;
default : menu();
}
cout<<endl;
system("pause" );
return(0);
}
// ============================ Fin du programme ============================= //
Message édité par wolfmandu31 le 11-06-2009 à 22:52:22