Mercurial
annotate sori/main.c @ 26:a58a663dae68
[Sori] Making a simple game.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Thu, 09 Oct 2025 06:41:49 -0700 |
| parents | |
| 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 |