jeu reversi

jeu reversi - C++ - Programmation

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  :ange:  
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();
}

Reply

Marsh Posté le 25-03-2004 à 13:13:11   

Reply

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed