qst è il mio faticoso lavoro fatto fin ora. ora il problema è qst: quando ho sostituito x e y con pezzo.x e pezzo.y le function nn si sono attivate. xke?
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, 1, 0},
                        {0, 1, 0},
                        {1, 1, 1} };
struct blocco{
    int x,y;
    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 nuovo_pezzo();
int gameover();
void controllariga();
void cancellariga();
int piazza_pezzo ();
void ruota_pezzo();
//int aggiorna();
int movimentopossibile();
void agg();
void main()
{
pezzo.x=5;
pezzo.y=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");

for(indice_mappai=0;indice_mappai<altezza_righe;indice_mappai++){   //mappa
        printf("%d %d %d %d %d %d %d %d %d %d \n",mappa[indice_mappai][indice_mappaj],mappa[indice_mappai][indice_mappaj+1],mappa[indice_mappai][indice_mappaj+2],mappa[indice_mappai][indice_mappaj+3],mappa[indice_mappai][indice_mappaj+4]
                                                 ,mappa[indice_mappai][indice_mappaj+5],mappa[indice_mappai][indice_mappaj+6],mappa[indice_mappai][indice_mappaj+7],mappa[indice_mappai][indice_mappaj+8],mappa[indice_mappai][indice_mappaj+9]
                                                 ,mappa[indice_mappai][indice_mappaj+10],mappa[indice_mappai][indice_mappaj+11],mappa[indice_mappai][indice_mappaj+12],mappa[indice_mappai][indice_mappaj+13],mappa[indice_mappai][indice_mappaj+14]
                                                 ,mappa[indice_mappai][indice_mappaj+15],mappa[indice_mappai][indice_mappaj+16],mappa[indice_mappai][indice_mappaj+17],mappa[indice_mappai][indice_mappaj+18],mappa[indice_mappai][indice_mappaj+19]);
}//fine mappa

for (indice_pezzoi=0;indice_pezzoi<dimpezzo;indice_pezzoi++){//pezzo
     printf("\n%d %d %d",pezzo.array[indice_pezzoi][0],pezzo.array[indice_pezzoi][1],pezzo.array[indice_pezzoi][2]);
}//fine pezzo
                printf("\n");

while(1){

switch (getchar()){
    case('s'):
    agg(pezzo.x,pezzo.y);
        pezzo.y++;
        if(!movimentopossibile(pezzo.x,pezzo.y)){
        pezzo.y--;}
         for(indice_mappai=0;indice_mappai<altezza_righe;indice_mappai++){   //mappa
        printf("%d %d %d %d %d %d %d %d %d %d \n",mappa[indice_mappai][indice_mappaj],mappa[indice_mappai][indice_mappaj+1],mappa[indice_mappai][indice_mappaj+2],mappa[indice_mappai][indice_mappaj+3],mappa[indice_mappai][indice_mappaj+4]
                                                 ,mappa[indice_mappai][indice_mappaj+5],mappa[indice_mappai][indice_mappaj+6],mappa[indice_mappai][indice_mappaj+7],mappa[indice_mappai][indice_mappaj+8],mappa[indice_mappai][indice_mappaj+9]
                                                 ,mappa[indice_mappai][indice_mappaj+10],mappa[indice_mappai][indice_mappaj+11],mappa[indice_mappai][indice_mappaj+12],mappa[indice_mappai][indice_mappaj+13],mappa[indice_mappai][indice_mappaj+14]
                                                 ,mappa[indice_mappai][indice_mappaj+15],mappa[indice_mappai][indice_mappaj+16],mappa[indice_mappai][indice_mappaj+17],mappa[indice_mappai][indice_mappaj+18],mappa[indice_mappai][indice_mappaj+19]);
        }//fine mappa

        for (indice_pezzoi=0;indice_pezzoi<dimpezzo;indice_pezzoi++){//pezzo
        printf("\n%d %d %d ",pezzo.array[indice_pezzoi][0],pezzo.array[indice_pezzoi][1],pezzo.array[indice_pezzoi][2]);}
        printf("\n");
    break;
    case('d'):
            agg(pezzo.x,pezzo.y);
            pezzo.x++;// x è il movimento in orizzontale
            if(!movimentopossibile(pezzo.x,pezzo.y))//se nn è possibile torna indietro
            pezzo.x--;
            for(indice_mappai=0;indice_mappai<altezza_righe;indice_mappai++){   //mappa
                printf("%d %d %d %d %d %d %d %d %d %d \n",mappa[indice_mappai][indice_mappaj],mappa[indice_mappai][indice_mappaj+1],mappa[indice_mappai][indice_mappaj+2],mappa[indice_mappai][indice_mappaj+3],mappa[indice_mappai][indice_mappaj+4]
                                                         ,mappa[indice_mappai][indice_mappaj+5],mappa[indice_mappai][indice_mappaj+6],mappa[indice_mappai][indice_mappaj+7],mappa[indice_mappai][indice_mappaj+8],mappa[indice_mappai][indice_mappaj+9]
                                                         ,mappa[indice_mappai][indice_mappaj+10],mappa[indice_mappai][indice_mappaj+11],mappa[indice_mappai][indice_mappaj+12],mappa[indice_mappai][indice_mappaj+13],mappa[indice_mappai][indice_mappaj+14]
                                                         ,mappa[indice_mappai][indice_mappaj+15],mappa[indice_mappai][indice_mappaj+16],mappa[indice_mappai][indice_mappaj+17],mappa[indice_mappai][indice_mappaj+18],mappa[indice_mappai][indice_mappaj+19]);
            }//fine mappa
            break;
    case('a'):
        agg(pezzo.x,pezzo.y);
        pezzo.x--;
        if(!movimentopossibile(pezzo.x,pezzo.y))
        pezzo.x++;
        for(indice_mappai=0;indice_mappai<altezza_righe;indice_mappai++){   //mappa
            printf("%d %d %d %d %d %d %d %d %d %d \n",mappa[indice_mappai][indice_mappaj],mappa[indice_mappai][indice_mappaj+1],mappa[indice_mappai][indice_mappaj+2],mappa[indice_mappai][indice_mappaj+3],mappa[indice_mappai][indice_mappaj+4]
                                                     ,mappa[indice_mappai][indice_mappaj+5],mappa[indice_mappai][indice_mappaj+6],mappa[indice_mappai][indice_mappaj+7],mappa[indice_mappai][indice_mappaj+8],mappa[indice_mappai][indice_mappaj+9]
                                                     ,mappa[indice_mappai][indice_mappaj+10],mappa[indice_mappai][indice_mappaj+11],mappa[indice_mappai][indice_mappaj+12],mappa[indice_mappai][indice_mappaj+13],mappa[indice_mappai][indice_mappaj+14]
                                                     ,mappa[indice_mappai][indice_mappaj+15],mappa[indice_mappai][indice_mappaj+16],mappa[indice_mappai][indice_mappaj+17],mappa[indice_mappai][indice_mappaj+18],mappa[indice_mappai][indice_mappaj+19]);
            }
        break;
    case ('w'):
    agg(pezzo.x,pezzo.y);

        ruota_pezzo(pezzo.array[indice_pezzoi][indice_pezzoj]);
        for(indice_mappai=0;indice_mappai<altezza_righe;indice_mappai++){   //mappa
        printf("%d %d %d %d %d %d %d %d %d %d \n",mappa[indice_mappai][indice_mappaj],mappa[indice_mappai][indice_mappaj+1],mappa[indice_mappai][indice_mappaj+2],mappa[indice_mappai][indice_mappaj+3],mappa[indice_mappai][indice_mappaj+4]
                                                 ,mappa[indice_mappai][indice_mappaj+5],mappa[indice_mappai][indice_mappaj+6],mappa[indice_mappai][indice_mappaj+7],mappa[indice_mappai][indice_mappaj+8],mappa[indice_mappai][indice_mappaj+9]
                                                 ,mappa[indice_mappai][indice_mappaj+10],mappa[indice_mappai][indice_mappaj+11],mappa[indice_mappai][indice_mappaj+12],mappa[indice_mappai][indice_mappaj+13],mappa[indice_mappai][indice_mappaj+14]
                                                 ,mappa[indice_mappai][indice_mappaj+15],mappa[indice_mappai][indice_mappaj+16],mappa[indice_mappai][indice_mappaj+17],mappa[indice_mappai][indice_mappaj+18],mappa[indice_mappai][indice_mappaj+19]);
                                                 }//fine mappa
        for (indice_pezzoi=0;indice_pezzoi<dimpezzo;indice_pezzoi++){//pezzo
        printf("\n%d %d %d ",pezzo.array[indice_pezzoi][0],pezzo.array[indice_pezzoi][1],pezzo.array[indice_pezzoi][2]); }
        printf("\n");
        break;
        default: printf("\n x=%d y=%d\n",pezzo.x,pezzo.y);break;
}

}

}

int gameover(){
for (indice_mappai=0;indice_mappai<larghezza_colonne;indice_mappai++)
if (mappa[indice_mappai][0])
    return 1;
    return 0;
    }

void nuovo_pezzo(){
for (indice_pezzoi=0; indice_pezzoi<dimpezzo;indice_pezzoi++){
    for (indice_pezzoj=0; indice_pezzoj<dimpezzo;indice_pezzoj++)
    pezzo.array[indice_pezzoi][indice_pezzoj] = pezzo2[indice_pezzoi][indice_pezzoj];
    }
}
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];}
}
void cancellariga(){
for (indice_mappaj=pezzo.y; indice_mappaj>0; indice_mappaj--) {
    for (indice_mappai=0; indice_mappai<larghezza_colonne;indice_mappai++)
        if (mappa[indice_mappai][indice_mappaj]!=0)
            mappa[indice_mappai][indice_mappaj]=mappa[indice_mappai][indice_mappaj-1];
            }
}

int movimentopossibile(){
    int jpezzo=pezzo.y,ipezzo=pezzo.x,imappa,jmappa;
    for ( ipezzo=pezzo.y, imappa=0; ipezzo<pezzo.y+dimpezzo; ipezzo++, imappa++){
        for(jpezzo=pezzo.x, jmappa=0; jpezzo<pezzo.x+dimpezzo; jpezzo++, jmappa++)
            if (jpezzo>larghezza_colonne-1 ||jpezzo<0 ||jpezzo>altezza_righe-1){
                return 0;}
                else{
                return 1;
}
}
}
void controllariga(){
for(indice_mappai=0;indice_mappai<larghezza_colonne;indice_mappai++){

    if(mappa[indice_mappai][indice_mappaj]!=0){
    if(indice_mappai==larghezza_colonne)
    cancellariga(indice_mappaj);
}
}
}
void agg(){
int imappa,jmappa,ipezzo,jpezzo;
for(ipezzo=pezzo.x;ipezzo<pezzo.x+dimpezzo;ipezzo++){
    for(jpezzo=pezzo.y;jpezzo<pezzo.y+dimpezzo;jpezzo++)
    mappa[ipezzo][jpezzo]=pezzo.array[ipezzo][jpezzo];
}

}