Add player and game loop

This commit is contained in:
2026-02-24 15:52:07 +01:00
parent 9ff08e4a91
commit 1db758543f
5 changed files with 57 additions and 3 deletions

View File

@@ -34,3 +34,11 @@
### Wormholes
- When entering a black hole, the player is teleported to a random white hole. If there are no white holes, the player is teleported to a random quadrant.
## Game Loop
- Every turn one player action is read and applied
## Player
- At startup, the player is created at the world centre (`WORLD_WIDTH / 2`, `WORLD_HEIGHT / 2`).

View File

@@ -6,8 +6,8 @@ TARGET = main
all: $(TARGET)
$(TARGET): main.c random.c random.h world.c world.h prettynames.c prettynames.h
$(CC) $(CFLAGS) -o $@ main.c random.c world.c prettynames.c
$(TARGET): main.c player.c player.h random.c random.h world.c world.h prettynames.c prettynames.h
$(CC) $(CFLAGS) -o $@ main.c player.c random.c world.c prettynames.c
clean:
rm -f $(TARGET)

View File

@@ -1,14 +1,23 @@
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include "prettynames.h"
#include "player.h"
#include "random.h"
#include "world.h"
int main() {
uint32_t seed;
printf("Enter seed: ");
scanf("%u", &seed);
if (scanf("%u", &seed) != 1) {
printf("Invalid seed.\n");
return 1;
}
int ch = 0;
while ((ch = getchar()) != '\n' && ch != EOF) {}
set_random_seed(seed);
world_t world;
@@ -33,5 +42,16 @@ int main() {
centre->is_discovered ? "true" : "false"
);
player_t player = player_create(x, y);
char action[128];
for (;;) {
printf(">");
fflush(stdout);
if (fgets(action, sizeof(action), stdin) == NULL) break;
action[strcspn(action, "\n")] = '\0';
player_process_action(&player, action);
}
return 0;
}

12
iris_c/player.c Normal file
View File

@@ -0,0 +1,12 @@
#include "player.h"
#include <stddef.h>
player_t player_create(uint16_t x, uint16_t y) {
return (player_t){.x = x, .y = y};
}
void player_process_action(player_t *player, const char *action) {
(void)player;
(void)action;
}

14
iris_c/player.h Normal file
View File

@@ -0,0 +1,14 @@
#ifndef PLAYER_H
#define PLAYER_H
#include <stdint.h>
typedef struct {
uint16_t x;
uint16_t y;
} player_t;
player_t player_create(uint16_t x, uint16_t y);
void player_process_action(player_t *player, const char *action);
#endif