codice:#include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #define larghezza_colonne 10 #define altezza_righe 20 #define dimpezzo 3 int pezzo2 [3][3] ={ {0, 0, 0}, {1, 1, 1}, {0, 1, 0},}; int mappa2[altezza_righe][larghezza_colonne]={ {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,1,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {1,0,0,0,1,1,1,1,1,1} }; struct blocco{ int asse_verticale,asse_orizzontale; int array[dimpezzo][dimpezzo]; }pezzo; int mappa[altezza_righe][larghezza_colonne]={0}; int indice_mappai,indice_mappaj,indice_pezzoi=0,indice_pezzoj=0,posizione,righe,colonne,tasto; void stampa_mappa(); void stampa_pezzo(); void azzera_mappa(); void nuovo_pezzo(); int gameover(int); void azzera_pezzo(); void controllariga(); void cancellariga(); void piazza_pezzo(); void ruota_pezzo(); int movimentopossibile(); void muovi(); void main() { pezzo.asse_verticale=0; pezzo.asse_orizzontale=0; for (indice_pezzoi=0;indice_pezzoi<dimpezzo;indice_pezzoi++)//pezzo { for (indice_pezzoj=0;indice_pezzoj<dimpezzo;indice_pezzoj++) { pezzo.array[indice_pezzoi][indice_pezzoj]= pezzo2[indice_pezzoi][indice_pezzoj]; } }//fine pezzo printf("\n--------------------\n"); stampa_mappa(); stampa_pezzo(); while(1) { switch (getchar()) { case('s'): azzera_pezzo(); pezzo.asse_verticale++; if(!movimentopossibile(pezzo.asse_verticale,pezzo.asse_orizzontale)) { pezzo.asse_verticale--; piazza_pezzo(); controllariga(); nuovo_pezzo(); } muovi(); stampa_mappa(); stampa_pezzo(); break; case('d'): azzera_pezzo(); pezzo.asse_orizzontale++;// pezzo.asse_orizzontale è il movimento in orizzontale if(!movimentopossibile(pezzo.asse_verticale,pezzo.asse_orizzontale)) { pezzo.asse_orizzontale--;//se nn è possibile torna indietro controllariga(); } muovi(); stampa_mappa(); stampa_pezzo(); break; case('a'): azzera_pezzo(); pezzo.asse_orizzontale--; if(!movimentopossibile(pezzo.asse_verticale,pezzo.asse_orizzontale)) { pezzo.asse_orizzontale++; controllariga(); } muovi(); stampa_mappa(); stampa_pezzo(); break; case ('w'): azzera_pezzo(); ruota_pezzo(); muovi(); stampa_mappa(); stampa_pezzo(); printf("\n"); break; default: printf("\n pezzoverticale=%d pezzoorizzontale=%d\n",pezzo.asse_verticale,pezzo.asse_orizzontale); break; }// fine switch }//fine while }// fine main