All pastes #2109234 Raw Edit

Stuff

public text v1 · immutable
#2109234 ·published 2012-02-03 09:04 UTC
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;
}