jag

tetoris_c

public

Small block game in C

Star0
Watch0

Commit 1efc7fd378bd

tarball

Jaglekon <58274093+Jaglekon@users.noreply.github.com>2026-07-17 14:27 UTC

1 file changed+27-40
losing
Modified file: main.c+27 additions−40 deletions
@@ -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_WIDTH
156+ current_piece.x + move + current_piece.size <= FULL_WIDTH
158157 ) {
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 }