Salve a tutti, cercavo aiuto per il seguente progetto in c, si tratta del gioco delle biglie
Gioco delle biglie Si vuole sviluppare un programma per la simulazione del gioco delle biglie. Supponiamo di avere un giocatore che gioca su di un campo di dimensione 50x50. Il giocatore (rosso in figura) in ogni istante può lanciare in una delle 8 direzioni. Nel campo da gioco esiste una sola buca, scelta in modo casuale all’inizio del gioco, che permette di terminare il gioco ed è nota al giocatore.
Il giocatore può incontrare diverse difficoltà durante il percorso
• 40 buche nascoste al giocatore fanno andare la palla in un’altra posizione scelta casualmente
• 20 buche fanno terminare il gioco senza arrivare alla fine del gioco
Il gioco procede in questo modo:
• La posizione iniziale del giocatore è casuale ma non può corrispondere con quella della buca.
• Ad ogni lancio viene visualizzato il campo da gioco e la posizione del giocatore. Viene chiesto al giocatore la direzione di lancio della palla.
• La palla che va fuori va rimessa in una posizione casuale sul bordo da dove è uscita.
• Il gioco termina o quando la palla va nella buca principale o quando si superano 50 tiri
L’algoritmo usa la function rand() in stdlib per generare numeri casuali: si ricorda che, per esempio, se numero_casuale è un int, la chiamata numero_casuale=rand()%11; genera un numero casuale intero (distribuzione uniforme) nell’insieme (0,1,2,3,4,5,6,7,8,9,10).
Ora beh io ho iniziato ad inizializzare il campo da gioco, ovviamente considerando una matrice 50X50 ma non capisco come dovrei andare a scrivere che 40 di queste 100 posizioni devono essere buche casuali,20 perdenti, 1 vincente e il resto caselle normali, in piu vorrei avere qualche indicazione su come dovrei inizializzare la pedina del giocatore, e su come andare a costruire le function riguardo lo spostamento della biglia.
ho provato ad inizializzare la generazione del campo in questo modo:
void generacampo (campo Campo[][50],int n,int m)
{
int i,j,nc,mc,bucaC,bucaP,bucaV,prato;
srand(time(NULL));
/*inizializzo le buche casuali*/
for(i=0;i<40;i++){
nc=1+rand()%49;
mc=1+rand()%49;
Campo[nc][mc].tipo=bucaC;
}
/*inizializzo le buche che fanno terminare il gioco*/
for(j=0;j<20;j++)
{
nc=1+rand()%49;
mc=1+rand()%49;
if(Campo[nc][mc].tipo!=bucaC){
Campo[nc][mc].tipo=bucaP;
}
}
nc=1+rand()%49;
mc=1+rand()%49;
if(Campo[nc][mc].tipo!=bucaC && Campo[nc][mc]!=bucaP){
Campo[nc][mc]=bucaV;
}
/*inizializzo le restanti caselle del campo da gioco*/
for(i=0;i<n;i++){
for(j=0;j<m;j++){
nc=1+rand()%49;
nm=1+rand()%49;
if(Campo[nc][nm]!=bucaC && Campo[nc][nm]!=bucaP && Campo[nc][nm]!=bucaV){
Campo[nc][nm]=prato;
}
}
}
}
Grazie mille della considerazione!