rendered paste body#include <string.h>
#include <stdio.h>
char sceltaColore;
char *pcolore = &sceltaColore;
int mosseEffettuateBianco = 0;
int mosseEffettuateNero = 0;
char coordinate[6];
int spostaDa;
int spostaA;
int *pSpostaDa = &spostaDa;
int *pSpostaA = &spostaA;
int pedineMangiateNere = 0;
int pedineMangiateBianche = 0;
int pedineRimasteBianche = 20;
int pedineRimasteNere = 20;
int rightPosition = 0;
char avversario;
char utente;
int casellaAvversario = 0;
char scacchiera[50] =
{ 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x',
'x', 'x', 'x', 'x', 'x', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o',
'o', 'o', 'o', 'o', 'o', 'o', 'o' };
/*------------------------------------------------- FUNZIONE UTENTE---------------------------------------------------------------------------*/
/*
Funzione Utente: Gestione delle mosse passate da input dell'utente: studia i casi di vittoria,mangiata o abbandono della partita
* - Mangiata
* - Spostamento
* - Vittoria
* - Stallo
* - Abbandono (dopo almeno 30 mosse)
* - Dama
*
*/
/*verifica che le prime posizioni diagonali siano vuote*/
int canWalk()
{
switch (scacchiera[spostaDa])
{
case 'b':
if ((scacchiera[spostaDa - 4] == ' ' && spostaA == spostaDa - 4)
|| (scacchiera[spostaDa - 5] == ' ' && spostaA == spostaDa - 5))
return 1;
break;
case 'B':
if ((scacchiera[spostaDa - 4] == ' ' && spostaA == spostaDa - 4)
|| (scacchiera[spostaDa - 5] == ' ' && spostaA == spostaDa - 5)
|| (scacchiera[spostaDa + 6] == ' ' && spostaA == spostaDa + 6)
|| (scacchiera[spostaDa + 5] == ' ' && spostaA == spostaDa + 5))
return 1;
break;
case 'n':
if ((scacchiera[spostaDa + 6] == ' ' && spostaA == spostaDa + 6)
|| (scacchiera[spostaDa + 5] == ' ' && spostaA == spostaDa + 5))
return 1;
break;
case 'N':
if ((scacchiera[spostaDa - 4] == ' ' && spostaA == spostaDa - 4)
|| (scacchiera[spostaDa - 5] == ' ' && spostaA == spostaDa - 5)
|| (scacchiera[spostaDa + 6] == ' ' && spostaA == spostaDa + 6)
|| (scacchiera[spostaDa + 5] == ' ' && spostaA == spostaDa + 5))
return 1;
break;
}
return 0;
}
int canEat()
{
switch (scacchiera[spostaDa])
{
case 'b':
if (scacchiera[spostaDa - 4] == 'n' && scacchiera[spostaDa - 9] == ' ')
{
if (spostaA == spostaDa - 9)
{
casellaAvversario = spostaDa - 4;
return 1;
}
else
{
printf(
"devi mangiare la pedina, inserisci nuovamente le coordinate");
}
}
if (scacchiera[spostaDa - 5] == 'n' && scacchiera[spostaDa - 11] == ' ')
{
if (spostaA == spostaDa - 11)
{
casellaAvversario = spostaDa - 5;
return 1;
}
else
printf(
"devi mangiare la pedina, inserisci nuovamente le coordinate");
}
break;
case 'B':
if ((scacchiera[spostaDa - 4] == 'n' || scacchiera[spostaDa - 4] == 'N')
&& scacchiera[spostaDa - 9] == ' ')
{
if (spostaA == spostaDa - 9)
{
casellaAvversario = spostaDa - 4;
return 1;
}
else
printf(
"devi mangiare la pedina, inserisci nuovamente le coordinate");
}
if ((scacchiera[spostaDa - 5] == 'n' || scacchiera[spostaDa - 5] == 'N')
&& scacchiera[spostaDa - 11] == ' ')
{
if (spostaA == spostaDa - 11)
{
casellaAvversario = spostaDa - 5;
return 1;
}
else
printf(
"devi mangiare la pedina, inserisci nuovamente le coordinate");
}
if ((scacchiera[spostaDa + 5] == 'n' || scacchiera[spostaDa - 4] == 'N')
&& scacchiera[spostaDa + 9] == ' ')
{
if (spostaA == spostaDa + 9)
{
return 1;
}
else
{
printf(
"devi mangiare la pedina, inserisci nuovamente le coordinate");
}
}
else if ((scacchiera[spostaDa + 6] == 'n'
|| scacchiera[spostaDa + 6] == 'N')
&& scacchiera[spostaDa + 11] == ' ')
{
if (spostaA == spostaDa + 11)
{
casellaAvversario = spostaDa + 6;
return 1;
}
else
{
printf(
"devi mangiare la pedina, inserisci nuovamente le coordinate");
}
break;
case 'n':
if (scacchiera[spostaDa + 5] == 'b'
&& scacchiera[spostaDa + 9] == ' ')
{
if (spostaA == spostaDa + 9)
{
casellaAvversario = spostaDa + 5;
return 1;
}
else
{
printf(
"devi mangiare la pedina, inserisci nuovamente le coordinate");
}
}
if (scacchiera[spostaDa + 6] == 'b'
&& scacchiera[spostaDa + 11] == ' ')
{
if (spostaA == spostaDa + 11)
{
casellaAvversario = spostaDa + 11;
return 1;
}
else
printf(
"devi mangiare la pedina, inserisci nuovamente le coordinate");
}
break;
case 'N':
if ((scacchiera[spostaDa - 4] == 'b'
|| scacchiera[spostaDa - 4] == 'B')
&& scacchiera[spostaDa - 9] == ' '
&& spostaA == spostaDa - 9)
{
casellaAvversario = spostaDa - 4;
return 1;
}
if ((scacchiera[spostaDa - 5] == 'B'
|| scacchiera[spostaDa - 5] == 'b')
&& scacchiera[spostaDa - 11] == ' '
&& spostaA == spostaDa - 11)
{
casellaAvversario = spostaDa - 5;
return 1;
}
if ((scacchiera[spostaDa + 5] == 'b'
|| scacchiera[spostaDa - 4] == 'B')
&& scacchiera[spostaDa + 9] == ' '
&& spostaA == spostaDa + 9)
{
casellaAvversario = spostaDa + 5;
return 1;
}
if ((scacchiera[spostaDa + 6] == 'b'
|| scacchiera[spostaDa + 6] == 'B')
&& scacchiera[spostaDa + 11] == ' '
&& spostaA == spostaDa + 11)
{
casellaAvversario = spostaDa + 6;
return 1;
}
else
return 0;
}
break;
}
return 0;
}
void mangiata()
{
int nuovospostaDa;
while (canEat() == 1)
{
scacchiera[spostaA] = scacchiera[spostaDa];
scacchiera[casellaAvversario] = ' ';
scacchiera[spostaDa] = ' ';
nuovospostaDa = spostaA;
if (*pcolore == 'B')
pedineMangiateNere++;
else
pedineMangiateBianche++;
mangiata();
}
}
void spostamento()
{
if (canWalk() == 1 && canEat() == 0)
{
scacchiera[spostaA] = scacchiera[spostaDa];
scacchiera[spostaDa] = ' ';
}
/*mangia*/
else
{
mangiata(scacchiera, spostaDa);
}
}
/*--------------------------------------------STAMPA SCACCHIERA-------------------------------------------------------------------------------*/
void StampaScacchiera()
{
printf(
"%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c\n",
'|', 1, '|', scacchiera[0], '|', 2, '|', scacchiera[1], '|',3,
'|', scacchiera[2], '|',4,'|',scacchiera[3], '|',5,'|',scacchiera[4],'|' );
printf("-------------------------------------------\n");
printf("%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c\n",
'|', scacchiera[5], '|', 6, '|', scacchiera[6], '|', 7, '|',scacchiera[7],
'|', 8, '|',scacchiera[8],'|',9, '|',scacchiera[9],'|',10,'|' );
printf("-------------------------------------------\n");
printf("%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c\n",
'|', 11, '|', scacchiera[10], '|', 12, '|', scacchiera[11],
'|',13, '|', scacchiera[12], '|',14,'|',scacchiera[13], '|',15,'|',scacchiera[14],'|' );
printf("-------------------------------------------\n");
printf("%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c\n",
'|', scacchiera[15], '|', 16, '|', scacchiera[16], '|', 17, '|',scacchiera[17],
'|', 18, '|',scacchiera[18],'|',19, '|',scacchiera[19],'|',20,'|' );
printf("-------------------------------------------\n");
printf("%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c\n",
'|', 21, '|', scacchiera[20], '|', 22, '|', scacchiera[21],
'|',23, '|', scacchiera[22], '|',24,'|',scacchiera[23], '|',25,'|',scacchiera[24],'|' );
printf("-------------------------------------------\n");
printf("%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c\n",
'|', scacchiera[25], '|', 26, '|', scacchiera[26], '|', 27, '|',scacchiera[27],
'|', 28, '|',scacchiera[28],'|',29, '|',scacchiera[29],'|',30,'|' );
printf("-------------------------------------------\n");
printf("%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c\n",
'|', 31, '|', scacchiera[30], '|', 32, '|', scacchiera[31],
'|',33, '|', scacchiera[32], '|',34,'|',scacchiera[33], '|',35,'|',scacchiera[34],'|' );
printf("-------------------------------------------\n");
printf("%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c\n",
'|', scacchiera[35], '|', 36, '|', scacchiera[36], '|', 37, '|',scacchiera[37],
'|', 38, '|',scacchiera[38],'|',39, '|',scacchiera[39],'|',40,'|' );
printf("-------------------------------------------\n");
printf("%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c\n",
'|', 41, '|', scacchiera[40], '|', 42, '|', scacchiera[41],
'|',43, '|', scacchiera[42], '|',44,'|',scacchiera[43], '|',45,'|',scacchiera[44],'|' );
printf("-------------------------------------------\n");
printf("%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c%2c%2c%2d%2c\n",
'|', scacchiera[45], '|', 46, '|', scacchiera[46], '|', 47, '|',scacchiera[47],
'|', 48, '|',scacchiera[48],'|',49, '|',scacchiera[49],'|',50,'|' );
printf("-------------------------------------------\n");
printf(
"Il giocatore bianco ha effettuato un numero di mosse pari a: %d\nIl giocatore nero ha effettuato un numero di mosse pari a: %d \n",
mosseEffettuateBianco, mosseEffettuateNero);
printf(
"Numero di pedine mangiate nere: %d\nNumero di pedine mangiate bianche: %d\n",
pedineMangiateNere, pedineMangiateBianche);
printf(
"Numero di pedine rimanenti nere: %d\nNumero di pedine rimanenti bianche: %d\n",
pedineRimasteNere, pedineRimasteBianche);
}
/*-----------------------------------------------------------MAIN-----------------------------------------------------------------------*/
int main()
{
StampaScacchiera();
while (*pcolore != 'B' && *pcolore != 'N')
{
printf("scelta del colore:(B bianco, N nero): \n");
scanf("%c", pcolore);
}
/*Utente==bianco*/
if (*pcolore == 'B')
{
utente = 'B';
avversario = 'N';
}
else
{
utente = 'N';
avversario = 'B';
}
while (rightPosition == 0)
{
char a;
printf("fai la mossa (es.32-27):");
scanf("%d%c%d", &spostaDa, &a, &spostaA);
if (scacchiera[spostaDa] == 'o' || scacchiera[spostaDa] == 'O')
{
spostamento();
mosseEffettuateBianco += 1;
rightPosition = 1;
}
else
{
printf(
"devi inserire il valore della casella che contiene una tua pedina");
rightPosition = 0;
}
}
StampaScacchiera();
/*FunzionePc*/
return 0;
}