X-Git-Url: https://plomlompom.com/repos/test.html?a=blobdiff_plain;f=roguelike.c;h=7caaec9dd194a2d6219909a1856766e04c749950;hb=7d71ffdb2d5d0466c6daac495207c5c38fa3d5fe;hp=7abc32337e876e671993e29c6924c3b0db29f218;hpb=0d03343c9e13078b01ec8da1d7266b9e2ac39faf;p=plomrogue
diff --git a/roguelike.c b/roguelike.c
index 7abc323..7caaec9 100644
--- a/roguelike.c
+++ b/roguelike.c
@@ -1,5 +1,5 @@
#include
-//#include
+#include
#include
#include
#include
@@ -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.
- 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)).
@@ -21,7 +21,7 @@ uint16_t rrand(char use_seed, uint32_t new_seed) {
uint32_t load_seed() {
// Load seed integer from seed file.
uint32_t seed;
- const uint16_t nchar = 256;
+ const uint16_t nchar = UCHAR_MAX + 1;
FILE * file = fopen("seed", "r");
unsigned char a = fgetc(file);
unsigned char b = fgetc(file);
@@ -33,7 +33,7 @@ uint32_t load_seed() {
void save_seed(uint32_t seed) {
// Save seed integer to seed file.
- const uint16_t nchar = 256;
+ const uint16_t nchar = UCHAR_MAX + 1;
unsigned char a = seed / (nchar * nchar * nchar);
unsigned char b = (seed - (a * nchar * nchar * nchar)) / (nchar * nchar);
unsigned char c = (seed - ((a * nchar * nchar * nchar) + (b * nchar * nchar))) / nchar;
@@ -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.
- rrand(1, seed);
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);
@@ -105,8 +104,8 @@ void next_turn (struct World * world) {
// 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)
@@ -146,8 +145,8 @@ void move_player (struct World * world, char d) {
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++; }
@@ -197,6 +196,7 @@ int main (int argc, char *argv[]) {
break;
default:
exit(EXIT_FAILURE); } }
+ rrand(1, seed);
struct World world;
init_keybindings(&world);
@@ -206,12 +206,12 @@ int main (int argc, char *argv[]) {
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;
- monster.y = 16;
- monster.x = 80;
+ monster.y = 55;
+ monster.x = 55;
world.monster = &monster;
WINDOW * screen = initscr();