diff options
| author | Preston Pan <preston@nullring.xyz> | 2023-02-06 23:14:07 -0800 |
|---|---|---|
| committer | Preston Pan <preston@nullring.xyz> | 2023-02-06 23:14:07 -0800 |
| commit | 97a41ec6047bd2c9c1b4f094d85b08865eb7613a (patch) | |
| tree | f7c91f8f7af45dd92d01d6e9da0b902ed7000bfd | |
| parent | 0f726414cc0026691854bda9567ef959c7a2a976 (diff) | |
add stuff
| -rw-r--r-- | Makefile | 3 | ||||
| -rw-r--r-- | tags | 32 | ||||
| -rw-r--r-- | tetris.c | 86 | ||||
| -rw-r--r-- | tetris.h | 4 | ||||
| -rw-r--r-- | vector.c | 98 | ||||
| -rw-r--r-- | vector.h | 18 |
6 files changed, 144 insertions, 97 deletions
@@ -2,3 +2,6 @@ clean: -rm tetris3 indent: sh indent.sh +gentags: + ctags -a -d *.c + ctags -a -d *.h @@ -0,0 +1,32 @@ +Mtetris ./tetris.c /^int main (int argc, char **argv) {$/ +UNUSED ./tetris.c /^#define UNUSED(x) (void)(x)$/ +display_game ./tetris.c /^void display_game(void) {$/ +init_block ./block.c /^block_t *init_block(int type, int width)$/ +init_vector ./vector.c /^vector_t init_vector(int mx, int my) {$/ +init_vectorp ./vector.c /^vectorp_t init_vectorp(vector_t* vectors, int leng/ +init_vectorpp ./vector.c /^vectorpp_t init_vectorpp(vectorp_t* vectorps, int / +interrupt_handler ./tetris.c /^void interrupt_handler(int sig) {$/ +parse_args ./tetris.c /^void parse_args(int argc, char **argv) {$/ +remove_vector ./vector.c /^vectorp_t remove_vector(vectorp_t vectorp, int ind/ +remove_vectors ./vector.c /^vectorp_t remove_vectors(vectorp_t vectorp, int* i/ +vector_add ./vector.c /^vector_t vector_add(vector_t v1, vector_t v2) {$/ +vector_equals ./vector.c /^int vector_equals(vector_t v1, vector_t v2) {$/ +vector_sub ./vector.c /^vector_t vector_sub(vector_t v1, vector_t v2) {$/ +Mtetris tetris.c /^int main (int argc, char **argv) {$/ +UNUSED tetris.c /^#define UNUSED(x) (void)(x)$/ +display_game tetris.c /^void display_game(void) {$/ +init_block block.c /^block_t *init_block(int type, int width)$/ +init_vector vector.c /^vector_t init_vector(int mx, int my) {$/ +init_vectorp vector.c /^vectorp_t init_vectorp(vector_t* vectors, int leng/ +init_vectorpp vector.c /^vectorpp_t init_vectorpp(vectorp_t* vectorps, int / +interrupt_handler tetris.c /^void interrupt_handler(int sig) {$/ +parse_args tetris.c /^void parse_args(int argc, char **argv) {$/ +remove_vector vector.c /^vectorp_t remove_vector(vectorp_t vectorp, int ind/ +remove_vectors vector.c /^vectorp_t remove_vectors(vectorp_t vectorp, int* i/ +vector_add vector.c /^vector_t vector_add(vector_t v1, vector_t v2) {$/ +vector_equals vector.c /^int vector_equals(vector_t v1, vector_t v2) {$/ +vector_sub vector.c /^vector_t vector_sub(vector_t v1, vector_t v2) {$/ +BLOCK_H block.h /^#define BLOCK_H$/ +CONFIG_H config.h /^#define CONFIG_H$/ +TETRIS_H tetris.h /^#define TETRIS_H$/ +VECTOR vector.h /^#define VECTOR$/ @@ -14,62 +14,66 @@ volatile sig_atomic_t g_int_ctrl_c = 0; int g_score = 0; -void interrupt_handler(int sig) { - UNUSED(sig); - g_int_ctrl_c = 1; +void interrupt_handler(int sig) +{ + UNUSED(sig); + g_int_ctrl_c = 1; } -void parse_args(int argc, char **argv) { +void parse_args(int argc, char **argv) +{ } -void display_game(void) { +void display_game(void) +{ } -int main (int argc, char **argv) { - int width; - int height; - volatile int *last_input = calloc(1, sizeof(int)); - int *cancellation_token = calloc(1, sizeof(int)); - struct winsize win; - struct timespec time; +int main(int argc, char **argv) +{ + int width; + int height; + volatile int *last_input = calloc(1, sizeof(int)); + int *cancellation_token = calloc(1, sizeof(int)); + struct winsize win; + struct timespec time; - /* store arguments in global variables */ - parse_args(argc, argv); + /* store arguments in global variables */ + parse_args(argc, argv); - /* get dimensions of board */ - ioctl(fileno(stdout), TIOCGWINSZ, &win); - width = (int)(win.ws_col); - height = (int)(win.ws_row); + /* get dimensions of board */ + ioctl(fileno(stdout), TIOCGWINSZ, &win); + width = (int) (win.ws_col); + height = (int) (win.ws_row); - /* handle SIGINT interrupts */ - signal(SIGINT, interrupt_handler); + /* handle SIGINT interrupts */ + signal(SIGINT, interrupt_handler); - /* Hide cursor */ - print("\033[?251"); + /* Hide cursor */ + print("\033[?251"); - /* prepare thread for getting input and accepting cancellation */ - thread_arg_t *thread_arg = malloc(sizeof(thread_arg_t)); - thread_arg->ret = (void *)last_input; - thread_arg->cancellation_token = cancellation_token; + /* prepare thread for getting input and accepting cancellation */ + thread_arg_t *thread_arg = malloc(sizeof(thread_arg_t)); + thread_arg->ret = (void *) last_input; + thread_arg->cancellation_token = cancellation_token; - /* Game Loop */ - while (1) { - if (g_int_ctrl_c) { - goto EXIT; - } - display_game(); + /* Game Loop */ + while (1) { + if (g_int_ctrl_c) { + goto EXIT; } + display_game(); + } EXIT: - /* cancel thread */ - *cancellation_token = 1; - printf("%sGame over! Your score was: %d%s\n", RED, g_score, COLOR_RESET); - /* unhide cursor */ - printf("\033[?25h"); + /* cancel thread */ + *cancellation_token = 1; + printf("%sGame over! Your score was: %d%s\n", RED, g_score, COLOR_RESET); + /* unhide cursor */ + printf("\033[?25h"); - /* free some values */ - free(cancellation_token); - free((int *)last_input); - return 0; + /* free some values */ + free(cancellation_token); + free((int *) last_input); + return 0; } @@ -1,8 +1,8 @@ #ifndef TETRIS_H #define TETRIS_H typedef struct THREADARG_STRUCT { - int *cancellation_token; - void *ret; + int *cancellation_token; + void *ret; } thread_arg_t; void interrupt_handler(int sig); void die(void); @@ -1,57 +1,65 @@ #include <stdlib.h> #include "vector.h" -vector_t init_vector(int mx, int my) { - vector_t vector; - vector.mx = mx; - vector.my = my; - return vector; +vector_t init_vector(int mx, int my) +{ + vector_t vector; + vector.mx = mx; + vector.my = my; + return vector; } -vectorp_t init_vectorp(vector_t* vectors, int length) { - vectorp_t vectorP; - vectorP.vectors = vectors; - vectorP.length = length; - return vectorP; +vectorp_t init_vectorp(vector_t * vectors, int length) +{ + vectorp_t vectorP; + vectorP.vectors = vectors; + vectorP.length = length; + return vectorP; } -int vector_equals(vector_t v1, vector_t v2) { - return v1.mx == v2.mx && v1.my == v2.my; +int vector_equals(vector_t v1, vector_t v2) +{ + return v1.mx == v2.mx && v1.my == v2.my; } -vector_t vector_add(vector_t v1, vector_t v2) { - return init_vector(v1.mx + v2.mx, v1.my + v2.my); +vector_t vector_add(vector_t v1, vector_t v2) +{ + return init_vector(v1.mx + v2.mx, v1.my + v2.my); } -vector_t vector_sub(vector_t v1, vector_t v2) { - return init_vector(v1.mx - v2.mx, v1.my - v2.my); +vector_t vector_sub(vector_t v1, vector_t v2) +{ + return init_vector(v1.mx - v2.mx, v1.my - v2.my); } -vectorp_t remove_vector(vectorp_t vectorp, int index) { - vector_t* vectors = malloc((vectorp.length - 1) * sizeof(vector_t)); - for(int i = 0; i < vectorp.length - 1; i++) { - int correctedIndex = i > index ? i - 1 : i; - if(i != index) { - vectors[correctedIndex] = vectorp.vectors[i]; - } +vectorp_t remove_vector(vectorp_t vectorp, int index) +{ + vector_t *vectors = malloc((vectorp.length - 1) * sizeof(vector_t)); + for (int i = 0; i < vectorp.length - 1; i++) { + int correctedIndex = i > index ? i - 1 : i; + if (i != index) { + vectors[correctedIndex] = vectorp.vectors[i]; } - return init_vectorp(vectors, vectorp.length - 1); + } + return init_vectorp(vectors, vectorp.length - 1); } -vectorp_t remove_vectors(vectorp_t vectorp, int* indexes, int indexCount) { - vector_t* vectors = malloc((vectorp.length - indexCount) * sizeof(vector_t)); - int correctedIndex = 0; - for(int i = 0; i < vectorp.length - indexCount; i++) { - int toRemove = 0; - for(int j = 0; j < indexCount; j++) { - if(i == indexes[j]) { - toRemove = 1; - break; - } - } - if(!toRemove) { - vectors[correctedIndex] = vectorp.vectors[i]; - correctedIndex++; - } +vectorp_t remove_vectors(vectorp_t vectorp, int *indexes, int indexCount) +{ + vector_t *vectors = malloc((vectorp.length - indexCount) * sizeof(vector_t)); + int correctedIndex = 0; + for (int i = 0; i < vectorp.length - indexCount; i++) { + int toRemove = 0; + for (int j = 0; j < indexCount; j++) { + if (i == indexes[j]) { + toRemove = 1; + break; + } } - return init_vectorp(vectors, vectorp.length - indexCount); + if (!toRemove) { + vectors[correctedIndex] = vectorp.vectors[i]; + correctedIndex++; + } + } + return init_vectorp(vectors, vectorp.length - indexCount); } -vectorpp_t init_vectorpp(vectorp_t* vectorps, int length) { - vectorpp_t vectorPP; - vectorPP.vectorps = vectorps; - vectorPP.length = length; - return vectorPP; +vectorpp_t init_vectorpp(vectorp_t * vectorps, int length) +{ + vectorpp_t vectorPP; + vectorPP.vectorps = vectorps; + vectorPP.length = length; + return vectorPP; } @@ -1,8 +1,8 @@ #ifndef VECTOR #define VECTOR typedef struct Vector { - int mx; - int my; + int mx; + int my; } vector_t; vector_t init_vector(int mx, int my); @@ -11,20 +11,20 @@ vector_t vector_add(vector_t v1, vector_t v2); vector_t vector_sub(vector_t v1, vector_t v2); typedef struct VectorP { - vector_t* vectors; - int length; + vector_t *vectors; + int length; } vectorp_t; -vectorp_t init_vectorp(vector_t* vectors, int length); +vectorp_t init_vectorp(vector_t * vectors, int length); /* removes a vector from vectorp */ vectorp_t remove_vector(vectorp_t vectorp, int index); -vectorp_t remove_vectors(vectorp_t vectorp, int* indexes, int indexCount); +vectorp_t remove_vectors(vectorp_t vectorp, int *indexes, int indexCount); typedef struct VectorPP { - vectorp_t* vectorps; - int length; + vectorp_t *vectorps; + int length; } vectorpp_t; -vectorpp_t init_vectorpp(vectorp_t* vectorps, int length); +vectorpp_t init_vectorpp(vectorp_t * vectorps, int length); #endif |
