summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornot-a-robot06 <72096472+not-a-robot06@users.noreply.github.com>2023-11-27 16:43:22 +0000
committernot-a-robot06 <72096472+not-a-robot06@users.noreply.github.com>2023-11-27 16:43:22 +0000
commit58704331989303e648b844596e8af8db0d68a419 (patch)
tree569e9da73dbb7b12430b2978bf4d51cb784d8802
parent4979a2e988cd7d8b3937d8fa743151d6d6fb2ba4 (diff)
downloadretris-58704331989303e648b844596e8af8db0d68a419.tar.gz
retris-58704331989303e648b844596e8af8db0d68a419.tar.bz2
retris-58704331989303e648b844596e8af8db0d68a419.zip
code cleanup for redrawingHEADmain
-rw-r--r--src/retris.c46
1 files changed, 14 insertions, 32 deletions
diff --git a/src/retris.c b/src/retris.c
index 8f8abf4..a533304 100644
--- a/src/retris.c
+++ b/src/retris.c
@@ -35,11 +35,13 @@ main(void){
vis_height = VIS_HEIGHT * FACT;
Color grid[WIDTH][HEIGHT]; // if colour is WHITE, the position is empty
int interval = FPS, count, i, j;
- Tetromino cur_trmno; // trnmo is faster and easier to write than tetromino
+ // zero init so that prev_trmno can be set later
+ Tetromino cur_trmno = {.pos = {0}}, prev_trmno;
bool gen_trmno = true;
srand(time(NULL));
+ // clear screen
for (i = 0; i < WIDTH; i++)
for (j = 0; j < HEIGHT; j++)
grid[i][j] = WHITE;
@@ -54,7 +56,6 @@ main(void){
for (i = 0; i < 4; i++) {
cur_trmno.pos[i].x = WIDTH / 2;
cur_trmno.pos[i].y = i;
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = cur_trmno.colour;
}
break;
@@ -63,12 +64,9 @@ main(void){
for (i = 0; i < 4; i += 2) {
cur_trmno.pos[i].x = WIDTH / 2;
cur_trmno.pos[i].y = 1 - i / 2;
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = cur_trmno.colour;
cur_trmno.pos[i+1].x = WIDTH / 2 + 1;
cur_trmno.pos[i+1].y = 1 - i / 2;
- grid[cur_trmno.pos[i+1].x][cur_trmno.pos[i+1].y] =
- cur_trmno.colour;
}
break;
@@ -77,11 +75,9 @@ main(void){
for (i = 0; i < 3; i++) {
cur_trmno.pos[i].x = WIDTH / 2;
cur_trmno.pos[i].y = i;
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = cur_trmno.colour;
}
cur_trmno.pos[3].x = WIDTH / 2 + 1;
cur_trmno.pos[3].y = 2;
- grid[cur_trmno.pos[3].x][cur_trmno.pos[3].y] = cur_trmno.colour;
break;
case 3: // J-tetromino
@@ -89,11 +85,9 @@ main(void){
for (i = 0; i < 3; i++) {
cur_trmno.pos[i].x = WIDTH / 2;
cur_trmno.pos[i].y = i;
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = cur_trmno.colour;
}
cur_trmno.pos[3].x = WIDTH / 2 - 1;
cur_trmno.pos[3].y = 2;
- grid[cur_trmno.pos[3].x][cur_trmno.pos[3].y] = cur_trmno.colour;
break;
case 4: // T-tetromino
@@ -101,11 +95,9 @@ main(void){
for (i = 0; i < 3; i++) {
cur_trmno.pos[i].x = WIDTH / 2 - 1 + i;
cur_trmno.pos[i].y = 1;
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = cur_trmno.colour;
}
cur_trmno.pos[3].x = WIDTH / 2;
cur_trmno.pos[3].y = 0;
- grid[cur_trmno.pos[3].x][cur_trmno.pos[3].y] = cur_trmno.colour;
break;
case 5: // S-tetromino
@@ -113,7 +105,6 @@ main(void){
for (i = 0; i < 4; i++) {
cur_trmno.pos[i].x = WIDTH / 2 + (i < 2 ? i - 1 : i - 2);
cur_trmno.pos[i].y = i < 2 ? 1 : 0;
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = cur_trmno.colour;
}
break;
@@ -122,45 +113,36 @@ main(void){
for (i = 0; i < 4; i++) {
cur_trmno.pos[i].x = WIDTH / 2 + (i < 2 ? i : 2 - i);
cur_trmno.pos[i].y = i < 2 ? 1 : 0;
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = cur_trmno.colour;
}
break;
}
gen_trmno = false;
}
+ prev_trmno = cur_trmno;
+ // KEY CHECKING
if (count >= (IsKeyDown(KEY_DOWN) ? FPS/30 : interval)) {
count = 0;
for (i = 0; i < 4; i++)
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = WHITE;
- for (i = 0; i < 4; i++) {
cur_trmno.pos[i].y++;
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = cur_trmno.colour;
- }
}
- if (IsKeyDown(KEY_RIGHT)) {
+ if (IsKeyDown(KEY_RIGHT))
for (i = 0; i < 4; i++)
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = WHITE;
-
- for (i = 0; i < 4; i++) {
cur_trmno.pos[i].x++;
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = cur_trmno.colour;
- }
- }
- else if (IsKeyDown(KEY_LEFT)) {
+ else if (IsKeyDown(KEY_LEFT))
for (i = 0; i < 4; i++)
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = WHITE;
-
- for (i = 0; i < 4; i++) {
cur_trmno.pos[i].x--;
- grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = cur_trmno.colour;
- }
- }
-
+ // for debug purposes only
if (IsKeyPressed(KEY_G))
gen_trmno = true;
+ // redraw current tetromino position
+ for (i = 0; i < 4; i++)
+ grid[prev_trmno.pos[i].x][prev_trmno.pos[i].y] = WHITE;
+ for (i = 0; i < 4; i++)
+ grid[cur_trmno.pos[i].x][cur_trmno.pos[i].y] = cur_trmno.colour;
+
BeginDrawing();
Draw2DGrid(grid);
#ifdef DEBUG