neounit | En fait j'ai un "Othello" a faire dans la console pour les regles http://www.ffothello.org/jeu/regles.php J'ai applique les conseil, j'ai mon programme mais je n’arrive pas a le faire fonctionner !!!
je me permet, encore, de vous demander conseil.
voila mon main.c
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include <strings.h>
- #include "othello.h"
- int main()
- {
- int totalPions = 0;
- struct Partie start;
- initialise(start.plateau);
- do{
- affiche_plateau(start.plateau);
- affiche_nombre_pions(start.plateau);
- jouer_blanc(start.plateau);
- totalPions = affiche_nombre_pions(start.plateau);
- system("CLS" );
- if(totalPions == 42)
- {
- break;
- }
- }while(1);
- return 0;
- }
|
mon othello.c
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include <strings.h>
- #include "othello.h"
- int affiche_nombre_pions(int plateau[8][8])
- {
- int i,j,n=0,b=0;
- for(i=0;i<8;i++)
- for(j=0;j<8;j++)
- {
- if(plateau[i][j] == 1)
- n++;
- else if(plateau[i][j] == 2)
- b++;
- }
- printf("\n\n\n\tNombre de pions noirs : %d\n\tNombre de pions blanc : %d", n,b);
- return n+b;
- }
- int jouer_blanc(int plateau[8][8])
- {
- int l,a,b;
- char colonne;
- printf("\nSaisir la lettre de la colonne ou vous voulez jouer :" );
- scanf("%s", &colonne);
- switch(colonne){
- case 'a' : a = 0;
- break;
- case 'b' : a = 1;
- break;
- case 'c' : a = 2;
- break;
- case 'd' : a = 3;
- break;
- case 'e' : a = 4;
- break;
- case 'f' : a = 5;
- break;
- case 'g' : a = 6;
- break;
- case 'h' : a = 7;
- break;
- default : printf("Il n'y a pas de %c sur se plateau", colonne);
- break;
- }
- printf("\n\nSaisir le numero de la ligne ou vous voulez jouer :" );
- scanf("%d", &l);
- switch(l){
- case 1 : b = 0;
- break;
- case 2 : b = 1;
- break;
- case 3 : b = 2;
- break;
- case 4 : b = 3;
- break;
- case 5 : b = 4;
- break;
- case 6 : b = 5;
- break;
- case 7 : b = 6;
- break;
- case 8 : b = 7;
- break;
- default : printf("Il n'y a pas de %d sur se plateau", l);
- break;}
- printf("%d et %d", a,b);
-
- if(possible(plateau,a,b ) == 1);{
- jouer_case(plateau,a ,b);}
- }
- void initialise(int plateau[8][8])
- {
- int x=0,y=0;
- for(x=0;x<8;x++)
- {
- for(y=0;y<8;y++)
- {
- plateau[x][y] = 0;
- }
- }
- plateau[3][3] = 1;
- plateau[4][3] = 2;
- plateau[3][4] = 2;
- plateau[4][4] = 1;
- }
- void affiche_plateau(int plateau[8][8])
- {
- int i,j,k,l,m,n;
- int x,y;
- char tab[8][8];
- printf(" a\t b\t c\t d\t e\t f\t g\t h\n\n" );
- for(l=0;l<8;l++)
- {
- for(i=0;i<(8*4);i++)
- {
- printf("* " );
- }
- printf("*\n" );
- for(j=0;j<3;j++){
- for(k=0;k<9;k++)
- {
- if(j==1 && k!=8 ){
- printf("* %c\t", plateau[l][k]);
- }
- else
- printf("*\t" );
- if(j==1 && k==8){
- printf("%d", l+1);
- }
- }
- printf("\n" );
- }
- }
- for(i=0;i<8;i++)
- {
- printf("* * * * " );
- }
- printf("*" );
- for(y=0;y<8;y++)
- {
- for(x=0;x<8;x++)
- {
- if(plateau[x][y] == 2){
- tab[x][y] = 'B'; }
- if(plateau[x][y] == 0){
- tab[x][y] = ' '; }
- if(plateau[x][y] == 1){
- tab[x][y] = 'N'; }
- }
- }
- }
- int coup_possible_direction(int x, int y, int plateau[8][8], int a, int b, int *fin1,int *fin2)
- {
- int i,j;
- if(plateau[a+x][b+y] == 2){
- printf("%d", a+x);
- for(i=0;i<8;i++){
- for(j=0;j<8;i++){
- if(plateau[a+x+i][b+y+j] == 1){
- (*fin1)=a+x+i;
- (*fin2)=b+y+j;
- return 1;}
- else if(plateau[a+x+i][b+y+j] == 0){
- return 0;
- }
- }
- }
- }
- }
- int coup_possible(int plateau[8][8], int a, int b)
- {
- int x,y,fin1=0,fin2=0;
- for(x=-1;x<2;x++){
- for(y=-1;y<2;y++){
- if(coup_possible_direction(x, y, plateau, a, b, &fin1, &fin2) == 1){
- return 1;
- }
- else if(coup_possible_direction(x, y, plateau, a, b, &fin1, &fin2) == 0){
- return 0;}
- }
- }
- }
- int possible(int plateau[8][8], int a, int b)
- {
- int x,y;
- for(x=0;x<8;x++){
- for(y=0;y<8;y++){
- if(coup_possible(plateau, a, b) == 1){
- return 1;
- }
- else if(coup_possible(plateau, a, b) == 0){
- return 0;
- }
- }
- }
- }
- int jouer_case_direction(int plateau[8][8], int a, int b)
- {
- int x,y,fin1,fin2;
- if(coup_possible_direction( x, y, plateau, a, b, &fin1, &fin2) == 1){
- if(a>fin1 && b==fin2){
- for(x=a;x<=fin1;x++){
- y=b;
- plateau[x][y] = 1;}
- }
- if(a<fin1 && b==fin2){
- for(x=a;x>=fin1;x--){
- y=b;
- plateau[x][y] = 1;}
- }
- if(a==fin1 && b>fin2){
- for(y=b;y<=fin2;y++){
- x=a;
- plateau[x][y] = 1;}
- }
- if(a==fin1 && b<fin2){
- for(y=b;y>=fin2;y--){
- y=b;
- plateau[x][y] = 1;}
- }
- if(a>fin1 && b>fin2){
- for(x=a;x>=fin1;x++){
- for(y=b;y>=fin2;y++){
- y=b;
- plateau[x][y] = 1;}
- }
- }
- if(a>fin1 && b>fin2){
- for(x=a;x>=fin1;x++){
- for(y=b;y>=fin2;y++){
- y=b;
- plateau[x][y] = 1;}
- }
- }
- }
- }
- int jouer_case(int a, int b, int plateau[8][8])
- {
- int x,y;
- for(x=-1;x<2;x++){
- for(y=-1;y<2;y++){
- jouer_case_direction(plateau,a, b);}
- }
- }
|
et mon othello.h
Code :
- #ifndef _FONCTIONS_HEADER_
- #define _FONCTIONS_HEADER_
- void affiche_plateau(int plateau[8][8]);
- void initialise(int plateau[8][8]);
- int affiche_nombre_pions(int plateau[8][8]);
- int jouer_blanc(int plateau[8][8]);
- int coup_possible_direction(int x, int y, int plateau[8][8], int a, int b, int *fin1,int *fin2);
- int coup_possible(int plateau[8][8], int a, int b);
- int possible(int plateau[8][8], int a, int b);
- int jouer_case_direction(int plateau[8][8], int a, int b);
- int jouer_case(int a, int b, int plateau[8][8]);
- struct Partie
- {
- int plateau[8][8];
- int joueur;
- int nbPions;
- };
- #endif
|
J’espère ne pas vous saouler avec mes question...
En espérant que quelqu’un m'aide dans mon projet je vous beaucoup déjà pour l'aide ! |