Small block game in C
Commit 1efc7fd378bd
tarball1 file changed+27-40
@@ -37,8 +37,7 @@ typedef struct {
3737
bool piece[4][4];3838
int8_t x;3939
int8_t y;40
- uint8_t width;41
- uint8_t height;40
+ uint8_t size;4241
direction rotation;4342
} piece;4443
@@ -154,14 +153,14 @@ int main () {
154153
if (move != 0) {155154
if (156155
current_piece.x + move >= 0 && 157
- current_piece.x + move + ((current_piece.rotation % 2) ? current_piece.height : current_piece.width) <= FULL_WIDTH156
+ current_piece.x + move + current_piece.size <= FULL_WIDTH158157
) {159158
160159
bool is_valid = true;161160
162161
163
- for (j = 0; j < current_piece.height; j++) {164
- for (k = 0; k < current_piece.width; k++) {162
+ for (j = 0; j < current_piece.size; j++) {163
+ for (k = 0; k < current_piece.size; k++) {165164
166165
coord points = find_direction(current_piece, k, j);167166
@@ -183,19 +182,12 @@ int main () {
183182
184183
/* Piece rotates */185184
186
- /*185
+ 187186
if (rotate) {188187
189188
direction new_direction = (current_piece.rotation + 1) % (LEFT + 1);190
-191
- uint8_t actual_width = (new_direction % 2) ? current_piece.height : current_piece.width;192
- uint8_t actual_height = (new_direction % 2) ? current_piece.width : current_piece.height;193
-194
- coord new_position = {195
-196
- }197189
}198
- */190
+ 199191
200192
/* Piece falls */201193
@@ -208,8 +200,8 @@ int main () {
208200
209201
/* When a piece is stuck */210202
211
- for(j = 0; j < current_piece.height; j++) {212
- for (k = 0; k < current_piece.width; k++) {203
+ for(j = 0; j < current_piece.size; j++) {204
+ for (k = 0; k < current_piece.size; k++) {213205
214206
coord points = find_direction(current_piece, k, j);215207
@@ -223,8 +215,8 @@ int main () {
223215
224216
uint8_t l, m;225217
226
- for (l = 0; l < current_piece.height; l++) {227
- for (m = 0; m < current_piece.width; m++) {218
+ for (l = 0; l < current_piece.size; l++) {219
+ for (m = 0; m < current_piece.size; m++) {228220
229221
if (current_piece.piece[l][m]) {230222
@@ -279,8 +271,10 @@ int main () {
279271
for (j = 0; j < FIELD_WIDTH; j++) {280272
if (playfield[TOP_GAP][j + BORDER_WIDTH] > 0) {281273
printf("\033[2J\033[H");274
+ draw_board(current_piece, -1, is_piece);275
+ sleep(2);282276
printf("HAHA LOSER\n");283
- sleep(3);277
+ sleep(1);284278
goto end;285279
}286280
}@@ -388,8 +382,8 @@ void draw_board(piece current_piece, int8_t blink, bool is_piece) {
388382
389383
uint8_t k, l;390384
391
- for (k = 0; k < current_piece.height; k++) {392
- for (l = 0; l < current_piece.width; l++) {385
+ for (k = 0; k < current_piece.size; k++) {386
+ for (l = 0; l < current_piece.size; l++) {393387
394388
coord points = find_direction(current_piece, l, k);395389
@@ -433,8 +427,7 @@ piece init_piece(tetromino new_piece) {
433427
434428
switch (current_piece.name) {435429
case I_PIECE:436
- current_piece.width = 4;437
- current_piece.height = 4;430
+ current_piece.size = 4;438431
439432
current_piece.piece[0][0] = false;440433
current_piece.piece[0][1] = false;@@ -459,8 +452,7 @@ piece init_piece(tetromino new_piece) {
459452
break;460453
461454
case J_PIECE:462
- current_piece.width = 3;463
- current_piece.height = 3;455
+ current_piece.size = 3;464456
465457
current_piece.piece[0][0] = true;466458
current_piece.piece[0][1] = false;@@ -477,8 +469,7 @@ piece init_piece(tetromino new_piece) {
477469
break;478470
479471
case L_PIECE:480
- current_piece.width = 3;481
- current_piece.height = 3;472
+ current_piece.size = 3;482473
483474
current_piece.piece[0][0] = false;484475
current_piece.piece[0][1] = false;@@ -495,8 +486,7 @@ piece init_piece(tetromino new_piece) {
495486
break;496487
497488
case O_PIECE:498
- current_piece.width = 2;499
- current_piece.height = 2;489
+ current_piece.size = 2;500490
501491
current_piece.piece[0][0] = true;502492
current_piece.piece[0][1] = true;@@ -507,8 +497,7 @@ piece init_piece(tetromino new_piece) {
507497
break;508498
509499
case S_PIECE:510
- current_piece.width = 3;511
- current_piece.height = 3;500
+ current_piece.size = 3;512501
513502
current_piece.piece[0][0] = false;514503
current_piece.piece[0][1] = true;@@ -525,8 +514,7 @@ piece init_piece(tetromino new_piece) {
525514
break;526515
527516
case T_PIECE:528
- current_piece.width = 3;529
- current_piece.height = 3;517
+ current_piece.size = 3;530518
531519
current_piece.piece[0][0] = false;532520
current_piece.piece[0][1] = true;@@ -542,8 +530,7 @@ piece init_piece(tetromino new_piece) {
542530
543531
break;544532
case Z_PIECE:545
- current_piece.width = 3;546
- current_piece.height = 3;533
+ current_piece.size = 3;547534
548535
current_piece.piece[0][0] = true;549536
current_piece.piece[0][1] = true;@@ -563,7 +550,7 @@ piece init_piece(tetromino new_piece) {
563550
break;564551
}565552
566
- current_piece.x = (FIELD_WIDTH >> 1) - (current_piece.width >> 1) + BORDER_WIDTH;553
+ current_piece.x = (FIELD_WIDTH >> 1) - (current_piece.size >> 1) + BORDER_WIDTH;567554
current_piece.y = TOP_GAP;568555
current_piece.rotation = TOP;569556
@@ -586,14 +573,14 @@ coord find_direction(piece current_piece, uint8_t x, uint8_t y) {
586573
break;587574
case RIGHT:588575
points.x = y;589
- points.y = current_piece.width - (x + 1);576
+ points.y = current_piece.size - (x + 1);590577
break;591578
case BOTTOM:592
- points.x = current_piece.width - (x + 1);593
- points.y = current_piece.height - (y + 1);579
+ points.x = current_piece.size - (x + 1);580
+ points.y = current_piece.size - (y + 1);594581
break;595582
case LEFT:596
- points.x = current_piece.height - (y + 1);583
+ points.x = current_piece.size - (y + 1);597584
points.y = x;598585
break;599586
}