Add player and game loop
This commit is contained in:
@@ -34,3 +34,11 @@
|
|||||||
### Wormholes
|
### 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.
|
- 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)
|
all: $(TARGET)
|
||||||
|
|
||||||
$(TARGET): main.c random.c random.h world.c world.h prettynames.c prettynames.h
|
$(TARGET): main.c player.c player.h random.c random.h world.c world.h prettynames.c prettynames.h
|
||||||
$(CC) $(CFLAGS) -o $@ main.c random.c world.c prettynames.c
|
$(CC) $(CFLAGS) -o $@ main.c player.c random.c world.c prettynames.c
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(TARGET)
|
rm -f $(TARGET)
|
||||||
|
|||||||
@@ -1,14 +1,23 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "prettynames.h"
|
#include "prettynames.h"
|
||||||
|
#include "player.h"
|
||||||
#include "random.h"
|
#include "random.h"
|
||||||
#include "world.h"
|
#include "world.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
uint32_t seed;
|
uint32_t seed;
|
||||||
printf("Enter 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);
|
set_random_seed(seed);
|
||||||
|
|
||||||
world_t world;
|
world_t world;
|
||||||
@@ -33,5 +42,16 @@ int main() {
|
|||||||
centre->is_discovered ? "true" : "false"
|
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;
|
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