Mercurial
annotate sori/main.c @ 279:b3b547563ec7
Add Google connector service and agent wiki
Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code.
Co-authored-by: Copilot <[email protected]>
Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Mon, 17 Aug 2026 22:22:36 -0700 |
| 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 |