home
·
contact
·
privacy
projects
/
plomrogue
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Always load seed file if it exists. Don't provide a default one.
[plomrogue]
/
roguelike.c
diff --git
a/roguelike.c
b/roguelike.c
index 1dfa627f015b9f25775f1df80774cd272389d429..cba46ad44675453f749cf51d4a5f6acad68405fe 100644
(file)
--- a/
roguelike.c
+++ b/
roguelike.c
@@
-12,7
+12,7
@@
uint16_t rrand(char use_seed, uint32_t new_seed) {
// Pseudo-random number generator (LGC algorithm). Use instead of rand() to ensure portable predictability.
uint16_t rrand(char use_seed, uint32_t new_seed) {
// Pseudo-random number generator (LGC algorithm). Use instead of rand() to ensure portable predictability.
- static uint32_t seed
= 0
;
+ static uint32_t seed;
if (0 != use_seed)
seed = new_seed;
seed = ((seed * 1103515245) + 12345) % 2147483648; // Values as recommended by POSIX.1-2001 (see rand(3)).
if (0 != use_seed)
seed = new_seed;
seed = ((seed * 1103515245) + 12345) % 2147483648; // Values as recommended by POSIX.1-2001 (see rand(3)).
@@
-69,10
+69,9
@@
void growshrink_active_window (struct WinMeta * win_meta, char change) {
struct Map init_map (uint32_t seed) {
// Initialize map with some experimental start values.
struct Map init_map (uint32_t seed) {
// Initialize map with some experimental start values.
- rrand(1, seed);
struct Map map;
struct Map map;
- map.width =
96
;
- map.height =
32
;
+ map.width =
64
;
+ map.height =
64
;
map.offset_x = 0;
map.offset_y = 0;
map.cells = malloc(map.width * map.height);
map.offset_x = 0;
map.offset_y = 0;
map.cells = malloc(map.width * map.height);
@@
-105,8
+104,8
@@
void next_turn (struct World * world) {
// Increment turn and move enemy.
world->turn++;
char d = rrand(0, 0) % 5;
// Increment turn and move enemy.
world->turn++;
char d = rrand(0, 0) % 5;
-
char
ty = world->monster->y;
-
char
tx = world->monster->x;
+
uint16_t
ty = world->monster->y;
+
uint16_t
tx = world->monster->x;
if (1 == d)
ty++;
else if (2 == d)
if (1 == d)
ty++;
else if (2 == d)
@@
-146,8
+145,8
@@
void move_player (struct World * world, char d) {
static char prev = 0;
char success = 0;
char * dir;
static char prev = 0;
char success = 0;
char * dir;
-
char
ty = world->player->y;
-
char
tx = world->player->x;
+
uint16_t
ty = world->player->y;
+
uint16_t
tx = world->player->x;
if ('s' == d) {
dir = "south";
ty++; }
if ('s' == d) {
dir = "south";
ty++; }
@@
-188,15
+187,12
@@
void player_wait (struct World * world) {
update_log (world, "\nYou wait."); }
int main (int argc, char *argv[]) {
update_log (world, "\nYou wait."); }
int main (int argc, char *argv[]) {
- uint32_t seed = time(NULL);
- int opt;
- while ((opt = getopt(argc, argv, "l")) != -1) {
- switch (opt) {
- case 'l':
- seed = load_seed();
- break;
- default:
- exit(EXIT_FAILURE); } }
+ uint32_t seed;
+ if (0 == access("seed", F_OK))
+ seed = load_seed();
+ else
+ seed = time(NULL);
+ rrand(1, seed);
struct World world;
init_keybindings(&world);
struct World world;
init_keybindings(&world);
@@
-206,12
+202,12
@@
int main (int argc, char *argv[]) {
struct Map map = init_map(seed);
world.map = ↦
struct Player player;
struct Map map = init_map(seed);
world.map = ↦
struct Player player;
- player.y =
16
;
- player.x =
16
;
+ player.y =
8
;
+ player.x =
8
;
world.player = &player;
struct Monster monster;
world.player = &player;
struct Monster monster;
- monster.y =
16
;
- monster.x =
80
;
+ monster.y =
55
;
+ monster.x =
55
;
world.monster = &monster;
WINDOW * screen = initscr();
world.monster = &monster;
WINDOW * screen = initscr();