Mercurial
view sori/main.c @ 71:75de5903355c
Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Sun, 28 Dec 2025 20:34:22 -0800 |
| parents | a58a663dae68 |
| children |
line wrap: on
line source
#include <stdio.h> #include "dowa/dowa.h" #include "third_party/raylib/include/raylib.h" #include "third_party/raylib/include/raymath.h" typedef struct { char *texts; Vector2 position; } PopUpText; typedef struct { Vector2 position; Vector2 size; Vector2 velocity; } Entity; Entity *Shoot(Entity *player) { Entity *box = malloc(sizeof(Entity)); box->velocity = (Vector2){ .x=1, .y=-10 }; box->position = player->position; box->size = (Vector2){ .x=10, .y=2 }; return box; } void Entity_Update(Entity *player, Entity *object) { int gravity = 1; player->velocity.y += gravity; player->position = Vector2Add(player->position, player->velocity); if ( player->position.y + player->size.y > object->position.y ) { player->position.y = object->position.y - player->size.y; } } int main() { char mouse_position[256]; InitWindow(800, 450, "Sori the game"); SetTargetFPS(120); Entity player = { .size = (Vector2){ .x = 20, .y = 20 }, .position = (Vector2){ .x = 10, .y = 10}, .velocity = (Vector2){ .x = 0, .y = 0}, }; Entity ground = { .size = (Vector2){ .x = 800, .y = 100 }, .position = (Vector2){ .x = 0, .y = 350}, .velocity = (Vector2){ .x = 0, .y = 0}, }; Entity *bullet; Entity **bullets = malloc(sizeof(Entity) * 100); PopUpText *curr_values = malloc(sizeof(PopUpText) * 100); int size_bullets = 0; int size_texts = 0; int frame = 0; while (!WindowShouldClose()) { BeginDrawing(); ClearBackground(RAYWHITE); int x = GetMouseX(); int y = GetMouseY(); sprintf( mouse_position, "Mouse position %d, %d", x, y ); if (IsMouseButtonPressed(0)) { curr_values[size_texts].texts = "hello good sir"; curr_values[size_texts].position = (Vector2){ .x = (float)x, .y = (float)y, }; size_texts++; Entity *bullet = Shoot(&player); bullets[size_bullets] = bullet; size_bullets++; } if (frame > 2) { Entity_Update(&player, &ground); frame = 0; for (uint32 i = 0; i < size_texts; i++) { Entity_Update(bullets[i], &ground); } } int key = GetKeyPressed(); if (IsKeyDown(KEY_W)) { player.position.y -= 1; } if (IsKeyDown(KEY_S)) { player.position.y += 1; } if (IsKeyDown(KEY_A)) { player.position.x -= 1; } if (IsKeyDown(KEY_D)) { player.position.x += 1; } DrawRectangleV(player.position, player.size, RED); DrawRectangleV(ground.position, ground.size, BLUE); for (uint32 i = 0; i < size_texts; i++) { DrawText(curr_values[i].texts, curr_values[i].position.x, curr_values[i].position.y, 20, LIGHTGRAY); DrawRectangleV(bullets[i]->position, bullets[i]->size, BLACK); } DrawText(mouse_position, 190, 200, 20, LIGHTGRAY); EndDrawing(); frame++; } CloseWindow(); return 0; }