Add player and game loop
This commit is contained in:
@@ -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`).
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
12
iris_c/player.c
Normal 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
14
iris_c/player.h
Normal 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
|
||||
Reference in New Issue
Block a user