From c6e385773b670f19b3109438559f759d658405d7 Mon Sep 17 00:00:00 2001 From: DarthMooMancer Date: Sat, 30 Aug 2025 13:48:44 -0400 Subject: [PATCH] feat: screen is made and basic things are in to make the game --- .../index/globals.hpp.CBE5601C6A3AB110.idx | Bin 0 -> 314 bytes .../index/input.cpp.528D820FC1026E99.idx | Bin 0 -> 604 bytes .../index/input.hpp.D5F1B614184DF267.idx | Bin 0 -> 434 bytes .../index/main.cpp.023CAAB69E7B9D8B.idx | Bin 474 -> 474 bytes .../index/window.cpp.3211998378C3868C.idx | Bin 0 -> 794 bytes .../index/window.hpp.F4C2E5CFEA29DA46.idx | Bin 0 -> 600 bytes CMakeLists.txt | 22 ++++++++---- include/globals.hpp | 7 ++++ include/input.hpp | 10 ++++++ include/window.hpp | 12 +++++++ src/input.cpp | 25 +++++++++++++ src/main.cpp | 14 +++++++- src/window.cpp | 33 ++++++++++++++++++ 13 files changed, 115 insertions(+), 8 deletions(-) create mode 100644 .cache/clangd/index/globals.hpp.CBE5601C6A3AB110.idx create mode 100644 .cache/clangd/index/input.cpp.528D820FC1026E99.idx create mode 100644 .cache/clangd/index/input.hpp.D5F1B614184DF267.idx create mode 100644 .cache/clangd/index/window.cpp.3211998378C3868C.idx create mode 100644 .cache/clangd/index/window.hpp.F4C2E5CFEA29DA46.idx create mode 100644 include/globals.hpp create mode 100644 include/input.hpp create mode 100644 include/window.hpp create mode 100644 src/input.cpp create mode 100644 src/window.cpp diff --git a/.cache/clangd/index/globals.hpp.CBE5601C6A3AB110.idx b/.cache/clangd/index/globals.hpp.CBE5601C6A3AB110.idx new file mode 100644 index 0000000000000000000000000000000000000000..42be9d2c823a3731aa064d732097ed8f737623e8 GIT binary patch literal 314 zcmWIYbaOLeWMFVk@vO*AElFfyU|4-2FSMxe<%-A zQ&Cx@H}~?9mXLL_M;-Uty}wxX=8M(6Dbso5F4qaSzMW$qS_cbDaxhj)9O3-9e)d+wBJvR3!QDG%qRwh52!7SFNUN2@80h=kAji8caNV3_LJl28QI^lpJm#mz|T7iJ6s)g^iJe0RVj3>dycG literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/input.hpp.D5F1B614184DF267.idx b/.cache/clangd/index/input.hpp.D5F1B614184DF267.idx new file mode 100644 index 0000000000000000000000000000000000000000..4ae1dcdde65f802a30e1d1ebd8faab8ff54c3f57 GIT binary patch literal 434 zcmWIYbaPw9$iU#7;#rZKT9U}Zz`!5^#Kk2=nZ-bQEf81CncCyX*KEMU@^{g%dD;GZ zpRx-Y={2$)FA@slg6Bs4I hR>M>?6s6`Qg47fjB^Psp7|fGH8g*>m3T|g$000H+e7pbv literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/main.cpp.023CAAB69E7B9D8B.idx b/.cache/clangd/index/main.cpp.023CAAB69E7B9D8B.idx index 0f3baa9382a18fab83c42610201600f32665b2a2..5a4c3618bfa5f5b3cf1c4ffe3e681639a56af28a 100644 GIT binary patch delta 104 zcmcb`e2aO58Kaa6vxb5A6^Y01iXu10+%Q_y!!N|h!_Cab%r!ZHQQKCASq>&`CHL`E uHe2FHMiFjiZf0JXFhfylP9g&k6c;5Iivwv!Zr6=rdk*s$DNWwNs00AF3LnG( delta 104 zcmcb`e2aO58Kaasv$lcw6^Y01iXu10+%Q_y!!N|h!_Cae%sV-NQQKCYSrH~}CHL`E uHe2FHMiFjiK4t-!FhfylP9g&k6c;5Iivwv!?y5ko$LAUBYbNhtR006Ki69dI diff --git a/.cache/clangd/index/window.cpp.3211998378C3868C.idx b/.cache/clangd/index/window.cpp.3211998378C3868C.idx new file mode 100644 index 0000000000000000000000000000000000000000..b39f072bb16bcfabd1b1abdaa61b2eb2645cdacb GIT binary patch literal 794 zcmWIYbaNA8W?*nm@vO*AElFfyU|9;hPH@aVY{1j{HN8x$ zYgfQ2jW3%HCA2%{S&JRNCY0Zo`^4hyzrTAnyY9(e&F+arKrK4H#bj8FE=c;_RWJ`4&EKk{6cGF-18&AU_&6JBh$4*Tv5-QrJ z`g~dAE7h&nfpH||zr#evnPm1jF z$?LTKo!=7LaQ*Vr=Qna5tUZ(8vF^|6nK#Al!-dXWI`hghWVxxV{I%a-xfZ*n*V-jL zH@>^RuDrbbYqI7XFaPgCH9MvzIZL%(EznMX!+q4D&#iZlxtZ&7yNBGHk{{<6SLP#Ov!k3uIZun7DZu_*gku`FPnG+1VL5fO0@!6SnpKx!>wn1eka03Wtp`H;fkb@Cz~V@QHGW^1uw^;S*;U=Z5j3 zwq%vxKj>q?D8t8Q$Yu&N3T6f~4<9Q7D;rE0$OF0&CdtFc$;t^g$>jX{eYZXwb!Qae z6Xg}MT`k_eN8#e^kciW0YK$Xym*zY(NJiA@tpk&>_`Oi{(* zhfk_lE}jJ`;$q`RQp6<;w+^Nl7#5)Lf;rVn?&GO!w#1K2K*x!QiosNg@QL$?^TBvU zsX2+DU@tC8F17~JjC>`t*Z(~|`RyteUIBhV240XP1n|Qc3=Dz@rT~JOoSTxv4dk+O PaxyWqaFX z=+fI0udnkgkYy2LVq{`qW#wSyV_|1xXJ_C5$^pR*oBQFaA}bu&n1DWFVPj|G1rrRM zU|B{M*2JwEa+ihIZ{%ZQXJTOC(BRMq6EOWYVO#H?`>lROfQbWWJSQ)wGz%virwB~C zC^fD43eYH+D;Oogw!>_N(M((rTfvqxFz}!#%4+Bqxqs9@gOP`YLzY7U=Ag$JpBC1Y zFxP{Gl{wU4!V6uyk2Lo(v@mk9Fmf;oK}}?UNdtvJet=nAarohrDwd09nSh3{ad5*_ z0eONPVlW=ek3h$R{07rol$w(WGQPMdxmX#*U}-!5+}bbk(H|x@W(H=E2n4Xf7z_*m D6#ca0 literal 0 HcmV?d00001 diff --git a/CMakeLists.txt b/CMakeLists.txt index 794ca4e..9620c6b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,19 @@ -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.16) project(pong) -include_directories(include) -set(SOURCES src/main.cpp) -add_executable(pong ${SOURCES}) -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_C_STANDARD 23) set(CMAKE_C_STANDARD_REQUIRED ON) +include_directories(include) -# find_package(SDL3 CONFIG REQUIRED) # An example of how to import libraries from vcpkg -# target_link_libraries(Game PRIVATE SDL3::SDL3) +set(SOURCES + src/main.cpp + src/input.cpp + src/window.cpp +) + +add_executable(pong ${SOURCES}) + +find_package(Curses REQUIRED) +include_directories(${CURSES_INCLUDE_DIR}) +target_link_libraries(pong ${CURSES_LIBRARIES}) + +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) diff --git a/include/globals.hpp b/include/globals.hpp new file mode 100644 index 0000000..f606eb7 --- /dev/null +++ b/include/globals.hpp @@ -0,0 +1,7 @@ +#ifndef GLOBALS_HPP +#define GLOBALS_HPP + +constexpr unsigned int ROW = 10; +constexpr unsigned int COL = 20; + +#endif diff --git a/include/input.hpp b/include/input.hpp new file mode 100644 index 0000000..6184d02 --- /dev/null +++ b/include/input.hpp @@ -0,0 +1,10 @@ +#ifndef INPUT_HPP +#define INPUT_HPP + +struct Input { + int m_current_key = 0; + char m_getch = ' '; + void get_input(bool &r); +}; + +#endif // INPUT_HPP diff --git a/include/window.hpp b/include/window.hpp new file mode 100644 index 0000000..4124807 --- /dev/null +++ b/include/window.hpp @@ -0,0 +1,12 @@ +#ifndef WINDOW_HPP +#define WINDOW_HPP + +#include +#include "globals.hpp" + +struct Window { + Window(); + std::array, ROW> m_board; + void update_display(); +}; +#endif diff --git a/src/input.cpp b/src/input.cpp new file mode 100644 index 0000000..b36d190 --- /dev/null +++ b/src/input.cpp @@ -0,0 +1,25 @@ +#include "input.hpp" +#include + +void Input::get_input(bool &running) { + while(running) { + initscr(); + cbreak(); + noecho(); + + m_getch = getch(); + endwin(); + // if(m_current_key != 1 && (m_getch == 'a' || m_getch == 'D')) { + // direction = m_current_key = -1; + // } else if(m_current_key != - 1 && (m_getch == 'd' || m_getch == 'C')) { + // direction = m_current_key = 1; + // } else if(m_current_key != -2 && (m_getch == 's' || m_getch == 'B')) { + // direction = m_current_key = 2; + // } else if(m_current_key != 2 && (m_getch == 'w' || m_getch == 'A')) { + // direction = m_current_key = -2; + if(m_getch == 'q') { + running = false; + } + } + +} diff --git a/src/main.cpp b/src/main.cpp index 1055224..a3bfd33 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,18 @@ #include +#include +#include "input.hpp" +#include "window.hpp" + +bool running = true; +Input input; +Window window; +std::thread input_thread(&Input::get_input, &input, std::ref(running)); int main() { - std::cout << "Hello World" << std::endl; + 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..0c1ea2e --- /dev/null +++ b/src/window.cpp @@ -0,0 +1,33 @@ +#include "window.hpp" +#include +#include +#include + +Window::Window() { + for(std::array &row : m_board) { row.fill('.'); } +} + +void Window::update_display() { +// // Update symbols of positions +// m_board[head.m_head.m_row][head.m_head.m_col] = '*'; +// m_board[fruit.m_point.m_row][fruit.m_point.m_col] = 'X'; +// for(int i = 0; i < body.m_body.size(); i++) { +// m_board[body.m_body.at(i).m_tail_pos.m_row][body.m_body.at(i).m_tail_pos.m_col] = '0'; +// } +// + std::cout << "\033[H" << std::flush; // Clear screen + // Draw Screen + 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((int) (200))); // 1000 / fps; 200ms = 5fps +// // Clear old spaces +// for(int i = 0; i < body.m_body.size(); i++) { +// body.m_body.at(i).m_tail_pos.clear(m_board); +// } +// head.m_head.clear(m_board); +// fruit.m_point.clear(m_board); +}