#include #include #include #include #include "game_state.h" #define WINDOW_HEIGHT 500 #define WINDOW_WIDTH 700 #define CHAR_SPACING 40 void process_key_events() { char buf[2] = {'c', '\0'}; int k; const char *key_name; while ((k = GetKeyPressed()) != 0) { key_name = GetKeyName(k); char c = get_curr_letter(); sprintf(buf, "%c\0", c); if (key_name != NULL && strcmp(key_name, buf) == 0) { next(); } } } void render_game_state() { char buf[2] = {'c', '\0'}; char *curr_word = get_curr_word(); int curr_letter_index = get_curr_letter_index(); size_t word_len = strlen(curr_word); DrawText(curr_word, 10, 10, 20, BLACK); int x = (WINDOW_WIDTH / 2) - (CHAR_SPACING * (word_len / 2)); int y = WINDOW_HEIGHT / 2; for (int i = 0; i < word_len; i++) { char c = curr_word[i]; sprintf(buf, "%c\0", c); Color color; if (i == curr_letter_index) { color = GOLD; } else if (i < curr_letter_index) { color = DARKGRAY; } else { color = GRAY; } DrawText(buf, x, y, 50, color); x += CHAR_SPACING; } char wins_text[20]; snprintf(wins_text, 20, "%d wins", get_wins()); DrawText(wins_text, WINDOW_WIDTH - 100, WINDOW_HEIGHT - 20, 20, GRAY); } int main(int argc, char *argv[]) { InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, "Typing game"); init_game_state(); while (!WindowShouldClose()) { process_key_events(); BeginDrawing(); ClearBackground(WHITE); render_game_state(); DrawFPS(WINDOW_WIDTH - 100, 10); // top right EndDrawing(); } CloseWindow(); return 0; }