Allora ho dei problemi nello spostamento della figura a rettangolo nel codice , in pratica quando vado agli estremi della tabella si presenta il problema mentre con il quadrato no !
Questo è il controllo degli estremi che non riesco a risolvere if a==1 è il rettangolo mentre il quadrato funziona bene if a==2 :
while (Tabella [y+2][x] == 0 && Tabella [y+2][x+1] == 0)
{
if(a==0){
Tabella [y][x] = Pezzo_Attuale [0][0];
Tabella [y][x+1] = Pezzo_Attuale [0][1];
Tabella [y+1][x] = Pezzo_Attuale [1][0];
Tabella [y+1][x+1] = Pezzo_Attuale [1][1];
}
if(a==1){
Tabella [y][x] = Pezzo_Attuale [0][0];
Tabella [y][x+1] = Pezzo_Attuale [0][1];
Tabella [y+1][x] = Pezzo_Attuale [1][0];
Tabella [y+1][x+1] = Pezzo_Attuale [1][1];
Tabella [y+2][x] = Pezzo_Attuale [2][0];
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main ()
{
int i, j, k;
int x;
int y;
int a;
int d ;
int f ;
char comando;
int punti = 0;
int Tabella [12][8] = {{2, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 0, 0, 0, 0, 0, 2},
{2, 0, 0, 0, 0, 0, 0, 2},
{2, 2, 2, 2, 2, 2, 2, 2}};
int Quadrato [2][2] = {{1, 1},
{1, 1}};
int rettangolo1 [3][2] = {{1,0},
{1,0},
{1,0}};
int Pezzo_Attuale[3][3];
srand((unsigned int) time(0));
for (k=0; k<20; k++)
{
printf("\n\n\n\n\n");
x=3;
y=0;
a = rand () %2;
if (a == 0)
{
Pezzo_Attuale [0][0] = Quadrato [0][0];
Pezzo_Attuale [0][1] = Quadrato [0][1];
Pezzo_Attuale [1][0] = Quadrato [1][0];
Pezzo_Attuale [1][1] = Quadrato [1][1];
}
if (a == 1)
{
Pezzo_Attuale [0][0] = rettangolo1 [0][0];
Pezzo_Attuale [1][0] = rettangolo1 [1][0];
Pezzo_Attuale [0][1] = rettangolo1 [0][1];
Pezzo_Attuale [1][1] = rettangolo1 [1][1];
Pezzo_Attuale [2][0] = rettangolo1 [2][0];
}
// controllo while agli estremi della tabella
while (Tabella [y+2][x] == 0 && Tabella [y+2][x+1] == 0)
{
if(a==0){
Tabella [y][x] = Pezzo_Attuale [0][0];
Tabella [y][x+1] = Pezzo_Attuale [0][1];
Tabella [y+1][x] = Pezzo_Attuale [1][0];
Tabella [y+1][x+1] = Pezzo_Attuale [1][1];
}
if(a==1){
Tabella [y][x] = Pezzo_Attuale [0][0];
Tabella [y][x+1] = Pezzo_Attuale [0][1];
Tabella [y+1][x] = Pezzo_Attuale [1][0];
Tabella [y+1][x+1] = Pezzo_Attuale [1][1];
Tabella [y+2][x] = Pezzo_Attuale [2][0];
}
for(i=0; i<12; i++)
{
printf("\n");
for(j=0; j<8; j++)
{
if (Tabella [i][j] == 0)
printf(" ", Tabella [i][j]);
if (Tabella [i][j] == 1)
printf("[o]", Tabella [i][j]);
if (Tabella [i][j] == 2)
printf("[x]", Tabella [i][j]);
}
}
printf("\n\n");
printf ("S = Sposta Giu' \n");
printf ("A = Sposta a Sx \n");
printf ("D = Sposta a DX \n");
printf ("Q = Ruota a Dx \n");
printf ("E = Ruota a Sx \n");
printf ("\n\n");
printf ("punti: %d", punti);
printf("\n\n");
printf("inserire comando: ");
scanf("%s", &comando);
printf("\n\n\n\n\n\n\n\n\n\n");
// caso Quadrato
if (Pezzo_Attuale [0][0] == 1 && Pezzo_Attuale [0][1] == 1)
{
if (comando == 's' || comando == 'S')
{
y = y+1;
Tabella [y-1][x] = 0;
Tabella [y-1][x+1] = 0;
}
if (comando == 'a' || comando == 'A')
{
if (Tabella [y][x-1] == 0 && Tabella [y+1][x-1] == 0)
{
x = x-1;
Tabella [y][x+2] = 0;
Tabella [y+1][x+2] = 0;
}
}
if (comando == 'd' || comando == 'D')
{
if (Tabella [y][x+2] == 0 && Tabella [y+1][x+2] == 0)
{
x = x+1;
Tabella [y][x-1] = 0;
Tabella [y+1][x-1] = 0;
}
}
}
//caso rettangolo 1
if (a==1)
{
if (comando == 's' || comando == 'S')
{
y = y+1;
Tabella [y-1][x] = 0;
}
if (comando == 'a' || comando == 'A')
{
if (Tabella [y][x-1] == 0)
{
x = x-1;
Tabella [y][x+1]= 0;
Tabella[y+1][x+1] =0;
Tabella[y+2][x+1] = 0;
}
}
if (comando == 'd' || comando == 'D')
{
if (Tabella [y][x+1] == 0)
{
x = x+1;
Tabella [y][x-1]= 0;
Tabella[y+1][x-1] =0;
Tabella[y+2][x-1] = 0;
}
}
if (comando == 'q' || comando == 'Q')
{
Pezzo_Attuale [0][0] = rettangolo1 [0][0];
//Pezzo_Attuale [1][0] = 0;
Pezzo_Attuale [0][1] = rettangolo1 [1][0];
Pezzo_Attuale [0][2] = rettangolo1 [2][0];
//Pezzo_Attuale [2][0] = 0;
Tabella [y][x] = rettangolo1 [0][0];
Tabella [y][x+1] = rettangolo1 [0][1];
Tabella [y][x+2] = rettangolo1 [0][2];
}
}
}
Tabella [y][x] = Pezzo_Attuale [0][0];
Tabella [y][x+1] = Pezzo_Attuale [0][1];
Tabella [y+1][x] = Pezzo_Attuale [1][0];
Tabella [y+1][x+1] = Pezzo_Attuale [1][1];
// Blocco per eliminare l'ultima riga se completa
d = 9 ;
f = 1 ;
for(d=9; d>0; d--)
{
if (Tabella [d][1] == 1 &&
Tabella [d][2] == 1 &&
Tabella [d][3] == 1 &&
Tabella [d][4] == 1 &&
Tabella [d][5] == 1 &&
Tabella [d][6] == 1 )
{
while (d > 0)
{
Tabella [d][f] = Tabella [d-1][f];
Tabella [d][f+1] = Tabella [d-1][f+1];
Tabella [d][f+2] = Tabella [d-1][f+2];
Tabella [d][f+3] = Tabella [d-1][f+3];
Tabella [d][f+4] = Tabella [d-1][f+4];
Tabella [d][f+5] = Tabella [d-1][f+5];
d = d-1;
}
punti = punti +1;
}
}
}
printf ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf (" sessione terminata");
printf ("\n\n");
printf (" punti: %d", punti);
printf ("\n\n\n\n");
}