27/05/17 10:02
Ripeto.. Se indenti correttamente il codice (e non l'hai ancora fatto) ti accorgi subito dove sta l'errore.
Fossi in te cercherei di capire se la do..while è aperta/chiusa correttamente.
Fossi in te cercherei di capire se la do..while è aperta/chiusa correttamente.
27/05/17 10:06
Mikelius
Questo e' da Wikipedia.
wikiwand.com/it/…
Troverai una brevissima guida sui diversi stili con cui puoi identare. io ti consiglio lo stile K&R.
Lo noti che apri 2 parentesi e ne chiudi 3?
Con l'identazione (cioè allineare le parentesi di apertura e chiusura in questo caso) lo noteresti subito che c'è una parentesi di troppo. Quindi ti dovresti chiedere. Ma è una parentesi in più o doveva essere chiusa da qualche altra parte?
wikiwand.com/it/…
Troverai una brevissima guida sui diversi stili con cui puoi identare. io ti consiglio lo stile K&R.
Postato originariamente da lallo12:
in realtà sono al primo anno di programmazione1...il pezzo di ocdice che hai postato tu dovrebbe essere riscritto cosi
in realtà sono al primo anno di programmazione1...il pezzo di ocdice che hai postato tu dovrebbe essere riscritto cosi
void pulisci(int sparato, char campo[8][7], int *x, int *y) { if(sparato==1) { campo[*x][*y]=' '; } } }
Lo noti che apri 2 parentesi e ne chiudi 3?
Con l'identazione (cioè allineare le parentesi di apertura e chiusura in questo caso) lo noteresti subito che c'è una parentesi di troppo. Quindi ti dovresti chiedere. Ma è una parentesi in più o doveva essere chiusa da qualche altra parte?
Ultima modifica effettuata da Mikelius 27/05/17 10:10
aaa
27/05/17 13:38
lallo12
ora parte, ma non mi piace molto graficamente, potete provarlo anche voi e darmi dei consigli ?
/* Si vuole sviluppare un programma per la simulazione del gioco di 4 navicelle spaziali . La mappa da gioco risulta di forma rettangolare e di dimensioni 8x7. LÂ’utente ha a disposizione una navicella ferma (rettangolo rosso in figura). Nel campo da gioco si muovono 3 navicelle avversarie che devono essere colpite (rettangolo giallo, blu e verde). */ /* Si vuole sviluppare un programma per la simulazione del gioco di 4 navicelle * spaziali . La mappa da gioco risulta di forma rettangolare e di dimensioni * 8x7. LÂ’utente ha a disposizione una navicella ferma (rettangolo rosso in * figura). Nel campo da gioco si muovono 3 navicelle avversarie che devono * essere colpite (rettangolo giallo, blu e verde). */ #include <stdio.h> #include <stdlib.h> #include <time.h> // prototipi void muovi_gialla(int random, char campo[8][7], int *G_x, int *G_y); void muovi_verde(int random, char campo[8][7], int *V_x, int *V_y); void muovi_blue(int random, char campo[8][7], int *B_x, int *B_y); int controllo(int spara, int y); void pulisci(int sparato, char campo[8][7], int *x, int *y); int main(int argc, char *argv[]) { srand((unsigned int)time(0)); int i, j, G_x, G_y, B_x, B_y, V_x, V_y, R_x, R_y, random, sparato_G, sparato_B, sparato_V; int K = 0; int spara = 1; char campo[8][7] = { {'G', ' ', ' ', ' ', ' ', ' ', ' '}, {' ', ' ', ' ', 'B', ' ', ' ', ' '}, {' ', ' ', ' ', ' ', ' ', ' ', 'V'}, {' ', ' ', ' ', ' ', ' ', ' ', ' '}, {' ', ' ', ' ', ' ', ' ', ' ', ' '}, {' ', ' ', ' ', ' ', ' ', ' ', ' '}, {' ', ' ', ' ', ' ', ' ', ' ', ' '}, {' ', ' ', ' ', 'R', ' ', ' ', ' '}}; G_x = 0; G_y = 0; B_x = 1; B_y = 3; V_x = 2; V_y = 6; R_x = 7; R_y = 3; // posizionamento iniziale for (i = 0; i < 8; i++) { for (j = 0; j < 7; j++) printf("%2c", campo[i][j]); printf("\n"); } K = 0; // passi do { K++; if (sparato_V != 1) { // se la navicella non è stata colpita allora muoverla random = rand() % 10; muovi_verde(random, campo, &V_x, &V_y); printf("\tRandom V:%d", random); } else { printf("la verde e' colpita\n"); } if (sparato_B != 1) { random = rand() % 10; muovi_blue(random, campo, &B_x, &B_y); printf("\tRandom V:%d", random); } else { printf("la blue e' colpita\n"); } if (sparato_G != 1) { random = rand() % 10; muovi_gialla(random, campo, &G_x, &G_y); printf("\tRandom V:%d", random); } else { printf("la gialla e' colpita\n"); } printf("\n"); for (i = 0; i < 8; i++) // visualizza sullo schermo il campo dopo il primo // movimento delle navicelle { for (j = 0; j < 7; j++) printf("%c", campo[i][j]); printf("\n"); printf("\n\n"); printf("\n\t\t\t k=%d\n", K); printf("\t V=%d%d", V_x, V_y); if (sparato_V == 1) { printf("colpita"); } printf("\n\t B=%d%d", B_x, B_y); if (sparato_B == 1) { printf("colpita"); } printf("\n\t B=%d%d", G_x, G_y); if (sparato_G == 1) { printf("colpita"); } printf("\n\nvuoi sparare? 1=SI alro int=NO \n\n"); scanf("&d", &spara); printf("\n"); if (sparato_V != 1) { sparato_V = controllo(spara, V_y); } if (sparato_B != 1) { sparato_B = controllo(spara, B_y); } if (sparato_G != 1) { sparato_G = controllo(spara, G_y); } // questi controlli servono per controllare,in caso di sparo, se le // navicelle sono in posizione pulisci(sparato_V, campo, &V_x, &V_y); pulisci(sparato_B, campo, &B_x, &B_y); pulisci(sparato_G, campo, &G_x, &G_y); } } while (((sparato_G != 1) || (sparato_B != 1) || (sparato_V != 1)) && (K < 100)); /*esegui il ciclo finchè tutte e tre le navicelle non sono state distrutte oppure il contatore passi è arrivato a 100*/ printf("\n\n\n Fine partita \n\n\n"); system("PAUSE"); return 0; } /* Funzioni movimento random: è il numero random generato nel main *x, *y sono coordinate delle navicelle che cambiano con il passare dei turni */ void muovi_gialla(int random, char campo[8][7], int *G_x, int *G_y) { if ((random < 3) && (*G_y == 6)) { campo[*G_x][*G_y] = ' '; *G_y = 0; } else if (random < 3) { campo[*G_x][*G_y] = ' '; *G_y = *G_y + 1; } campo[*G_x][*G_y] = 'G'; } void muovi_verde(int random, char campo[8][7], int *V_x, int *V_y) { campo[*V_x][*V_y] = ' '; if (random < 4) { if (*V_y == 6) *V_y = 2; else if (*V_y == 5) *V_y = 1; else if (*V_y == 4) *V_y = 0; else *V_y = *V_y + 3; } else if (random >= 4 && random <= 6) { if (*V_y == 0) *V_y = 5; else if (*V_y = 1) *V_y = 6; else *V_y = *V_y + 2; } else if (random >= 7) { if (*V_y == 6) *V_y = 0; else *V_y = *V_y + 1; } campo[*V_y][*V_y] = 'V'; } void muovi_blue(int random, char campo[8][7], int *B_x, int *B_y) { campo[*B_x][*B_y] = ' '; if (random < 7) { if (*B_y == 1) *B_y = 6; else if (*B_y == 0) *B_y = 5; else *B_y = *B_y - 2; } else if (random > 7) { if (*B_y == 0) *B_y = 6; else *B_y = *B_y - 1; } campo[*B_x][*B_y] = 'B'; } /* la function che segue controlla se una navicella e' stata colpita, controlla inoltre anche se l'utente ha inserito il valore 1(l'opzione per sparare ) o un altro intero (nel caso l'utente decidesse di non sparare)*/ int controllo(int spara, int y) { int sparato; if ((spara == 1) && (y == 3)) { sparato = 1; } else { sparato = 0; } return sparato; } void pulisci(int sparato, char campo[8][7], int *x, int *y) { if (sparato == 1) { campo[*x][*y] = ' '; } }
Ultima modifica effettuata da lumo 27/05/17 15:34
aaa
27/05/17 14:50
Mikelius
Parte, ok.
ma funziona come vorresti?
Lascia perdere la grafica e l'ottimizzazzione per ora.
Come ho detto: la parentesi sbagliata era solo 1 degli errori presenti.
Dovresti farti uno schemino su carta e elaborare il progetto funzione per funzione, passo per passo.
Qua, come e quando hai dato un valore a sparato_V?
Questa invece, che vorresti facesse?
ma funziona come vorresti?
Lascia perdere la grafica e l'ottimizzazzione per ora.
Come ho detto: la parentesi sbagliata era solo 1 degli errori presenti.
Dovresti farti uno schemino su carta e elaborare il progetto funzione per funzione, passo per passo.
// righe 39-48 if (sparato_V!=1){ //se la navicella non è stata colpita allora muoverla random=rand()%10; muovi_verde(random, campo, &V_x,&V_y); printf("\tRandom V:%d",random); } else { printf("la verde e' colpita\n"); }
Qua, come e quando hai dato un valore a sparato_V?
// righe 117-130 void muovi_gialla(int random, char campo[8][7], int *G_x,int *G_y) { if((random<3)&&(*G_y==6)) { campo[*G_x][*G_y]=' '; *G_y=0; } else if(random<3) { campo[*G_x][*G_y]=' '; *G_y=*G_y+1; } campo[*G_x][*G_y]='G'; }
Questa invece, che vorresti facesse?
aaa
27/05/17 15:35
lumo
lallo ho indentato il tuo codice per pietà, impara come si fa altrimenti è impossibile per gli altri leggerlo, specie per il tuo professore di programmazione 1.
aaa
27/05/17 19:37
AldoBaldo
Io non ho ancora capito come dovrebbe essere la dinamica del gioco...
Edit: anche in questo caso mi sembrava di ricordare qualcosa di simile. Non siamo su questa stessa linea?
pierotofy.it/pages/extras/forum/2/1060600-problema_per_un_progetto_c/
Edit: anche in questo caso mi sembrava di ricordare qualcosa di simile. Non siamo su questa stessa linea?
pierotofy.it/pages/extras/forum/2/1060600-problema_per_un_progetto_c/
Ultima modifica effettuata da AldoBaldo 27/05/17 19:49
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
28/05/17 11:04
lumo
Postato originariamente da AldoBaldo:
Io non ho ancora capito come dovrebbe essere la dinamica del gioco...
Edit: anche in questo caso mi sembrava di ricordare qualcosa di simile. Non siamo su questa stessa linea?
pierotofy.it/pages/extras/forum/2/1060600-problema_per_un_progetto_c/
Io non ho ancora capito come dovrebbe essere la dinamica del gioco...
Edit: anche in questo caso mi sembrava di ricordare qualcosa di simile. Non siamo su questa stessa linea?
pierotofy.it/pages/extras/forum/2/1060600-problema_per_un_progetto_c/
Ma visto che a quello avevi dato la soluzione, qui saremmo al secondo che chiede la stessa cosa? Non so se ridere o piangere
Per ora lascio aperta la discussione ma mi aspetto più serietà, altrimenti chiudo.
Ultima modifica effettuata da lumo 28/05/17 11:29
aaa