All pastes #2109256 Raw Edit

Stuff

public text v1 · immutable
#2109256 ·published 2012-02-03 09:53 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*/
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;
}