Mercurial
annotate 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 |
| rev | line source |
|---|---|
|
26
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1 #include <stdio.h> |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2 #include "dowa/dowa.h" |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
3 #include "third_party/raylib/include/raylib.h" |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
4 #include "third_party/raylib/include/raymath.h" |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
5 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
6 typedef struct { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
7 char *texts; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
8 Vector2 position; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
9 } PopUpText; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
10 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
11 typedef struct { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
12 Vector2 position; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
13 Vector2 size; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
14 Vector2 velocity; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
15 } Entity; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
16 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
17 Entity *Shoot(Entity *player) |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
18 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
19 Entity *box = malloc(sizeof(Entity)); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
20 box->velocity = (Vector2){ .x=1, .y=-10 }; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
21 box->position = player->position; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
22 box->size = (Vector2){ .x=10, .y=2 }; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
23 return box; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
24 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
25 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
26 void Entity_Update(Entity *player, Entity *object) |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
27 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
28 int gravity = 1; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
29 player->velocity.y += gravity; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
30 player->position = Vector2Add(player->position, player->velocity); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
31 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
32 if ( |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
33 player->position.y + player->size.y > object->position.y |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
34 ) |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
35 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
36 player->position.y = object->position.y - player->size.y; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
37 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
38 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
39 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
40 int main() |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
41 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
42 char mouse_position[256]; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
43 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
44 InitWindow(800, 450, "Sori the game"); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
45 SetTargetFPS(120); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
46 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
47 Entity player = { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
48 .size = (Vector2){ .x = 20, .y = 20 }, |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
49 .position = (Vector2){ .x = 10, .y = 10}, |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
50 .velocity = (Vector2){ .x = 0, .y = 0}, |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
51 }; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
52 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
53 Entity ground = { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
54 .size = (Vector2){ .x = 800, .y = 100 }, |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
55 .position = (Vector2){ .x = 0, .y = 350}, |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
56 .velocity = (Vector2){ .x = 0, .y = 0}, |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
57 }; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
58 Entity *bullet; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
59 Entity **bullets = malloc(sizeof(Entity) * 100); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
60 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
61 PopUpText *curr_values = malloc(sizeof(PopUpText) * 100); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
62 int size_bullets = 0; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
63 int size_texts = 0; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
64 int frame = 0; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
65 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
66 while (!WindowShouldClose()) |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
67 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
68 BeginDrawing(); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
69 ClearBackground(RAYWHITE); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
70 int x = GetMouseX(); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
71 int y = GetMouseY(); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
72 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
73 sprintf( |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
74 mouse_position, |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
75 "Mouse position %d, %d", |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
76 x, y |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
77 ); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
78 if (IsMouseButtonPressed(0)) |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
79 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
80 curr_values[size_texts].texts = "hello good sir"; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
81 curr_values[size_texts].position = (Vector2){ |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
82 .x = (float)x, |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
83 .y = (float)y, |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
84 }; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
85 size_texts++; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
86 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
87 Entity *bullet = Shoot(&player); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
88 bullets[size_bullets] = bullet; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
89 size_bullets++; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
90 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
91 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
92 if (frame > 2) |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
93 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
94 Entity_Update(&player, &ground); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
95 frame = 0; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
96 for (uint32 i = 0; i < size_texts; i++) |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
97 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
98 Entity_Update(bullets[i], &ground); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
99 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
100 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
101 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
102 int key = GetKeyPressed(); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
103 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
104 if (IsKeyDown(KEY_W)) |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
105 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
106 player.position.y -= 1; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
107 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
108 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
109 if (IsKeyDown(KEY_S)) |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
110 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
111 player.position.y += 1; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
112 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
113 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
114 if (IsKeyDown(KEY_A)) |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
115 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
116 player.position.x -= 1; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
117 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
118 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
119 if (IsKeyDown(KEY_D)) |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
120 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
121 player.position.x += 1; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
122 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
123 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
124 DrawRectangleV(player.position, player.size, RED); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
125 DrawRectangleV(ground.position, ground.size, BLUE); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
126 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
127 for (uint32 i = 0; i < size_texts; i++) |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
128 { |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
129 DrawText(curr_values[i].texts, curr_values[i].position.x, curr_values[i].position.y, |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
130 20, LIGHTGRAY); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
131 DrawRectangleV(bullets[i]->position, bullets[i]->size, BLACK); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
132 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
133 DrawText(mouse_position, 190, 200, 20, LIGHTGRAY); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
134 EndDrawing(); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
135 |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
136 frame++; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
137 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
138 CloseWindow(); |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
139 return 0; |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
140 } |
|
a58a663dae68
[Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
141 |