#include #include #include #define GE_VEC2I_USE_SHORT_NAMES #define _pynic_logout_printf(...) fprintf(fp , ##__VA_ARGS__) #include #include "plantform/win_term/interface.h" FILE* fp; logger_t logger; static void log_handler (log_level_t level, const char* module, const char* file, int line, const char* message) { fprintf(fp, "[%s] %s:%d | %s: %s\n", pynic_level_str(level), file, line, module, message); fflush(fp); } void init(ge_core_t* core) { register_win_term(core); register_win_timer(core); fp = fopen("./log.txt", "w+"); init_logger_ex(&logger, "game", log_handler); Assert(fp != NULL); } void run(ge_core_t* core) { static ge_vector2i_t pos = vec2i(0, 0); // LOG_INFO("vec2: %d, %d", a.x, a.y); int key = terminal_get_key((win_term_t*)core->render.content); switch (key) { case 'w': MLOG_INFO(&logger, "w"); core->render.clear(&core->render); pos = vec2i_add(pos, GE_VEC2I_UP); core->render.draw(&core->render, pos, "@"); break; case 'a': MLOG_INFO(&logger, "a"); core->render.clear(&core->render); pos = vec2i_add(pos, GE_VEC2I_LEFT); core->render.draw(&core->render, pos, "@"); break; case 's': MLOG_INFO(&logger, "s"); core->render.clear(&core->render); pos = vec2i_add(pos, GE_VEC2I_DOWN); core->render.draw(&core->render, pos, "@"); break; case 'd': MLOG_INFO(&logger, "d"); core->render.clear(&core->render); pos = vec2i_add(pos, GE_VEC2I_RIGHT); core->render.draw(&core->render, pos, "@"); break; case 'q': core->state = GE_ENGINE_STATE_EXIT; MLOG_INFO(&logger, "exit"); break; } } int main(void) { ge_core_t core; ge_engine_init(&core); core.callbacks.init = init; core.callbacks.run = run; ge_engine_run(&core); return 0; }