Gioco della Dama

di il
3 risposte

Gioco della Dama

Sapreste dirmi che errori ho fatto, il linguaggio di programmazione è di c:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//funzioni main
int schermatahome();
int regole();
int informazioni();
int gioco(); //funzioni gioco
int verificamovimento(int a[5][3], int x1, int y1, int x2, int y2, int giocatore);
void partecipanti(char nome1[],char nome2[]);
void sceltapedine1(char nome1[],int *x1,int *x2, int *y1,int *y2);
void sceltapedine2(char nome2[],int *x1,int *x2, int *y1,int *y2);
void scacchiera(int matr[5][3]);
void movimento1(int a[5][3],char nome1[],int x1,int x2, int y1,int y2,int pl);
void movimento2(int a[5][3],char nome2[],int x1,int x2, int y1,int y2,int pl);
void vincita(char nome1[],char nome2[],int b);

int main(){
int scelta;
int s;
do{
scelta=schermatahome();
switch(scelta){
case 1:
s=gioco();
break;
case 2:
s=regole();
break;
case 3:
s=informazioni();
break;
default:
printf("\nHai sbaliato a digitare");
break;

}
}while(s==2);

return 0;
}

int schermatahome(){


int scelta,a;
char ch=10;




while(ch!=13){
system("cls");
printf(" __ _ __ \n");
printf(" | __ \\ /\\ | \\/ | /\\ \n");
printf(" | | | | / \\ | \\ / | / \\ \n");
printf(" | | | | / /\\ \\ | |\\/| | / /\\ \\ \n");
printf(" | |_| |/ __ \\ | | | | / ___ \\ \n");
printf(" |__/// \\_\\|| ||// \\\\ \n");

printf(" _ _ __ _ _ \n");
printf(" | |() / _|() | | \n");
printf(" _ _ _ _ __ _ _ | | _ | | _ _ _ _ | | __ _ \n");
printf(" / _| / _ \\| ' ` _ \\ | '_ \\ | || || || | / _|/ ` || _|/ _` |\n");
printf(" \\__ \\| _/| | | | | || |) || || || | | || (_| (| || || (| |\n");
printf(" |_/ \\__||| || ||| ._/ |||||| || \\_|\\,| \\_|\\,|\n");
printf(" | | \n");
printf(" |_| \n");
printf("---------------------------------------------------------------------\n");
if(scelta==1){
printf("\n\t\t\t ---> GIOCA \n");
a=1;
}
else printf("\n\t\t\t ---> gioca \n");
if(scelta == 2){

printf("\n\n\t\t\t ---> REGOLE \n");
a=2;
}
else printf("\n\n\t\t\t ---> regole \n");
if(scelta == 3){
printf("\n\n\t\t\t ---> INFORMAZIONI \n");
a=3;
}
else printf("\n\n\t\t\t ---> informazioni \n");
ch = getch();
if(ch == 72)
scelta--;
else if(ch == 80)
scelta++;
if(scelta<1)
scelta = 5;
else if(scelta>5)
scelta = 1;
}

return a;

}

int regole(){
int a; char b;
system("cls");
printf(" __ _ __ \n");
printf(" | __ \\ /\\ | \\/ | /\\ \n");
printf(" | | | | / \\ | \\ / | / \\ \n");
printf(" | | | | / /\\ \\ | |\\/| | / /\\ \\ \n");
printf(" | |_| |/ __ \\ | | | | / ___ \\ \n");
printf(" |__/// \\_\\|| ||// \\\\ \n");

printf(" _ _ __ _ _ \n");
printf(" | |() / _|() | | \n");
printf(" _ _ _ _ __ _ _ | | _ | | _ _ _ _ | | __ _ \n");
printf(" / _| / _ \\| ' ` _ \\ | '_ \\ | || || || | / _|/ ` || _|/ _` |\n");
printf(" \\__ \\| _/| | | | | || |) || || || | | || (_| (| || || (| |\n");
printf(" |_/ \\__||| || ||| ._/ |||||| || \\_|\\,| \\_|\\,|\n");
printf(" | | \n");
printf(" |_| \n");
printf("---------------------------------------------------------------------\n");
printf(" il gioco consiste in una dama giocata su una scacchiera costituita\n");
printf(" da 15 caselle 8 bianche e 7 nere. Ogni giocatore dispone di tre\n");
printf(" pedine che muove sulle caselle bianche dal basso verso l'alto per\n");
printf(" le pedine bianche(1) vice versa per le pedine nere(2).i bianchi\n");
printf(" iniziano per primi.La partita termina con la vincita del giocatore\n");
printf(" che riesce per primo a portare la proria pedina sull'utima colonna\n");
printf("---------------------------------------------------------------------\n");
printf(" premi invio per tornare alla home o esc per chiudere il programma\n");
b=getch();
if(b==13){
a=2;
return a;
}
if(b==27){
a=1;
return a;
}

}

