home · contact · privacy
Corrected mixed up coordinates.
[plomrogue] / roguelike.c
index 6c0bd552a9092a188be1b08efd8bc9094c768584..fc5ce007be5e4865e7b79915f52f050c66602c9c 100644 (file)
@@ -317,7 +317,7 @@ char * get_keyname(int keycode) {
     sprintf(keyname, "(unknown)");
   return keyname;  }
 
-char is_passable (struct World * world, int y, int x) {
+char is_passable (struct World * world, int x, int y) {
 // Check if coordinate on (or beyond) map is accessible to movement.
   char passable = 0;
   if (0 <= x && x < world->map->width && 0 <= y && y < world->map->height)
@@ -327,10 +327,9 @@ char is_passable (struct World * world, int y, int x) {
 
 void move_player (struct World * world, char d) {
 // Move player in direction d, increment turn counter and update log.
-  update_info (world);
+  static char prev = 0;
   char success = 0;
   char * dir;
-  char * msg = calloc(25, sizeof(char));
   if ('s' == d) {
     dir = "south";
     if (is_passable(world, world->player->x, world->player->y + 1)) {
@@ -351,12 +350,18 @@ void move_player (struct World * world, char d) {
     if (is_passable(world, world->player->x + 1, world->player->y)) {
       world->player->x++;
       success = 1; } }
-  char * msg_content = "You fail to move";
-  if (success)
-    msg_content = "You move";
-  sprintf(msg, "\n%s %s.", msg_content, dir);
-  update_log (world, msg);
-  free(msg); }
+  if (success * d == prev)
+    update_log (world, ".");
+  else {
+  char * msg = calloc(25, sizeof(char));
+    char * msg_content = "You fail to move";
+    if (success)
+      msg_content = "You move";
+    sprintf(msg, "\n%s %s.", msg_content, dir);
+    update_log (world, msg);
+    free(msg); }
+  prev = success * d;
+  update_info (world); }
 
 int main () {
   struct World world;