Ciao a tutti!
Sto' creando un programma con il quale è possibile posizionare e spostare 4 "pezzi" (vogilo poi trasformarlo in un gioco di dama) all'interno di una griglia 8x8.
Ho scritto questo codice:
Il mio problema stà nelle ultime righe di "Elaboraschema": infatti il controllo fatto dall'ultimo if restitusce sempre true, perchè lo schema è stato precedentemente ripulito. Inoltre non so perchè ma la casella 1-1 restituisce sempre 4(il valore che indica un pezzo).codice:#include <iostream> #include <stdlib.h> #define coord 8 using namespace std; void Elaboraschema(int[][coord],bool); void Stampaschema(int[][coord]); int main() { bool uscito=true,prep=true; int coordinate [coord][coord];//array dei valori contenuti nelle caselle della griglia int x,y,latitudine,longitudine; for(x=0;x<coord;x++)//setto tutti i valori della caselle a zero servendomi delle variabili y e x for(y=0;y<coord;y++) coordinate[x][y]=0; Elaboraschema(coordinate,prep);//richiamo la funzione la prima volta prep=false; while(uscito==true){ Elaboraschema(coordinate,prep);//richiamo la fuzione all'infinito dopo aver modificato il valore di prep } return 0; } void Stampaschema(int b[][coord]){//funzione che disegna la griglia con i valori dell'array b int x,y; cout<<"0 1 2 3 4 5 6 7 8\n"; for(y=0;y<coord;y++) {//riporto i valori nella griglia cout<<y+1<<" "; for(x=0;x<coord;x++) { cout<<b[x][y]<<" "; } cout<<"\n"; } } void Elaboraschema(int schema[][coord],bool prep){//funzione che elabora i valori della griglia da stampare int x,y,elaborati=0,pezzo,ypezzo,xpezzo; int pezzi[4][2];//array contenente le coordinate(0=y,1=x) di 4 pezzi e gli stessi for(y=0;y<coord;y++) {//estraggo dallo scema gli eventuali pezzi già presenti e le loro coordinate for(x=0;x<coord;x++) { if(schema[y][x]>0) {pezzi[elaborati][0]=y;pezzi[elaborati][1]=x;elaborati++;} } } for(x=0;x<coord;x++)//cancello i pezzi dalla griglia for(y=0;y<coord;y++) schema[x][y]=0; if(prep==true) {for(x=0;x<4;x++)for(y=0;y<2;y++)pezzi[x][y]=0;}//la prima volta che la funzione è richiamata (prep=true) ripulisco l'array contenente i pezzi cout<<"pezzo?\n"; cin>>pezzo;//richiedo il numero del pezzo da elaborare cin>>ypezzo;//richiedo le nuove coordinate y del pezzo cin>>xpezzo;//richiedo le nuove coordinate x del pezzo ypezzo--; xpezzo--; if(schema[ypezzo][xpezzo]==0) {//se le nuove coordinate sono vuote posizione vi posiziona il pezzo elaborato ed elabora la nuova griglia pezzi[pezzo][0]=ypezzo; pezzi[pezzo][1]=xpezzo; schema[pezzi[0][0]][pezzi[0][1]]=4; schema[pezzi[1][0]][pezzi[1][1]]=4; schema[pezzi[2][0]][pezzi[2][1]]=4; schema[pezzi[3][0]][pezzi[3][1]]=4; Stampaschema(schema);//stampa la griglia }else{ cout<<"Coordinate errate: i pezzi non possono essere sovrapposti!";//restituisce errore se le coordinate sono occupate da un altro pezzo } }
Premesso ce non sono molto esperto di C++ e che NON so programmare in alcun modo ad oggetti, qualcuno saprebbe spiegarmi come risolvere questi problemi in modo semplice, o spiegarmi come strutturare il codice in modo più semplice (riconosco che è strutturato male e disordinatamente)?
Grazie in anticipo!

Rispondi quotando