Oppure

Loading
09/01/12 17:10
konan_ 65
ops ho sbagliato a postare il codice, ho messo quello con l'apice singolo, cmq non andava nemmeno con i doppi... a detta del prof è perchè gli operatori di confronto non funzionano sugli arrey, ma solo su cose primitive del c, quindi userò un s/n e pace e bene...
aaa
10/01/12 20:01
konan_ 65
sono ad un punto morto, devo sviluppare la stampa del campo da gioco che mi visualizzi il progresso dei giocatori sul campo, ho creato una matrice 7x9, però quando vado a stamparla se do il printf di stampa della matrice dentro al ciclo for per mandare avanti la struct mi stampa una matrice a giocatore (combinandole tra l'altro insieme, rendendo il tutto incomprensibile), se metto il comando di stampa della matrice fuori dal for mi stampa si i giocatori nella giusta posizione su una sola matrice, ma poi mi stampa anche i numeri delle caselle dove dovrebbe esserci su il giocatore, e poi non ho la minima idea di come fare se ci son 2 giocatori sulla stessa caselle

ecco uno de tanti codici che ho scritto

// Stampa campo
            for (r=0; r<RIGHE; r++){
                printf("\n");
                for (c=0; c<COLONNE; c++){
                    if (giocatori[1].tiri == campo[r][c]){
                        for (i=0; i<numeroGiocatori; i++){
                            printf("     G%d", i+1);
                        }
                    }
                    else{
                        printf("%7d", campo[r][c]);
                    }
                }
            }


help me please!
aaa
10/01/12 21:49
anthony015
1) non ho capito cosa dovrebbe fare quel ciclo, potresti commentare le righe?
2) considera che se stampi 2 caratteri vai in un altra cella, quindi la rappresentazioni viene sfasata
3) usa una libreria grafica, per una cosa del genere dovrebbe andare bene anche graphics.h
aaa
10/01/12 22:14
konan_ 65
// Stampa campo
            for (r=0; r<RIGHE; r++){// ciclo solito per stampare una matrice
                printf("\n");
                for (c=0; c<COLONNE; c++){// ciclo solito per stampare una matrice
                    /*questo if e il seguente for mi servono per stampare a video la posizione dei giocatori, chessò G1 al posto del numero 3, G2 al posto del 5 ecc*/
                    if (giocatori[1].tiri == campo[r][c]){
                        for (i=0; i<numeroGiocatori; i++){
                            printf("     G%d", i+1);
                        }
                    }
                    else{
                        printf("%7d", campo[r][c]);
                    }
                }
            }


io sostanzialmente devo stampare a video la posizione dei giocatori nel campo, quindi ho creato in precedenza una matrice 7X9, quindi i primi 2 cicli for sono i cicli normali per la stampa della matrice,

            for (r=0; r<RIGHE; r++){
                printf("\n");
                for (c=0; c<COLONNE; c++){
                        printf("%7d", campo[r][c]);
                }
            }

quindi se scrivo solo questo mi viene fuori la mia matrice numerata da 1 a 63

dopo di che però ho bisogno che il programma non me la riempia solo con i numeri, ma chessò, se il giocatore1 è nella casella 23 al posto del 23 scriva G1 ecc. quindi ho creato il 3° ciclo for che mi va a controllare la posizione dei giocatori nella struct, e che in teoria mi dovrebbe sostituire il giocatore al numero della casella in cui si trova, ma non lo fa, o meglio, a seconda del codice che scrivo e all'ordine dei cicli for lo fa anche, ma non come dovrebbe, i risultati che ho ottenuto sono:
-stampa di tante matrici quanti sono i giocatori, una sotto l'altra in cui nella prima compare il giocatore1, nella seconda il 2 ecc.
-stampa di tante matrici quanti sono i giocatori, ma questa volta affiancate quindi una roba del tipo 1 1 1 2 2 2 3 3 3 G1 4 4 5 G2 5 6 6 6 7 7 7
8 8 G3 9 9 9 10 10 10 11 11 11 12 12 12 13 13 13
- stampa di una sola matrice su cui però risulta che tutti i giocatori siano sulla stessa cella nonostante non sia così
- stampa di una sola matrice dove la posizione dei giocatori è giusta, ma questi non vengono sostituiti al numero quindi tipo 1 2 3 4 G1 5 6 G2 7

poco mi importa se sfaso la grafica, dopo in qualche modo spero di rimediare a quello, il top sarebbe anche se riuscissi a confrontare i vari giocatori tra loro, e nel caso siano su una stessa casella stampare una roba tipo G1/G2...
aaa
10/01/12 23:09
anthony015
prova così:
for (r=0; r<RIGHE; r++){
                printf("\n");
                for (c=0; c<COLONNE; c++){
                    for (i=0; i<numeroGiocatori; i++){
                        if (giocatori[i].tiri == campo[r][c]){
                            printf("     G%d", i+1);
                        }
                        else if(i==numeroGiocatori-1){
                        printf("%7d", campo[r][c]);
                        }
                    }                    
                }
            }
aaa
11/01/12 14:16
konan_ 65
ci siamo quasi, con il codice così scritto mi posiziona i giocatori correttamente nel campo, però fa la sostituzione numero-giocatore solo con l'ultimo, con gli altri mi stampa giocatore e numero...
aaa
11/01/12 14:59
anthony015
int flagCiclo=0;
for (r=0; r<RIGHE; r++){
                printf("\n");
                for (c=0; c<COLONNE; c++){
                    for (i=0; i<numeroGiocatori; i++){
                        if (giocatori[i].tiri == campo[r][c]){
                            printf("     G%d", i+1);
                            flagCiclo=1;
                        }
                        else if(i==numeroGiocatori-1&&flagCiclo==0){
                        printf("%7d", campo[r][c]);
                        }
                    }         
                    flagCiclo=0;         
                }
            }
aaa