Adding Main files
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
build/
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.10)
|
||||||
|
project(snake)
|
||||||
|
include_directories(include)
|
||||||
|
set(SOURCES
|
||||||
|
src/main.cpp
|
||||||
|
src/snake.cpp
|
||||||
|
)
|
||||||
|
add_executable(snake ${SOURCES})
|
||||||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
set(CMAKE_C_STANDARD 23)
|
||||||
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
# find_package(SDL3 CONFIG REQUIRED) # An example of how to import libraries from vcpkg
|
||||||
|
# target_link_libraries(Game PRIVATE SDL3::SDL3)
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#ifndef SNAKE_HPP
|
||||||
|
#define SNAKE_HPP
|
||||||
|
|
||||||
|
void create_snake();
|
||||||
|
void draw_snake();
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include "snake.hpp"
|
||||||
|
|
||||||
|
const int ROW = 10;
|
||||||
|
const int COL = 10;
|
||||||
|
|
||||||
|
char getch();
|
||||||
|
void create_board();
|
||||||
|
void draw_board();
|
||||||
|
|
||||||
|
struct {
|
||||||
|
char board[ROW][COL];
|
||||||
|
} window;
|
||||||
|
|
||||||
|
char (*g_pboard)[ROW][COL] = &window.board;
|
||||||
|
|
||||||
|
char getch() {
|
||||||
|
termios oldt, newt;
|
||||||
|
char ch;
|
||||||
|
tcgetattr(STDIN_FILENO, &oldt); // get current terminal attributes
|
||||||
|
newt = oldt;
|
||||||
|
newt.c_lflag &= ~(ICANON | ECHO); // disable canonical mode and echo
|
||||||
|
tcsetattr(STDIN_FILENO, TCSANOW, &newt); // apply new settings
|
||||||
|
read(STDIN_FILENO, &ch, 1); // read one char
|
||||||
|
tcsetattr(STDIN_FILENO, TCSANOW, &oldt); // restore original settings
|
||||||
|
return ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
void create_board() {
|
||||||
|
for(int i = 0; i < ROW; i++) {
|
||||||
|
for(int a = 0; a < COL; a++) {
|
||||||
|
(*g_pboard)[i][a] = '.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw_board() {
|
||||||
|
for(int i = 0; i < ROW; i++) {
|
||||||
|
for(int a = 0; a < COL; a++) {
|
||||||
|
std::cout << (*g_pboard)[i][a] << " ";
|
||||||
|
}
|
||||||
|
std::cout << "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
create_board();
|
||||||
|
draw_board();
|
||||||
|
draw_snake();
|
||||||
|
// int count = 0;
|
||||||
|
// std::cout << "Press any key other than space or esc: " << std::endl;
|
||||||
|
// while(count < 10) {
|
||||||
|
// char ch = getch();
|
||||||
|
// std::cout << "\nYou pressed: " << ch << '\n';
|
||||||
|
// ++count;
|
||||||
|
// }
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#include "snake.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
void create_snake() {
|
||||||
|
std::cout << "Create Snake Test" << std::endl;
|
||||||
|
}
|
||||||
|
void draw_snake() {
|
||||||
|
std::cout << "Draw Snake Test" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* snake head for instance is (3, 0)
|
||||||
|
* the direct body to the head when going down would be (snake_head_x, snake_head_y - 1)
|
||||||
|
* the next and so on would be (previous_body_segment_x - 1, previous_body_segment_y - 1)
|
||||||
|
* so save the head and body positions as previous and then do the math until the segment hits a point at direction changes.
|
||||||
|
* so if I change direction at (0, 0) from north to west then at (0, 0) there is a postion change saved and once a body hits that
|
||||||
|
* switch direction
|
||||||
|
*/
|
||||||
Reference in New Issue
Block a user