int informazioni(){
int a; char b;
system("cls");
printf(" __ _ __ \n");
printf(" | __ \\ /\\ | \\/ | /\\ \n");
printf(" | | | | / \\ | \\ / | / \\ \n");
printf(" | | | | / /\\ \\ | |\\/| | / /\\ \\ \n");
printf(" | |_| |/ __ \\ | | | | / ___ \\ \n");
printf(" |__/// \\_\\|| ||// \\\\ \n");

printf(" _ _ __ _ _ \n");
printf(" | |() / _|() | | \n");
printf(" _ _ _ _ __ _ _ | | _ | | _ _ _ _ | | __ _ \n");
printf(" / _| / _ \\| ' ` _ \\ | '_ \\ | || || || | / _|/ ` || _|/ _` |\n");
printf(" \\__ \\| _/| | | | | || |) || || || | | || (_| (| || || (| |\n");
printf(" |_/ \\__||| || ||| ._/ |||||| || \\_|\\,| \\_|\\,|\n");
printf(" | | \n");
printf(" |_| \n");
printf("---------------------------------------------------------------------\n");
printf(" questo gioco e' nato come progetto scolastico, consegnato alla classe \n");
printf(" terza B informatica da svolgersi nell'arco di 15 giorni. I membri di ogni gruppo \n");
printf(" hanno lavorato insieme per creare questo progetto. il nosto gruppo composto da 5 studenti ha lavorato in questo modo: \n");
printf(" \n");
printf("---------------------------------------------------------------------\n");
printf(" premi invio per tornare alla home o esc per chiudere il programma\n");
b=getch();
if(b==13){
a=2;
return a;
}
if(b==27){
a=1;
return a;
}
}

int gioco(){
int pedine[5][3] = {{1,0,1},
{0,1,0},
{0,0,0},
{0,2,0},
{2,0,2}};
char nome1[25],nome2[25],c;
int a=0,d=0;
int x1,y1;
int x2,y2;
int giocatore = 1;
partecipanti(nome1,nome2);
system("cls");
do{
scacchiera(pedine);
sceltapedine1(nome1,&x1,&x2,&y1,&y2);
movimento1(pedine,nome1,x1,x2,y1,y2,giocatore);
if(pedine[4][0]==1 || pedine[4][2]==1){
a=1;
}
else{

system("cls");
scacchiera(pedine);
sceltapedine1(nome2,&x1,&x2,&y1,&y2);
movimento2(pedine,nome2,x1,x2,y1,y2,giocatore);
}
if(pedine[0][0]==2 || pedine[0][2]==2){
a=2;
}
}while(a!=1 || a!=2);
vincita(nome1,nome2,a);
printf("---------------------------------------------------------------------\n");
printf(" premi invio per tornare alla home o esc per chiudere il programma\n");
c=getch();
if(c==13){
d=2;
return d;
}
if(c==27){
a=1;
return d;
}
}

