Salve a tutti. Ho un problema riguardo il gioco delle biglie. Prima mi funzionavano le buche nascoste. Adesso modificando il codice, non funzionano più. Questo è il codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 50
#define BUCA '*'
#define BUCAN '+'
int main()
{
char griglia[SIZE][SIZE];
int colonna,riga,c1,c2,c3,a, x1, y1, b, scelta, rn1,rn2;
int cont=1;
int rBucaV, cBucaV, rBucaN, cBucaN;
char biglia, b1;
srand( (unsigned)time(NULL) );
for(colonna=0;colonna<SIZE;colonna++)
for(riga=0;riga<SIZE;riga++)
b=griglia[riga][colonna] = '.';
c1 = 0;
c2 = 0;
c3 = 0;
int xlose=x1;
int ylose=y1;
while(c1 < 40)
{
colonna = rand() % SIZE;
riga = rand() % SIZE;
griglia[riga][colonna] = BUCAN;
rBucaN=riga;
cBucaN=colonna;
c1++;
}
while(c2 < 20)
{
colonna = rand() % SIZE;
riga = rand() % SIZE;
griglia[riga][colonna] = BUCA;
c2++;
}
while(c3 < 1)
{
colonna = rand() % SIZE;
riga = rand() % SIZE;
griglia[riga][colonna] = BUCA;
rBucaV=riga;
cBucaV=colonna;
c3++;
}
x1=rand() %50;
y1=rand() %50;
if(griglia[x1][y1]==BUCA && rBucaV==x1 && cBucaV==y1)
{
printf("50");
return 0;
}
biglia=griglia[x1][y1] = 'O';
int xpos = x1;
int ypos = y1;
printf("************************* \n");
printf("* IL GIOCO DELLE BIGLIE * \n");
printf("************************* \n");
do{
printf("Seleziona le opzioni disponibili: \n");
printf("1)Gioca \n2)Crediti \n");
scanf("%d",&scelta);
switch(scelta)
{
case 1:system("cls");
while (cont<1000)
{
system("cls||clear");
for(colonna=0;colonna<SIZE;colonna++)
{
for(riga=0;riga<SIZE;riga++)
printf(" %c ",griglia[riga][colonna]);
putchar('\n');
}
printf("Lancio %d \n", cont);
printf("1 Sinistra - 2 Destra - 3 Su - 4 Giu' - 5 Giu' a sinistra - 6 Su a sinistra - 7 Giu' a destra - 8 Su a destra \n");
int savex = xpos;
int savey = ypos;
int move = 0;
scanf("%d", &move);
switch (move)
{
case 1: if (xpos > -1) xpos--; break;
case 2: if (xpos < 50) xpos++; break;
case 3: if (ypos > -1) ypos--; break;
case 4: if (ypos < 50) ypos++; break;
case 5: if (ypos < 50 && xpos > -1) xpos--; ypos++; break;
case 6: if (ypos > -1 && xpos > -1) xpos--; ypos--; break;
case 7: if (ypos < 50 && xpos < 50) xpos++; ypos++; break;
case 8: if (ypos > -1 && xpos <50) xpos++; ypos--; break;
default: cont--;
}
if(griglia[xpos][ypos]==BUCA)
{
if(rBucaV==xpos && cBucaV==ypos)
{
printf("Hai vinto");
return 0;
}
else
{
printf("Hai perso");
return 0;
}
if(rBucaV==xpos && cBucaV==ypos && cont==2)
{
printf("50");
return 0;
}
}
else
if(griglia[xpos][ypos]==BUCAN)
{
if(rBucaN==xpos && cBucaN==ypos)
{
xpos=rand() %50;
ypos=rand() %50;
}
}
if(xpos==50||ypos==50)
{
rn1=1+rand()%1;
rn2=1+rand()%3;
xpos=xpos-rn1;
ypos=ypos-rn2;
}
if(xpos==-1||ypos==-1)
{
rn1=1+rand()%1;
rn2=1+rand()%3;
xpos=xpos+rn1;
ypos=ypos+rn2;
}
griglia[savex][savey] = '-';
griglia[xpos][ypos] = 'O';
cont++;
if(cont==1)
{
griglia[xpos][ypos]!=BUCA;
griglia[xpos][ypos]!=BUCAN;
}
}
printf("Hai finito il numero di lanci. Game Over \n"); return 0;
case 2:system("cls"); printf("Gioco creato da Pasquale Marzocchi, studente di informatica dell'Universita' Parthenope \n"); break;
}
printf("Premi un tasto qualunque per tornare al menu, premi 9 se invece vuoi uscire dal gioco' \n");
scanf("%d",&scelta);
}while(scelta!=9);
}
P.S:Riguardo questa parte (
if(griglia[x1][y1]==BUCA && rBucaV==x1 && cBucaV==y1)
{
printf("50");
return 0;
}), ho lasciato così per quando riuscirò a risolvere prima questo problema, poi ripasserò dopo nel thread precedente.