From 14a66b8e27011a0409451f91d181a2ddd0524527 Mon Sep 17 00:00:00 2001 From: jonny_jr9 Date: Sun, 17 Dec 2023 19:40:42 +0100 Subject: [PATCH 1/2] Fix bugged tail element at 0,0 when first eaten Fixed array index -> prevents render functions from accessing uninitialized value in `snake.tail[]` --- src/snake.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/snake.c b/src/snake.c index 9520aa7..6a9ffc0 100644 --- a/src/snake.c +++ b/src/snake.c @@ -36,8 +36,8 @@ void snakeGrow() game.snake.length++; // tail part is attached left of last tail part // maybe problem while rendering --> MUST BE SOLVED THEN - game.snake.tail[game.snake.length][0] = game.snake.tail[game.snake.length - 1][0] - 1; - game.snake.tail[game.snake.length][1] = game.snake.tail[game.snake.length - 1][1]; + game.snake.tail[game.snake.length - 1][0] = game.snake.tail[game.snake.length - 2][0]; + game.snake.tail[game.snake.length - 1][1] = game.snake.tail[game.snake.length - 2][1]; return; } From 8465c16b47cdecb5bde5863969db3c4a3e651d0c Mon Sep 17 00:00:00 2001 From: jonny_jr9 Date: Sun, 17 Dec 2023 22:54:32 +0100 Subject: [PATCH 2/2] Update Readme: Add image, Optimize links --- README.md | 23 +++++++++++++++-------- demo.jpg | Bin 0 -> 26079 bytes 2 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 demo.jpg diff --git a/README.md b/README.md index b42d54c..a2daf10 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,11 @@ -Development of the game Snake++ using C, C++ and SDK2 for the Software Engineering course as part of our studies. +# Snake++ +Development of the game "Snake" featuring portals, custom maps and sound effects. +Cross-platform compatibility using CMake, C, C++ and SDL2. +A project for the Software Engineering course as part of our studies. + +## Preview + + # Compilation @@ -18,12 +25,12 @@ make ## Windows **Download SDL** -- Download `SDL2-devel-2.28.5-VC.zip` from https://github.com/libsdl-org/SDL/releases/tag/release-2.28.5 +- Download `SDL2-devel-2.28.5-VC.zip` from [github/libsdl-org](https://github.com/libsdl-org/SDL/releases/download/release-2.28.5/SDL2-devel-2.28.5-VC.zip) - Unzip the file and rename the folder to `SDL2` (avoid unnecessary subfolder) - Place it in the root folder of this repository. **Download SDL_ttf** -- Download `SDL2_ttf-devel-2.20.2-VC.zip` from https://github.com/libsdl-org/SDL_ttf/releases/download/release-2.20.2/SDL2_ttf-devel-2.20.2-VC.zip +- Download `SDL2_ttf-devel-2.20.2-VC.zip` from [github/libsdl-org](https://github.com/libsdl-org/SDL_ttf/releases/download/release-2.20.2/SDL2_ttf-devel-2.20.2-VC.zip) - Unzip the file and rename the folder to `SDL2_ttf` (avoid unnecessary subfolder) - Place it in the root folder of this repository. @@ -46,17 +53,17 @@ See VS Code section # VS Code instructions ## Required extensions -- Cmake -- CmakeTools -- C/C++ +- [Cmake](https://open-vsx.org/extension/twxs/cmake) +- [CmakeTools](https://open-vsx.org/extension/ms-vscode/cmake-tools) +- [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) -## setup +## Setup - With CmakeTools installed open the project folder in VS Code - open cmd-prompt with `CTRL + SHIFT + P` run `cmake.build` - select kit (gcc or installed minGW compiler) Alternatively use cmake related buttons in bottom toolbar (CMake: Kit, Build, [all]...) -## compile +## Compile - Use buttons in bottom toolbar (CMake: ... Build [BUG-BUTTON] [PLAY-BUTTON] ... ) You can also use: - `ctrl-F5` run without debugger diff --git a/demo.jpg b/demo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9ef9ad196672a3a5ddc237b1b4683178bafe82fb GIT binary patch literal 26079 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
fQd!xX= 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 literal 0 HcmV?d00001