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