/* Scrivere un programma che simuli
una partita a Forza 4 tra due giocatori */
#include
#define M 6
#define N 7
int cambiagiocatore(int);
int controllacolonna(int matrice[][N], int, int,int);
int controllariga(int matrice[][N], int ,int, int);
int controlladiagonalesx(int matrice[][N], int giocatore, int x, int y);
int controlladiagonaledx(int matrice[][N], int giocatore, int x, int y);
int prossimamossa(int matrice[][N], int giocatore);
int main()
{
int giocatore = 2;
int matrice[M][N];
int i=0;
int j=0;
for (i=0; i for(j=0; j matrice[i][j] = 0;
//for(i=0; i //for(j=0; j //{
//printf("%d ", matrice[i][j]);
//}printf("\n"); }
printf("%d", prossimamossa(matrice,giocatore));
}
int prossimamossa(int matrice[][N],int giocatore)
{
int k=0;
int y=0;
int x=5;
int i=0;
int j=0;
while (k<42)
{
giocatore = cambiagiocatore(giocatore);
x=5;
scanf("%d", &y);
if(y<0 || y>N-1)
return -1;
while (matrice[x][y] != 0 && x>=0)
{
x--;
if(x<0) return -1;
}
matrice[x][y] = giocatore;
for (i=0; i for(j=0; j printf("%d ", matrice[i][j]);
}printf("\n"); }
if (controllacolonna(matrice, giocatore, x, y) == giocatore ||
(controllariga(matrice, giocatore, x, y) == giocatore) ||
(controlladiagonalesx(matrice, giocatore, x, y) == giocatore) ||
(controlladiagonaledx(matrice, giocatore, x, y) == giocatore))
return giocatore;
k++;
} return 0;
}
int controllacolonna(int matrice[][N], int giocatore, int x, int y)
/* verifica se nella colonna y ci sono simboli tutti uguali */
{ int i;
if (x<=2)
{
for (i=x; i if (matrice[i][y] != giocatore) return 0;
//printf("hai vinto giocatore %d", giocatore );
return giocatore;
}
}
int controllariga(int matrice[][N], int giocatore, int x, int y)
{ int i;
int a=0;
i=y;
while (matrice[x][i+1] == giocatore && i+1 {
i++;
a++;
}
i=y;
while (matrice[x][i-1] == giocatore && i-1>=0)
{
i--;
a++;
}
if (a==3) return giocatore;
else return 0;
}
int controlladiagonalesx(int matrice[][N], int giocatore, int x, int y)
{
int i,j;
int a=0;
j=y;
i=x;
while (matrice[i+1][j+1] == giocatore && i+1 {
i++;
j++;
a++;
}
j=y;
i=x;
while (matrice[i-1][j-1] == giocatore && i-1>=0 && j-1>=0)
{
i--;
j--;
a++;
}
//printf("%d////",a);
if (a==3) return giocatore;
else return 0;
}
int controlladiagonaledx(int matrice[][N], int giocatore, int x, int y)
{
int i,j;
int a=0;
j=y;
i=x;
while (matrice[i+1][j-1] == giocatore && i+1=0)
{
i++;
j--;
a++;
}
j=y;
i=x;
while (matrice[i-1][j+1] == giocatore && i-1>=0 && j+1 {
i--;
j++;
a++;
}
//printf("%d////",a);
if (a==3) return giocatore;
else return 0;
}
int cambiagiocatore(int giocatore)
/* esegue lo scambio dei giocatori */
{ if (giocatore == 1) return 2;
else return 1;
}
una partita a Forza 4 tra due giocatori */
#include
#define M 6
#define N 7
int cambiagiocatore(int);
int controllacolonna(int matrice[][N], int, int,int);
int controllariga(int matrice[][N], int ,int, int);
int controlladiagonalesx(int matrice[][N], int giocatore, int x, int y);
int controlladiagonaledx(int matrice[][N], int giocatore, int x, int y);
int prossimamossa(int matrice[][N], int giocatore);
int main()
{
int giocatore = 2;
int matrice[M][N];
int i=0;
int j=0;
for (i=0; i
//for(i=0; i
//printf("%d ", matrice[i][j]);
//}printf("\n"); }
printf("%d", prossimamossa(matrice,giocatore));
}
int prossimamossa(int matrice[][N],int giocatore)
{
int k=0;
int y=0;
int x=5;
int i=0;
int j=0;
while (k<42)
{
giocatore = cambiagiocatore(giocatore);
x=5;
scanf("%d", &y);
if(y<0 || y>N-1)
return -1;
while (matrice[x][y] != 0 && x>=0)
{
x--;
if(x<0) return -1;
}
matrice[x][y] = giocatore;
for (i=0; i
}printf("\n"); }
if (controllacolonna(matrice, giocatore, x, y) == giocatore ||
(controllariga(matrice, giocatore, x, y) == giocatore) ||
(controlladiagonalesx(matrice, giocatore, x, y) == giocatore) ||
(controlladiagonaledx(matrice, giocatore, x, y) == giocatore))
return giocatore;
k++;
} return 0;
}
int controllacolonna(int matrice[][N], int giocatore, int x, int y)
/* verifica se nella colonna y ci sono simboli tutti uguali */
{ int i;
if (x<=2)
{
for (i=x; i
//printf("hai vinto giocatore %d", giocatore );
return giocatore;
}
}
int controllariga(int matrice[][N], int giocatore, int x, int y)
{ int i;
int a=0;
i=y;
while (matrice[x][i+1] == giocatore && i+1
i++;
a++;
}
i=y;
while (matrice[x][i-1] == giocatore && i-1>=0)
{
i--;
a++;
}
if (a==3) return giocatore;
else return 0;
}
int controlladiagonalesx(int matrice[][N], int giocatore, int x, int y)
{
int i,j;
int a=0;
j=y;
i=x;
while (matrice[i+1][j+1] == giocatore && i+1
i++;
j++;
a++;
}
j=y;
i=x;
while (matrice[i-1][j-1] == giocatore && i-1>=0 && j-1>=0)
{
i--;
j--;
a++;
}
//printf("%d////",a);
if (a==3) return giocatore;
else return 0;
}
int controlladiagonaledx(int matrice[][N], int giocatore, int x, int y)
{
int i,j;
int a=0;
j=y;
i=x;
while (matrice[i+1][j-1] == giocatore && i+1
{
i++;
j--;
a++;
}
j=y;
i=x;
while (matrice[i-1][j+1] == giocatore && i-1>=0 && j+1
i--;
j++;
a++;
}
//printf("%d////",a);
if (a==3) return giocatore;
else return 0;
}
int cambiagiocatore(int giocatore)
/* esegue lo scambio dei giocatori */
{ if (giocatore == 1) return 2;
else return 1;
}
attenzione questo forza 4 e' bastardissimo, se compilato e eseguito su linux si trasforma in un forza 3!!!
RispondiElimina