Compare commits

..
1 Commits
Author SHA1 Message Date
robertfry 8b2a969f6d Initial commit 2025-04-14 01:43:51 +00:00
5 changed files with 1 additions and 213 deletions
-16
View File
@@ -1,16 +0,0 @@
# https://clang.llvm.org/extra/clang-tidy/checks/list.html
Checks: '-*,
bugprone-*,
cert-*,
misc-*,
concurrency-*,
performance-*,
portability-*,
readability-*,
clang-analyzer-*,
'
# CheckOptions:
WarningsAsErrors: '*'
HeaderFilterRegex: '.'
FormatStyle: 'file'
-24
View File
@@ -1,24 +0,0 @@
# SPDX-License-Identifier: MIT
#
# SPDX-FileCopyrightText: Copyright (c) 2019-2023 Lars Melchior and contributors
set(CPM_DOWNLOAD_VERSION 0.40.8)
set(CPM_HASH_SUM "78ba32abdf798bc616bab7c73aac32a17bbd7b06ad9e26a6add69de8f3ae4791")
if(CPM_SOURCE_CACHE)
set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
elseif(DEFINED ENV{CPM_SOURCE_CACHE})
set(CPM_DOWNLOAD_LOCATION "$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
else()
set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
endif()
# Expand relative path. This is important if the provided path contains a tilde (~)
get_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE)
file(DOWNLOAD
https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
${CPM_DOWNLOAD_LOCATION} EXPECTED_HASH SHA256=${CPM_HASH_SUM}
)
include(${CPM_DOWNLOAD_LOCATION})
+1 -15
View File
@@ -1,13 +1,4 @@
#
# Project
#
.build/
#
# ---> C # ---> C
#
# Prerequisites # Prerequisites
*.d *.d
@@ -61,10 +52,7 @@ Module.symvers
Mkfile.old Mkfile.old
dkms.conf dkms.conf
#
# ---> C++ # ---> C++
#
# Prerequisites # Prerequisites
*.d *.d
@@ -98,10 +86,7 @@ dkms.conf
*.out *.out
*.app *.app
#
# ---> CMake # ---> CMake
#
CMakeLists.txt.user CMakeLists.txt.user
CMakeCache.txt CMakeCache.txt
CMakeFiles CMakeFiles
@@ -114,3 +99,4 @@ compile_commands.json
CTestTestfile.cmake CTestTestfile.cmake
_deps _deps
CMakeUserPresets.json CMakeUserPresets.json
-22
View File
@@ -1,22 +0,0 @@
cmake_minimum_required(VERSION 3.12)
project("C Rogue Game" VERSION "1.0.0" LANGUAGES "C"
DESCRIPTION "A rogue-like game written in C99")
include(.cmake/get_cpm.cmake)
CPMAddPackage("gh:robertefry/RockHopperStandards@1.3.6")
set(BINARY_NAME "c_rogue")
add_executable(${BINARY_NAME} "")
target_compile_features(${BINARY_NAME} PUBLIC c_std_99)
target_rockhopper_standards(${BINARY_NAME})
target_link_libraries(${BINARY_NAME} PUBLIC "ncurses")
file(GLOB_RECURSE BINARY_HEADERS "include/*.h")
file(GLOB_RECURSE BINARY_SOURCES "src/*.c" "src/*.h")
target_sources(${BINARY_NAME} PUBLIC ${BINARY_HEADERS} PRIVATE ${BINARY_SOURCES})
message(STATUS "CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}")
-136
View File
@@ -1,136 +0,0 @@
// https://www.youtube.com/playlist?list=PLkTXsX7igf8erbWGYT4iSAhpnJLJ0Nk5G
#include <stdlib.h>
#include <ncurses.h>
typedef struct {
int pos_x;
int pos_y;
} player_t;
player_t *player_malloc(void);
void player_free(player_t *player);
int player_move_by(player_t *player, int pos_dx, int pos_dy);
int screen_setup(void);
int screen_teardown(void);
int draw_map(void);
int draw_player(player_t *player);
int on_key_pressed(player_t *player, char key);
int main(void)
{
player_t *player = player_malloc();
screen_setup();
while (true)
{
draw_map();
draw_player(player);
refresh();
char key_pressed = getch();
if (key_pressed == 'q') {
break;
}
on_key_pressed(player, key_pressed);
}
screen_teardown();
player_free(player);
return 0;
}
int screen_setup(void)
{
initscr();
noecho();
return 0;
}
int screen_teardown(void)
{
endwin();
return 0;
}
int draw_map(void)
{
int const pos_x = 0;
int const pos_y = 0;
mvprintw(pos_y+0, pos_x, "--------");
mvprintw(pos_y+1, pos_x, "|......|");
mvprintw(pos_y+2, pos_x, "|......|");
mvprintw(pos_y+3, pos_x, "|......|");
mvprintw(pos_y+4, pos_x, "--------");
return 0;
}
player_t *player_malloc(void)
{
int const player_x = 1;
int const player_y = 1;
player_t *player = (player_t*)malloc(sizeof(player_t));
player->pos_x = player_x;
player->pos_y = player_y;
return player;
}
void player_free(player_t *player)
{
free(player);
}
int player_move_by(player_t *player, int pos_dx, int pos_dy)
{
player->pos_x += pos_dx;
player->pos_y += pos_dy;
return 0;
}
int draw_player(player_t *player)
{
mvprintw(player->pos_y, player->pos_x, "@");
return 0;
}
int on_key_pressed(player_t *player, char key)
{
switch (key)
{
case 'w':
case 'W':
return player_move_by(player, 0, -1);
break;
case 's':
case 'S':
return player_move_by(player, 0, +1);
break;
case 'a':
case 'A':
return player_move_by(player, -1, 0);
break;
case 'd':
case 'D':
return player_move_by(player, +1, 0);
break;
default:
return 0;
}
}