From c93413ad7842a924fe5bbaab0d809e85facfe50b Mon Sep 17 00:00:00 2001 From: DarthMooMancer <107283522+DarthMooMancer@users.noreply.github.com> Date: Wed, 3 Sep 2025 09:00:00 -0400 Subject: [PATCH] batman --- .gitignore | 2 ++ CMakeLists.txt | 19 +++++++++++++++++++ compile_commands.json | 1 + include/elements.hpp | 14 ++++++++++++++ include/globals.hpp | 7 +++++++ include/input.hpp | 10 ++++++++++ include/window.hpp | 13 +++++++++++++ src/elements.cpp | 0 src/input.cpp | 17 +++++++++++++++++ src/main.cpp | 20 ++++++++++++++++++++ src/window.cpp | 17 +++++++++++++++++ 11 files changed, 120 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 120000 compile_commands.json create mode 100644 include/elements.hpp create mode 100644 include/globals.hpp create mode 100644 include/input.hpp create mode 100644 include/window.hpp create mode 100644 src/elements.cpp create mode 100644 src/input.cpp create mode 100644 src/main.cpp create mode 100644 src/window.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5b79a54 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build/ +.cache/ \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..176099d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.16) +project(flappy_bird) +set(CMAKE_C_STANDARD 23) +set(CMAKE_C_STANDARD_REQUIRED ON) +include_directories(include) + +set(SOURCES + src/main.cpp + src/window.cpp + src/input.cpp +) + +add_executable(flappy_bird ${SOURCES}) + +find_package(Curses REQUIRED) +include_directories(${CURSES_INCLUDE_DIR}) +target_link_libraries(flappy_bird ${CURSES_LIBRARIES}) + +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) diff --git a/compile_commands.json b/compile_commands.json new file mode 120000 index 0000000..c52ad08 --- /dev/null +++ b/compile_commands.json @@ -0,0 +1 @@ +compile_commands.json \ No newline at end of file diff --git a/include/elements.hpp b/include/elements.hpp new file mode 100644 index 0000000..7087db1 --- /dev/null +++ b/include/elements.hpp @@ -0,0 +1,14 @@ +#ifndef ELEMENTS_HPP +#define ELEMENTS_HPP + +struct Point { + Point(int row, int col) : m_row(row), m_col(col) {}; + int m_row; + int m_col; +}; + +struct Bird { + +}; + +#endif diff --git a/include/globals.hpp b/include/globals.hpp new file mode 100644 index 0000000..c203563 --- /dev/null +++ b/include/globals.hpp @@ -0,0 +1,7 @@ +#ifndef GLOBALS_HPP +#define GLOBALS_HPP + +constexpr int ROW = 10; +constexpr int COL = 10; + +#endif diff --git a/include/input.hpp b/include/input.hpp new file mode 100644 index 0000000..00f083d --- /dev/null +++ b/include/input.hpp @@ -0,0 +1,10 @@ +#ifndef INPUT_HPP +#define INPUT_HPP +// #include "elements.hpp" + +struct Input { + int _getch = 0; + void get_input(bool &running); +}; + +#endif diff --git a/include/window.hpp b/include/window.hpp new file mode 100644 index 0000000..0e541f0 --- /dev/null +++ b/include/window.hpp @@ -0,0 +1,13 @@ +#ifndef WINDOW_HPP +#define WINDOW_HPP + +#include +#include "globals.hpp" +// #include "elements.hpp" + +struct Window { + std::array, ROW> m_board = {}; + void update_display(); +}; + +#endif diff --git a/src/elements.cpp b/src/elements.cpp new file mode 100644 index 0000000..e69de29 diff --git a/src/input.cpp b/src/input.cpp new file mode 100644 index 0000000..f25d214 --- /dev/null +++ b/src/input.cpp @@ -0,0 +1,17 @@ +#include +#include "input.hpp" + +void Input::get_input(bool &running) { + while(running) { + initscr(); + cbreak(); + noecho(); + + _getch = getch(); + + endwin(); + if(_getch == 113) { + running = false; + } + } +} diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..8c85b48 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,20 @@ +#include +#include +#include "window.hpp" +#include "input.hpp" + +int main() { + Window window; + Input input; + bool running = true; + + std::thread input_thread(&Input::get_input, &input, std::ref(running)); + + while (running) { + window.update_display(); + } + + input_thread.join(); + + return 0; +} diff --git a/src/window.cpp b/src/window.cpp new file mode 100644 index 0000000..737d028 --- /dev/null +++ b/src/window.cpp @@ -0,0 +1,17 @@ +#include "window.hpp" +#include +#include +#include + +void Window::update_display() { + for(std::array &row : m_board) { row.fill('.'); } + + std::cout << "\033[H" << std::flush; + for(std::array &row : m_board) { + for(char &col : row) { + std::cout << col << " "; + } + std::cout << "\r\n"; + } + std::this_thread::sleep_for(std::chrono::milliseconds(200)); // 1000 / fps; 200ms = 5fps +}