Ragazzi aggiornamento. Ho quasi finito di fare il programma. Ci sarebbe solo un problema. Che non riesco a far spostare casualmente la biglia randomicamente vicino ai bordi quando esce dalla griglia, cioè ci sono riuscito a metà. Con il bordo destro e in basso. Il bordo a sinistra e in alto no, succede che quando cerco di andare verso il bordo a sinistra, esce dalla griglia. Ecco il codice:
[CODE]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 50
int main()
{
char griglia[SIZE][SIZE];
int colonna,riga,c1,c2,c3,a, x1, y1, b, scelta, rn1,rn2;
int cont=1;
char biglia, b1, b2, b3;
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;
b1=griglia[riga][colonna] = 'è';
c1++;
}
while(c2 < 20)
{
colonna = rand() % SIZE;
riga = rand() % SIZE;
b2=griglia[riga][colonna] = '*';
c2++;
}
while(c3 < 1)
{
colonna = rand() % SIZE;
riga = rand() % SIZE;
b3=griglia[riga][colonna] = '*';
c3++;
}
x1=rand() %50;
y1=rand() %50;
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<51)
{
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 > 0) xpos--; break;
case 2: if (xpos < 50) xpos++; break;
case 3: if (ypos > 0) ypos--; break;
case 4: if (ypos < 50) ypos++; break;
case 5: if (ypos < 50 && xpos > 0) xpos--; ypos++; break;
case 6: if (ypos > 0 && xpos > 0) xpos--; ypos--; break;
case 7: if (ypos < 50 && xpos < 50) xpos++; ypos++; break;
case 8: if (ypos > 0 && xpos <50) xpos++; ypos--; break;
default: cont--;
}
if(griglia[xpos][ypos]==b2)
{
printf("Hai perso");
return 0;
}
if(griglia[xpos][ypos]==b1)
{
xpos=rand() %50;
ypos=rand() %50;
}
if(griglia[xpos][ypos]==b3)
{
printf("Hai vinto!");
return 0;
}
if(xpos==50||ypos==50)
{
rn1=1+rand()%3;
rn2=1+rand()%3;
xpos=xpos-rn1;
ypos=ypos-rn2;
}
if(xpos==0||ypos==0)
{
rn1=1+rand()%3;
rn2=1+rand()%3;
xpos=xpos-rn1;
ypos=ypos-rn2;
}
griglia[savex][savey] = '-';
griglia[xpos][ypos] = 'O';
cont++;
}
printf("Hai finito il numero di lanci. Game Over \n"); return 0;
case 2:system("cls"); printf(""); break; //lo scrivo alla fine
}
printf("Premi un tasto qualunque per tornare al menu, premi 9 se invece vuoi uscire dal gioco' \n");
scanf("%d",&scelta);
}while(scelta!=9);
}
[\CODE]