Ricerca appunti sul web

Ricerca personalizzata

venerdì 27 febbraio 2009

Sorgenti c : Forza 4

Scrivere un programma che simuli
una partita a Forza 4 tra due giocatori.

#include <stdio.h>
#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<M; i++)
for(j=0; j<N; j++)
matrice[i][j] = 0;

//for(i=0; i<M; i++){
//for(j=0; j<N; 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<M; i++){
for(j=0; j<N; 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<x+4; 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<N)
{
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<M && j+1<N)
{
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<N && j-1>=0)
{
i++;
j--;
a++;
}

j=y;
i=x;

while (matrice[i-1][j+1] == giocatore && i-1>=0 && j+1<M)
{
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;
}

0 commenti: