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
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;
}
}
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;
}
}
void mangiata()
{
while (canEat() == 1)
{
scacchiera[spostaA] = scacchiera[spostaDa];
scacchiera[casellaAvversario] = ' ';
scacchiera[spostaDa] = ' ';
int nuovospostaDa;
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-------------------------------------------------------------------------------
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()
{
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;
}