jeu reversi - C++ - Programmation
Marsh Posté le 26-03-2004 à 18:18:15
quand tu poses un pion de couleur c à la position i,j dans ton tablo, tu dois explorer les 8 directions
pour chaque direction:
t'avance tant que la case ne sors pas du tablo, n'est pas vide, et ne contient pas la couleur c
tu sors de cette boucle en arrivant sur une case (i2,j2)
si (i2,j2) a la couleur c, alors tu reparcours cette direction (de (i,j) à (i2,j2) ) en mettant la couleur c dans toutes les cases parcourues
Marsh Posté le 25-03-2004 à 13:13:11
bonjour je voudrais savoir si quelqu'un peut m'aider à completer ce prog ;je n'arrive pas à codé la partie qui doi retourner les pions adéquats.
Ce serait vraiment sympa
voici le reversi.cc
#include "reversi.h"
JeuReversi::JeuReversi(QWidget * p,char *nm) : QWidget(p,nm)
{
for(int i = 0; i < 10; ++i)
for(int j = 0; j < 10; ++j)
Tab[i][j] = 0;
Tab[4][4] = 1;
Tab[4][5] = 2;
Tab[5][4] = 2;
Tab[5][5] = 1;
}
void JeuReversi::paintEvent( QPaintEvent * e)
{
QPainter p(this);
p.setPen(Qt::white);
int i,j;
for(i = 0; i < 500; i += 50)
p.drawLine(i,0,i,500);
p.drawLine(499,0,499,500);
for(i = 0; i < 500; i += 50)
p.drawLine(0,i,500,i);
p.drawLine(0,499,500,499);
for(i = 0; i < 10; ++i)
for(j = 0; j < 10; ++j)
if (Tab[i][j] != 0)
{
if (Tab[i][j] == 1)
{
p.setBrush(Qt::blue);
p.setPen(Qt::blue);
}
else {
p.setBrush(Qt::green);
p.setPen(Qt::green);
}
p.drawPie(i * 50 + 5,j * 50 + 5,40,40,0,5760);
}
}
void JeuReversi::mousePressEvent( QMouseEvent * e)
{
emit ChangementJoueur();
}
void Contenu::initialisation()
{
setPaletteBackgroundColor(Qt::blue);
Jeu = new JeuReversi(this,"Jeu" );
Jeu->setPaletteBackgroundColor(Qt::black);
Temps1 = new QLCDNumber(this,"Temps1" );
Temps2 = new QLCDNumber(this,"Temps1" );
Init = new QPushButton("Init",this,"Initialisation" );
valeurTemps1 = valeurTemps2 = 0;
Jeu->resize(500,500);
Temps1->resize(50,30);
Temps2->resize(50,30);
Jeu->move(50,20);
Temps1->move(50,540);
Temps2->move(500,540);
Init->move(230,540);
startTimer(1000);
Joueur = 0;
connect(Jeu,SIGNAL(ChangementJoueur()),this,SLOT(ReceptionChange()));
connect(Init,SIGNAL(clicked()),this,SLOT(ReceptionBouton()));
}
Contenu::Contenu(QWidget * p,char *nm) : QWidget(p,nm)
{
resize(600,600);
if (nm != (char *) 0)
setCaption(nm);
initialisation();
}
void Contenu::timerEvent(QTimerEvent *e)
{
if (Joueur)
{
++valeurTemps2;
Temps2->display(valeurTemps2);
}
else {
++valeurTemps1;
Temps1->display(valeurTemps1);
}
}
void Contenu::ReceptionChange()
{
++Joueur;
Joueur %= 2;
}
void Contenu::ReceptionBouton()
{
switch(QMessageBox::warning(this,"Info","Vous voulez réinitialiser le Jeu?","Oui","Non",0,0,1))
{
case 0:
break;
case 1:
break;
}
}
GestionSignaux::GestionSignaux(char *nm) : QScrollView((QWidget *) 0,nm)
{
resize(600,600);
if (nm != (char *) 0)
setCaption(nm);
ZoneInterne = new Contenu(this,nm);
addChild(ZoneInterne);
}
le main.cc
#include <qapplication.h>
#include "reversi.h"
int main( int argc, char **argv )
{
QApplication a( argc, argv );
GestionSignaux A( "Gestion des signaux" );
a.setMainWidget( &A );
A.show();
return a.exec();
}