mirror of
https://github.com/thepigeongenerator/tetris_clone.git
synced 2025-12-17 14:05:45 +01:00
rename TETROMINO_* fields to TET*, to be shorter
constants like `TETROMINO_COUNT`, `TETROMINO_ROTATED_90` were too long, and took up too much horizontal space.
This commit is contained in:
@@ -38,11 +38,11 @@ void next_shape(void) {
|
|||||||
dat.pdat.sel = (i8vec2){COLUMNS / 2 - SHAPE_WIDTH / 2, 0};
|
dat.pdat.sel = (i8vec2){COLUMNS / 2 - SHAPE_WIDTH / 2, 0};
|
||||||
dat.pdat.cur = dat.pdat.nxt[dat.pdat.idx];
|
dat.pdat.cur = dat.pdat.nxt[dat.pdat.idx];
|
||||||
dat.pdat.idx++;
|
dat.pdat.idx++;
|
||||||
if (dat.pdat.idx < TETROMINO_COUNT) return;
|
if (dat.pdat.idx < TETC) return;
|
||||||
|
|
||||||
// shuffle all next shapes, preserving the last
|
// shuffle all next shapes, preserving the last
|
||||||
dat.pdat.idx = 0;
|
dat.pdat.idx = 0;
|
||||||
shuffle(dat.pdat.nxt, TETROMINO_COUNT, sizeof(u8));
|
shuffle(dat.pdat.nxt, TETC, sizeof(u8));
|
||||||
}
|
}
|
||||||
|
|
||||||
struct gamedata* game_init(void) {
|
struct gamedata* game_init(void) {
|
||||||
@@ -51,12 +51,12 @@ struct gamedata* game_init(void) {
|
|||||||
// populate the data arrays
|
// populate the data arrays
|
||||||
for (int i = 0; i < ROWS; i++)
|
for (int i = 0; i < ROWS; i++)
|
||||||
dat.rows[i] = rowdat + i * COLUMNS;
|
dat.rows[i] = rowdat + i * COLUMNS;
|
||||||
for (int i = 0; i < TETROMINO_COUNT; i++)
|
for (int i = 0; i < TETC; i++)
|
||||||
dat.pdat.nxt[i] = i;
|
dat.pdat.nxt[i] = i;
|
||||||
|
|
||||||
// initialise the placing data correctly
|
// initialise the placing data correctly
|
||||||
dat.pdat.sel = (i8vec2){COLUMNS / 2 - SHAPE_WIDTH / 2, 0};
|
dat.pdat.sel = (i8vec2){COLUMNS / 2 - SHAPE_WIDTH / 2, 0};
|
||||||
shuffle(dat.pdat.nxt, TETROMINO_COUNT, sizeof(u8));
|
shuffle(dat.pdat.nxt, TETC, sizeof(u8));
|
||||||
dat.pdat.cur = dat.pdat.nxt[dat.pdat.idx];
|
dat.pdat.cur = dat.pdat.nxt[dat.pdat.idx];
|
||||||
dat.pdat.idx++;
|
dat.pdat.idx++;
|
||||||
return &dat;
|
return &dat;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
/* contains the placement data */
|
/* contains the placement data */
|
||||||
struct pdat {
|
struct pdat {
|
||||||
u8 nxt[TETROMINO_COUNT]; // shuffled data representing the next shapes
|
u8 nxt[TETC]; // shuffled data representing the next shapes
|
||||||
i8vec2 sel; // position of the current shape
|
i8vec2 sel; // position of the current shape
|
||||||
u8 idx; // the index of the current shape
|
u8 idx; // the index of the current shape
|
||||||
u8 cur; // the current id of the shape
|
u8 cur; // the current id of the shape
|
||||||
|
|||||||
@@ -15,46 +15,46 @@ void shape_getblocks(u8 id, i8vec2* restrict out) {
|
|||||||
|
|
||||||
switch (id) {
|
switch (id) {
|
||||||
// O tetromino
|
// O tetromino
|
||||||
case TETROMINO_O | TETROMINO_ROTATED_0:
|
case TET_O | TET_R0:
|
||||||
case TETROMINO_O | TETROMINO_ROTATED_90:
|
case TET_O | TET_R90:
|
||||||
case TETROMINO_O | TETROMINO_ROTATED_180:
|
case TET_O | TET_R180:
|
||||||
case TETROMINO_O | TETROMINO_ROTATED_270: dat = (struct blockdat){1, 1, 2, 1, 1, 2, 2, 2}; break;
|
case TET_O | TET_R270: dat = (struct blockdat){1, 1, 2, 1, 1, 2, 2, 2}; break;
|
||||||
|
|
||||||
// I tetromino
|
// I tetromino
|
||||||
case TETROMINO_I | TETROMINO_ROTATED_0: dat = (struct blockdat){0, 1, 1, 1, 2, 1, 3, 1}; break;
|
case TET_I | TET_R0: dat = (struct blockdat){0, 1, 1, 1, 2, 1, 3, 1}; break;
|
||||||
case TETROMINO_I | TETROMINO_ROTATED_90: dat = (struct blockdat){2, 0, 2, 1, 2, 2, 2, 3}; break;
|
case TET_I | TET_R90: dat = (struct blockdat){2, 0, 2, 1, 2, 2, 2, 3}; break;
|
||||||
case TETROMINO_I | TETROMINO_ROTATED_180: dat = (struct blockdat){0, 2, 1, 2, 2, 2, 3, 2}; break;
|
case TET_I | TET_R180: dat = (struct blockdat){0, 2, 1, 2, 2, 2, 3, 2}; break;
|
||||||
case TETROMINO_I | TETROMINO_ROTATED_270: dat = (struct blockdat){1, 0, 1, 1, 1, 2, 1, 3}; break;
|
case TET_I | TET_R270: dat = (struct blockdat){1, 0, 1, 1, 1, 2, 1, 3}; break;
|
||||||
|
|
||||||
// S tetromino
|
// S tetromino
|
||||||
case TETROMINO_S | TETROMINO_ROTATED_0: dat = (struct blockdat){1, 0, 2, 0, 0, 1, 1, 1}; break;
|
case TET_S | TET_R0: dat = (struct blockdat){1, 0, 2, 0, 0, 1, 1, 1}; break;
|
||||||
case TETROMINO_S | TETROMINO_ROTATED_90: dat = (struct blockdat){1, 0, 1, 1, 2, 1, 2, 2}; break;
|
case TET_S | TET_R90: dat = (struct blockdat){1, 0, 1, 1, 2, 1, 2, 2}; break;
|
||||||
case TETROMINO_S | TETROMINO_ROTATED_180: dat = (struct blockdat){1, 1, 2, 1, 0, 2, 1, 2}; break;
|
case TET_S | TET_R180: dat = (struct blockdat){1, 1, 2, 1, 0, 2, 1, 2}; break;
|
||||||
case TETROMINO_S | TETROMINO_ROTATED_270: dat = (struct blockdat){0, 0, 0, 1, 1, 1, 1, 2}; break;
|
case TET_S | TET_R270: dat = (struct blockdat){0, 0, 0, 1, 1, 1, 1, 2}; break;
|
||||||
|
|
||||||
// Z tetromino
|
// Z tetromino
|
||||||
case TETROMINO_Z | TETROMINO_ROTATED_0: dat = (struct blockdat){0, 0, 1, 0, 1, 1, 2, 1}; break;
|
case TET_Z | TET_R0: dat = (struct blockdat){0, 0, 1, 0, 1, 1, 2, 1}; break;
|
||||||
case TETROMINO_Z | TETROMINO_ROTATED_90: dat = (struct blockdat){2, 0, 1, 1, 2, 1, 1, 2}; break;
|
case TET_Z | TET_R90: dat = (struct blockdat){2, 0, 1, 1, 2, 1, 1, 2}; break;
|
||||||
case TETROMINO_Z | TETROMINO_ROTATED_180: dat = (struct blockdat){0, 1, 1, 1, 1, 2, 2, 2}; break;
|
case TET_Z | TET_R180: dat = (struct blockdat){0, 1, 1, 1, 1, 2, 2, 2}; break;
|
||||||
case TETROMINO_Z | TETROMINO_ROTATED_270: dat = (struct blockdat){1, 0, 0, 1, 1, 1, 0, 2}; break;
|
case TET_Z | TET_R270: dat = (struct blockdat){1, 0, 0, 1, 1, 1, 0, 2}; break;
|
||||||
|
|
||||||
// T tetromino
|
// T tetromino
|
||||||
case TETROMINO_T | TETROMINO_ROTATED_0: dat = (struct blockdat){0, 1, 1, 1, 2, 1, 1, 2}; break;
|
case TET_T | TET_R0: dat = (struct blockdat){0, 1, 1, 1, 2, 1, 1, 2}; break;
|
||||||
case TETROMINO_T | TETROMINO_ROTATED_90: dat = (struct blockdat){1, 0, 0, 1, 1, 1, 1, 2}; break;
|
case TET_T | TET_R90: dat = (struct blockdat){1, 0, 0, 1, 1, 1, 1, 2}; break;
|
||||||
case TETROMINO_T | TETROMINO_ROTATED_180: dat = (struct blockdat){1, 0, 0, 1, 1, 1, 2, 1}; break;
|
case TET_T | TET_R180: dat = (struct blockdat){1, 0, 0, 1, 1, 1, 2, 1}; break;
|
||||||
case TETROMINO_T | TETROMINO_ROTATED_270: dat = (struct blockdat){1, 0, 1, 1, 2, 1, 1, 2}; break;
|
case TET_T | TET_R270: dat = (struct blockdat){1, 0, 1, 1, 2, 1, 1, 2}; break;
|
||||||
|
|
||||||
// L tetromino
|
// L tetromino
|
||||||
case TETROMINO_L | TETROMINO_ROTATED_0: dat = (struct blockdat){1, 0, 1, 1, 1, 2, 2, 2}; break;
|
case TET_L | TET_R0: dat = (struct blockdat){1, 0, 1, 1, 1, 2, 2, 2}; break;
|
||||||
case TETROMINO_L | TETROMINO_ROTATED_90: dat = (struct blockdat){0, 1, 1, 1, 2, 1, 0, 2}; break;
|
case TET_L | TET_R90: dat = (struct blockdat){0, 1, 1, 1, 2, 1, 0, 2}; break;
|
||||||
case TETROMINO_L | TETROMINO_ROTATED_180: dat = (struct blockdat){0, 0, 1, 0, 1, 1, 1, 2}; break;
|
case TET_L | TET_R180: dat = (struct blockdat){0, 0, 1, 0, 1, 1, 1, 2}; break;
|
||||||
case TETROMINO_L | TETROMINO_ROTATED_270: dat = (struct blockdat){2, 0, 0, 1, 1, 1, 2, 1}; break;
|
case TET_L | TET_R270: dat = (struct blockdat){2, 0, 0, 1, 1, 1, 2, 1}; break;
|
||||||
|
|
||||||
// J tetromino
|
// J tetromino
|
||||||
case TETROMINO_J | TETROMINO_ROTATED_0: dat = (struct blockdat){1, 0, 1, 1, 0, 2, 1, 2}; break;
|
case TET_J | TET_R0: dat = (struct blockdat){1, 0, 1, 1, 0, 2, 1, 2}; break;
|
||||||
case TETROMINO_J | TETROMINO_ROTATED_90: dat = (struct blockdat){0, 0, 0, 1, 1, 1, 2, 1}; break;
|
case TET_J | TET_R90: dat = (struct blockdat){0, 0, 0, 1, 1, 1, 2, 1}; break;
|
||||||
case TETROMINO_J | TETROMINO_ROTATED_180: dat = (struct blockdat){1, 0, 2, 0, 1, 1, 1, 2}; break;
|
case TET_J | TET_R180: dat = (struct blockdat){1, 0, 2, 0, 1, 1, 1, 2}; break;
|
||||||
case TETROMINO_J | TETROMINO_ROTATED_270: dat = (struct blockdat){0, 1, 1, 1, 2, 1, 2, 2}; break;
|
case TET_J | TET_R270: dat = (struct blockdat){0, 1, 1, 1, 2, 1, 2, 2}; break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
@@ -71,13 +71,13 @@ void shape_getblocks(u8 id, i8vec2* restrict out) {
|
|||||||
|
|
||||||
colour8 colour_from_id(u8 id) {
|
colour8 colour_from_id(u8 id) {
|
||||||
switch (id & 7) {
|
switch (id & 7) {
|
||||||
case TETROMINO_O: return COLOUR8_YELLOW;
|
case TET_O: return COLOUR8_YELLOW;
|
||||||
case TETROMINO_I: return COLOUR8_CYAN;
|
case TET_I: return COLOUR8_CYAN;
|
||||||
case TETROMINO_S: return COLOUR8_GREEN;
|
case TET_S: return COLOUR8_GREEN;
|
||||||
case TETROMINO_Z: return COLOUR8_RED;
|
case TET_Z: return COLOUR8_RED;
|
||||||
case TETROMINO_T: return COLOUR8_MAGENTA;
|
case TET_T: return COLOUR8_MAGENTA;
|
||||||
case TETROMINO_L: return COLOUR8_ORANGE;
|
case TET_L: return COLOUR8_ORANGE;
|
||||||
case TETROMINO_J: return COLOUR8_BLUE;
|
case TET_J: return COLOUR8_BLUE;
|
||||||
default: return COLOUR8_BLACK;
|
default: return COLOUR8_BLACK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,23 +6,23 @@
|
|||||||
#include "../../util/types.h"
|
#include "../../util/types.h"
|
||||||
#include "../../util/vec.h"
|
#include "../../util/vec.h"
|
||||||
|
|
||||||
enum {
|
enum tetromino {
|
||||||
TETROMINO_O = 0,
|
TET_O = 0,
|
||||||
TETROMINO_I = 1,
|
TET_I = 1,
|
||||||
TETROMINO_S = 2,
|
TET_S = 2,
|
||||||
TETROMINO_Z = 3,
|
TET_Z = 3,
|
||||||
TETROMINO_T = 4,
|
TET_T = 4,
|
||||||
TETROMINO_L = 5,
|
TET_L = 5,
|
||||||
TETROMINO_J = 6,
|
TET_J = 6,
|
||||||
TETROMINO_ROTATED_0 = 0,
|
TET_R0 = 0,
|
||||||
TETROMINO_ROTATED_90 = 8,
|
TET_R90 = 8,
|
||||||
TETROMINO_ROTATED_180 = 16,
|
TET_R180 = 16,
|
||||||
TETROMINO_ROTATED_270 = 24,
|
TET_R270 = 24,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SHAPE_WIDTH 4
|
#define SHAPE_WIDTH 4
|
||||||
#define SHAPE_HEIGHT 4
|
#define SHAPE_HEIGHT 4
|
||||||
#define TETROMINO_COUNT 7
|
#define TETC 7
|
||||||
|
|
||||||
void shape_getblocks(u8 id, i8vec2* out);
|
void shape_getblocks(u8 id, i8vec2* out);
|
||||||
colour8 colour_from_id(u8 id);
|
colour8 colour_from_id(u8 id);
|
||||||
|
|||||||
Reference in New Issue
Block a user