codice:
int gameover(int posizione_riga)
{
    int i;
    for (i=posizione_riga;i<altezza_righe;i--)
    if (i<0)
    return 1;
    return 0;
}//fine game over

void nuovo_pezzo()
{
    int i,j;
    for (i=0; i<dimpezzo;i++)
    {
        for (j=0; j<dimpezzo;j++)
        pezzo.array[i][j] = pezzo2[i][j];
        pezzo.asse_verticale=0;
        pezzo.asse_orizzontale=5;
    }
}//fine nuovo pezzo
void ruota_pezzo()
{
int i,j;
int pezzo1[dimpezzo][dimpezzo];
pezzo1[0][0]=pezzo.array[2][0];
pezzo1[0][1]=pezzo.array[1][0];
pezzo1[0][2]=pezzo.array[0][0];
pezzo1[1][0]=pezzo.array[2][1];
pezzo1[1][1]=pezzo.array[1][1];
pezzo1[1][2]=pezzo.array[0][1];
pezzo1[2][0]=pezzo.array[2][2];
pezzo1[2][1]=pezzo.array[1][2];
pezzo1[2][2]=pezzo.array[0][2];
for (i=0;i<dimpezzo;i++)
    {
        for (j=0;j<dimpezzo;j++)
        pezzo.array[i][j]=pezzo1[i][j];
    }
}//fine ruota pezzo
void cancellariga(int posizione_righe)
{
    int i,j;
       for (i=posizione_righe;i>=0;i--)
        {
            for(j=0; j<larghezza_colonne;j++)
            {

               if(i<altezza_righe)
                mappa2[i][j]=mappa2[i-1][j];

            }
        }
}//fine cancellariga
void controllariga()
{
    int i,j,cont=0;
    for(i=0;i<altezza_righe;i++)
    {
        for(j=0; j<larghezza_colonne;j++)
        {
            if(mappa2[i][j]==1)
                cont++;
        }//fine for
        if(cont<10)
            cont=0;
        else if(cont==10)
        {
             cancellariga(i);
             cont=0;

        }
    }
}//fine controlla riga
int movimentopossibile()
{
    int i,j;
    for (i=pezzo.asse_verticale; i<20;i++)
    {
        for (j=pezzo.asse_orizzontale;j<10;j++)
        {

            if (mappa2[i][j==10])
              //  if (pezzo.array[i][j]==1)
                {
                return 0;
                }
                //else
                {
                return 1;
                }
        }
    }
    }

void stampa_mappa() //stampa la mappa
{
    int i,j;
    for(i=0;i<altezza_righe;i++)
    {
      for(j=0;j<larghezza_colonne ;j++)
        {
            printf("%d ",mappa2[i][j]);
        }
    printf("\n");
    }
    printf("\n");
}//fine stampa mappa
void stampa_pezzo() //stampa la mappa
{
    int i,j;
    for(i=0;i<dimpezzo;i++)
    {
        for(j=0;j<dimpezzo;j++)
        {
             printf("%d ",pezzo.array[i][j]);
        }
    printf("\n");
    }
}
void azzera_mappa()// porta gli elementi di mappa a 0
{
    int i,j;
    for(i=0;i<altezza_righe;i++)
    {
        for(j=0;j<larghezza_colonne ;j++)
        {
            mappa[i][j]=0;
        }
    }
}//fine azzera mappa
void piazza_pezzo()//modificato muovi
{
    int i,j;
    for(i=pezzo.asse_verticale;i<pezzo.asse_verticale+dimpezzo;i++)
    {
        for(j=pezzo.asse_orizzontale;j<pezzo.asse_orizzontale+dimpezzo;j++)
        {
            if (pezzo.array[i-pezzo.asse_verticale][j-pezzo.asse_orizzontale]==1)
            {
                mappa2[i][j]=pezzo.array[i-pezzo.asse_verticale][j-pezzo.asse_orizzontale];
            }
        }
    }
}//fine muovi
void muovi()//modificato muovi
{
    int i,j;
    for(i=pezzo.asse_verticale;i<pezzo.asse_verticale+dimpezzo;i++)
    {
        for(j=pezzo.asse_orizzontale;j<pezzo.asse_orizzontale+dimpezzo;j++)
        {
            if (pezzo.array[i-pezzo.asse_verticale][j-pezzo.asse_orizzontale]==1)
            {
                mappa2[i][j]=pezzo.array[i-pezzo.asse_verticale][j-pezzo.asse_orizzontale];
            }
        }
    }
}//fine muovi
void azzera_pezzo()// porta gli elementi di mappa a 0
{
    int i,j;
    int    pezzo_1[3][3];
    for(i=pezzo.asse_verticale;i<pezzo.asse_verticale+dimpezzo;i++)
    {
        for(j=pezzo.asse_orizzontale;j<pezzo.asse_orizzontale+dimpezzo;j++)
        {
           pezzo_1[i-pezzo.asse_verticale][j-pezzo.asse_orizzontale]=0;
           if (pezzo.array[i-pezzo.asse_verticale][j-pezzo.asse_orizzontale]==1)
            {
                mappa2[i][j]=pezzo_1[i-pezzo.asse_verticale][j-pezzo.asse_orizzontale];
            }
        }
    }
}