int verificamovimento(int a[5][3], int x1, int y1, int x2, int y2, int giocatore){

int salto = 0, xj = 0, yj = 0;

//verifica se il pezzo si trova nella scacchiera!
if ((x1 < 0) || (x2 < 0) || (y1 < 0 ) || (y2 < 0) ||
(x1 > 4) || (x2 > 4) || (y1 > 4 ) || (y2 > 4)) {
return 0;
}

//verifica la diagonale di movimento
if ((abs(x1-x2) != 1) || (abs(y1-y2) != 1)) {

//controlla se la mossa e' un tentativo di salto
if ((abs(x1-x2) == 2) && (abs(y1-y2) && 2)) {
salto = 1;// do jump checking things here
} else {
printf("la diagonale non e' valida\n");
return 0;
}
}

//verifica che sia la pedina del giocatore
if (a[y1][x1] != giocatore) {
printf("non e' la tua pedina\n");
return 0;
}

//verifica che la destinazione non e' occupata
if (a[y2][x2] != 0) {
printf("destinazione occupata\n");
return 0;
}

//verifica se il movimento e' valido per il giocatore
if ( ( ((y1-y2) > 0 ) && (giocatore == 1) ) || ( ((y1-y2) < 0 ) && (giocatore == 2) ) ) {


printf("non ti puoi muovere in questa direzione\n");
return 0;
}

//verifica se si puo fare il salto
if (salto){


xj = (x1 + x2) / 2;
yj = (y1 + y2) / 2;
if ( (a[yj][xj] == giocatore) && (a[yj][xj] == 0) ) {
printf("sei saltato in una parte non occupata\n");
return 0;
} else {
return 2;
}
}
return 1;
}

void movimento1(int a[5][3],char nome1[],int x1,int x2, int y1,int y2,int pl){
int movimentovalido;
movimentovalido=verificamovimento(a, x1, y1, x2, y2, pl);
if (movimentovalido) {
if (movimentovalido == 2) {
a[y1][x1] = 0;
a[(y1+y2)/2][(x1+x2)/2] = 0;
a[y2][x2] = pl;

}else {
a[y1][x1] = 0;
a[y2][x2] = pl;
system("cls");
}
pl = (pl % 2) + 1;
} else {
printf("movimento non valido\n");
printf("%s non sbagliare piu' \n",nome1);
pl=2;
}
}

