Ma se scrivo così:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 50
#define VALSPAZIO 0
#define VALBNAS 1
#define VALBVIS 2
#define VALBVIN 3
#define VALBIGLIA 4
#define CHSPAZIO '.'
#define CHBNAS '.'
#define CHBVIS '*'
#define CHBVIN '*'
#define CHBIGLIA 'O'
int main()
{
char griglia[SIZE][SIZE];
int colonna,riga,a, x1, y1, 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++)
griglia[riga][colonna] = VALSPAZIO;
int cn = 0;
for(cn=0; cn<40; cn++)
{
riga = rand() % SIZE;
colonna = rand() % SIZE;
griglia[riga][colonna] = VALBNAS;
}
for (cn = 0; cn<20; cn++)
{
riga = rand() % SIZE;
colonna = rand() % SIZE;
griglia[riga][colonna] = VALBVIS;
}
colonna = rand() % SIZE;
riga = rand() % SIZE;
griglia[riga][colonna] = VALBVIN;
x1 = rand() % 50;
y1 = rand() % 50;
griglia[x1][y1] = VALBIGLIA;
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++)
{
char chv = CHSPAZIO;
switch (griglia[riga][colonna])
{
case VALBNAS:
chv = CHBNAS;
break;
case VALBVIS:
chv = CHBVIS;
break;
case VALBVIN:
chv = CHBVIN;
break;
case VALBIGLIA:
chv = CHBIGLIA;
}
printf(" %c ", chv);
}
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] == VALBVIS)
{
printf("Hai perso");
return 0;
}
if (griglia[xpos][ypos] == VALBVIN)
{
printf("Hai vinto 50");
return 0;
}
if (griglia[xpos][ypos] == VALBNAS)
{
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]!=CHBVIS;
griglia[xpos][ypos]!=CHBVIN;
griglia[xpos][ypos]!=CHBNAS;
}
}
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);
}
quando mi sposto in una direzione, la biglia sparisce dalla griglia. Forse ho sbagliato qualcosa?