Puissance4 c++

psv -  
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   -
bonjour à tous,
je suis un noob en c++ et je j'ai besoin d'aide pour mon projet, c'est faire puissance 4 en c++;
voici l'énoncé du prob:
Soit une matrice 7×7 d’entiers, initialisée à 0. On vous demande de gérer un jeu de puissance 4 dans
cette matrice : à tour de rôle, les joueurs entrent un numéro de colonne entre 1 et 7, et un pion (symbolisé
par le numéro du joueur) est placé à la dernière position libre, i.e. celle d’indice le plus élevé, de la colonne
choisie (si cette colonne est déjà remplie, un message d’erreur doit signaler au joueur qu’un autre numéro
est attendu). Le jeu s’achève quand un joueur aligne 4 pions portant son numéro, ou quand la grille est
complètement remplie.
Votre programme doit d’une part gérer la partie, et d’autre part gérer l’intelligence artificielle d’un des
joueurs au moyen des règles suivantes :
– si un coup lui assure la victoire, ce coup (coup gagnant) est effectué :
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0
6 1 0 0 2 2 2 0
7 1 2 1 2 1 1 1
1 2 3 4 5 6 7
dans ce cas, l’ordinateur (joueur 2) placera son pion dans la colonne d’indice 3, ce coup le faisant
gagner ;
– si un coup donne à l’adversaire un coup gagnant, ce coup (coup perdant) n’est pas effectué, dans la
mesure du possible :
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0
6 0 0 0 1 1 1 0
7 2 1 0 2 1 2 2
1 2 3 4 5 6 7
dans ce cas, l’ordinateur (joueur 2) ne placera pas son pion en colonne 3, puisque ce coup permettrait
au joueur 1 de gagner (en plaçant son pion en colonne 3) ;
– si un coup oblige l’adversaire à jouer un coup perdant, ce coup est effectué.
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0
6 0 0 0 2 2 0 0
7 1 1 2 1 1 2 1
1 2 3 4 5 6 7
1
Énoncé disponible sur http://www.ulb.ac.be/di/info-f-101
dans ce cas, l’odinateur (joueur 2) placera son pion en colonne 3 puisque, quel que soit le coup
suivant du joueur 1, ce coup sera perdant.
Si ces règles n’ont pas permis à l’ordinateur de déterminer un coup à jouer, celui-ci devra le tirer au sort
parmi les coups possibles (voir ci-dessous pour la génération de nombres aléatoires). Nous vous conseillons
d’écrire une fonction pour chacune de ces règles, et à minimiser la duplication de code. Vous pouvez utiliser
des vecteurs de travail, à condition de justifier leur utilité de façon convaincante.
Nombres aléatoires La génération de nombres aléatoires en C++ peut se faire au moyen de la fonction
int rand() qui renvoie un entier aléatoire compris entre 0 et RAND_MAX (une constante définie dans le
fichier stdlib.h que vous devez inclure au début de votre programme). Pour que rand() donne des
résultats plus réalistes, il convient d’initialiser la suite des nombres aléatoires en début de programme, au
moyen de la fonction void srand(int), à laquelle on fournit un entier arbitraire. Cet entier arbitraire est
en général extrait de l’horloge de la machine en appelant srand(time(NULL)) par exemple (pour ce faire,
vous devez aussi inclure time.h). Voici un exemple de programme qui affiche un nombre compris en 1 et
10 inclus.
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std ;
int main ()
{
int j ;
/* initialisation des nombres aléatoires */
srand ( time(NULL) ) ;
/* On fait appel à rand, puis on normalise le résultat
pour obtenir un nombre dans [1,..., 10] */
j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0))) ;
cout<< j ;
}
merci d'avance,

1 réponse

teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Salut,
Sympa comme exo, tu butes sur quoi?
0