void movimento2(int a[5][3],char nome2[],int x1,int x2, int y1,int y2,int pl){
int movimentovalido;
movimentovalido = verificamovimento(a, x1, y1, x2, y2, pl);
if (movimentovalido) {
if (movimentovalido == 2) {
a[y1][x1] = 0;
a[(y1+y2)/2][(x1+x2)/2] = 0;
a[y2][x2] = pl;

} else {
a[y1][x1] = 0;
a[y2][x2] = pl;
system("cls");
}
pl = (pl % 2) + 1;
} else {
printf("movimento non valido\n");
printf("%s non sbagliare piu' \n",nome2);
pl=1;

}

void scacchiera(int matr[5][3]){
system("cls");
printf(" ####### ####### #######\n");
printf(" # # # #\n");
printf(" # # # #\n");
printf(" 0 # %d # %d # %d #\n",matr[0][0],matr[0][1],matr[0][2]);
printf(" # # # #\n");
printf(" # # # #\n");
printf(" ####### ####### ####### \n");
printf(" # # # # \n");
printf(" # # # #\n");
printf(" 1 # %d # %d # %d #\n", matr[1][0],matr[1][1],matr[1][2]);
printf(" # # # #\n");
printf(" # # # # \n");
printf(" ####### ####### #######\n");
printf(" # # # #\n");
printf(" # # # #\n");
printf(" 2 # %d # %d # %d #\n",matr[2][0],matr[2][1],matr[2][2]);
printf(" # # # #\n");
printf(" # # # #\n");
printf(" ####### ####### #######\n");
printf(" # # # # \n");
printf(" # # # #\n");
printf(" 3 # %d # %d # %d #\n",matr[3][0],matr[3][1],matr[3][2]);
printf(" # # # #\n");
printf(" # # # # \n");
printf(" ####### ####### #######\n");
printf(" # # # # \n");
printf(" # # # #\n");
printf(" 4 # %d # %d # %d #\n",matr[4][0],matr[4][1],matr[4][2]);
printf(" # # # #\n");
printf(" # # # # \n");
printf(" /####### ####### #######\n");
printf(" y/x 0 1 2\n");
}

void partecipanti(char nome1[],char nome2[]){
printf(" __ _ __ \n");
printf(" | __ \\ /\\ | \\/ | /\\ \n");
printf(" | | | | / \\ | \\ / | / \\ \n");
printf(" | | | | / /\\ \\ | |\\/| | / /\\ \\ \n");
printf(" | |_| |/ __ \\ | | | | / ___ \\ \n");
printf(" |__/// \\_\\|| ||// \\\\ \n");

printf(" _ _ __ _ _ \n");
printf(" | |() / _|() | | \n");
printf(" _ _ _ _ __ _ _ | | _ | | _ _ _ _ | | __ _ \n");
printf(" / _| / _ \\| ' ` _ \\ | '_ \\ | || || || | / _|/ ` || _|/ _` |\n");
printf(" \\__ \\| _/| | | | | || |) || || || | | || (_| (| || || (| |\n");
printf(" |_/ \\__||| || ||| ._/ |||||| || \\_|\\,| \\_|\\,|\n");
printf(" | | \n");
printf(" |_| \n");
printf("---------------------------------------------------------------------\n");
printf("Inserisci il nome del primo partecipante: ");
scanf("%s",nome1);
printf("Inserisci il nome del secondo partecipante: ");
scanf("%s",nome2);
}

void sceltapedine1(char nome1[],int *x1,int *x2, int *y1,int *y2){
printf("%s devi muovere una pedina \n",nome1);
printf("inserisci coordinata x:");
scanf("%d",&*x1);
printf("inserisci coordinata y:");
scanf("%d",&*y1);
printf("%s iserisci coordinate mossa pedina \n",nome1);
printf("inserisci coordinata x:");
scanf("%d",&*x2);
printf("inserisci coordinata y:");
scanf("%d",&*y2);
}

void sceltapedine2(char nome2[],int *x1,int *x2, int *y1,int *y2){
printf("%s devi muovere una pedina \n",nome2);
printf("inserisci coordinata x:");
scanf("%d",&*x1);
printf("inserisci coordinata y:");
scanf("%d",&*y1);
printf("%s iserisci coordinate mossa pedina \n",nome2);
printf("inserisci coordinata x:");
scanf("%d",&*x2);
printf("inserisci coordinata y:");
scanf("%d",&*y2);
}
void vincita(char nome1[],char nome2[],int b){
system("cls");
printf(" __ _ __ \n");
printf(" | __ \\ /\\ | \\/ | /\\ \n");
printf(" | | | | / \\ | \\ / | / \\ \n");
printf(" | | | | / /\\ \\ | |\\/| | / /\\ \\ \n");
printf(" | |_| |/ __ \\ | | | | / ___ \\ \n");
printf(" |__/// \\_\\|| ||// \\\\ \n");

printf(" _ _ __ _ _ \n");
printf(" | |() / _|() | | \n");
printf(" _ _ _ _ __ _ _ | | _ | | _ _ _ _ | | __ _ \n");
printf(" / _| / _ \\| ' ` _ \\ | '_ \\ | || || || | / _|/ ` || _|/ _` |\n");
printf(" \\__ \\| _/| | | | | || |) || || || | | || (_| (| || || (| |\n");
printf(" |_/ \\__||| || ||| ._/ |||||| || \\_|\\,| \\_|\\,|\n");
printf(" | | \n");
printf(" |_| \n");
printf("---------------------------------------------------------------------\n");
if(b==1)
printf("%s complimenti hai vinto",nome1);
if(b==2)
printf("%s complimenti hai vinto",nome2);

}

3 Risposte

  • Re: Gioco della Dama

    Ciao, intanto utilizza il tag code, altrimenti non si capisce molto. Comunque sembra che la funzione Getch() non sia stata dichiarata, poi probabilmente ci sono problemi con alcune parentesi {, anche se a dirti la verità non ho visto con attenzione il codice. Intanto sistema la funzione Getch(), poi compila e vedi che altri errori ti da
  • Re: Gioco della Dama

    Sisi, ho risolto grazie, mi ero dimenticato una parentesi in giro
  • Re: Gioco della Dama

    SpotPaladin ha scritto:


    Sisi, ho risolto grazie, mi ero dimenticato una parentesi in giro
    Perfetto, figurati
Devi accedere o registrarti per scrivere nel forum
3 risposte