From 28642a7342ffec96c6a9366ad614261ad65ac381 Mon Sep 17 00:00:00 2001 From: Cole Date: Thu, 11 Jan 2024 21:36:56 -0600 Subject: [PATCH] README.md updates and speed option for testing --- README.md | 14 ++++++++++++++ TODO | 7 ------- screenshots/game_over_screenshot.png | Bin 0 -> 5022 bytes screenshots/game_screenshot.png | Bin 0 -> 3568 bytes src/app.c | 24 +++++++++++++----------- src/app.h | 4 ++-- src/main.c | 15 +++++++++++++-- 7 files changed, 42 insertions(+), 22 deletions(-) delete mode 100644 TODO create mode 100644 screenshots/game_over_screenshot.png create mode 100644 screenshots/game_screenshot.png diff --git a/README.md b/README.md index 8e8ee92..374e786 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,20 @@ Creating a Tetris clone in C to practice C programming and learn more about Rayl This game is a clone of the popular game Tetris. This clone features what you would expect from a simplistic version of Tetris, namely: falling blocks, which upon completion of a row disappear, score keeping and levels with incremental difficulty. +Here are some early screenshots of my progress: + +![gameplay](screenshots/game_screenshot.png "Gameplay") +![gameover](screenshots/game_over_screenshot.png "Game Over") + +Features left to-do: +- Update codebase to use cohesive style (still haven't landed on exactly what I like) +- Re-Implement rotation algorithm; my original algorithm was extremely buggy +- Empty rows that are full should "break" +- Broken rows should cause other rows to shift down without losing ordering +- scoring system +- display upcoming block +- introduce levels and increasing speed/score multiplier + I hope you enjoy! ## Getting Started diff --git a/TODO b/TODO deleted file mode 100644 index 110a117..0000000 --- a/TODO +++ /dev/null @@ -1,7 +0,0 @@ -- Re-organize manager.c to match manager.h, add internals to .h and fix code style to match rest of code -- Rotate (Partially Implemented/Buggy. Should try to understand Rotation Matrix better.) -- Empty rows that are full should "break" -- Shift rows down after row "breaks" -- Track and Display Score. During and After game -- display Upcoming block -- Introduce levels/speed up with every level \ No newline at end of file diff --git a/screenshots/game_over_screenshot.png b/screenshots/game_over_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..ff7dc52c0e961eec16ad424d7a630021079ca3e5 GIT binary patch literal 5022 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 literal 0 HcmV?d00001 diff --git a/screenshots/game_screenshot.png b/screenshots/game_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..5bea28bc091a695a69932aa5a441d47c358f6730 GIT binary patch literal 3568 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 +#include +#include -int main(void) { - a_run(); +int main(int argc, char **argv) { + // Not great code if I were to need multiple options, but I just need to be + // able to debug + if (argc > 1) { + if (strcmp(argv[1], "--speed") == 0) { + a_run(atoi(argv[2])); + } + } else { + a_run(50); + } return 0; }