]> granicus.if.org Git - nethack/commitdiff
Add more movement tests
authorPasi Kallinen <paxed@alt.org>
Wed, 28 Jul 2021 17:47:12 +0000 (20:47 +0300)
committerPasi Kallinen <paxed@alt.org>
Wed, 28 Jul 2021 17:47:12 +0000 (20:47 +0300)
test/testmove.lua

index 434b816a2bfa68ea7d72747212d4f1e2d2524a5b..23956b44666a27f53e2946549807a520c94641c2 100644 (file)
@@ -3,11 +3,14 @@
 
 -- TODO: running stops if hero walks over stairs -> test fails.
 --       prevent stair generation? check where the stairs are?
+-- TODO: prevent hero from getting hungry
+
 
 nh.parse_config("OPTIONS=number_pad:0");
 nh.parse_config("OPTIONS=runmode:teleport");
 
 local POS = { x = 10, y = 05 };
+local number_pad = 0;
 
 function initlev()
    nh.monster_generation(false);
@@ -18,29 +21,77 @@ function initlev()
    des.finalize_level();
 end
 
+function ctrl(key)
+   return string.char(0x1F & string.byte(key));
+end
+
+function meta(key)
+   return string.char(0x80 | string.byte(key));
+end
+
 local basicmoves = {
-   h = { dx = -1,  dy =  0 },
-   j = { dx =  0,  dy =  1 },
-   k = { dx =  0,  dy = -1 },
-   l = { dx =  1,  dy =  0 },
-   y = { dx = -1,  dy = -1 },
-   u = { dx =  1,  dy = -1 },
-   b = { dx = -1,  dy =  1 },
-   n = { dx =  1,  dy =  1 },
-   H = { x = 2,  y = POS.y },
-   J = { x = POS.x, y = nhc.ROWNO-1 },
-   K = { x = POS.x, y = 0 },
-   L = { x = nhc.COLNO-2, y = POS.y },
-   Y = { x = POS.x - POS.y, y = 0 },
-   U = { x = POS.x + POS.y, y = 0 },
-   B = { x = 2, y = 13 },
-   N = { x = 25, y = nhc.ROWNO-1 },
+   -- move
+   h = { dx = -1,  dy =  0, number_pad = 0 },
+   j = { dx =  0,  dy =  1, number_pad = 0 },
+   k = { dx =  0,  dy = -1, number_pad = 0 },
+   l = { dx =  1,  dy =  0, number_pad = 0 },
+   y = { dx = -1,  dy = -1, number_pad = 0 },
+   u = { dx =  1,  dy = -1, number_pad = 0 },
+   b = { dx = -1,  dy =  1, number_pad = 0 },
+   n = { dx =  1,  dy =  1, number_pad = 0 },
+
+   -- run
+   H = { x = 2,  y = POS.y, number_pad = 0 },
+   J = { x = POS.x, y = nhc.ROWNO-1, number_pad = 0 },
+   K = { x = POS.x, y = 0, number_pad = 0 },
+   L = { x = nhc.COLNO-2, y = POS.y, number_pad = 0 },
+   Y = { x = POS.x - POS.y, y = 0, number_pad = 0 },
+   U = { x = POS.x + POS.y, y = 0, number_pad = 0 },
+   B = { x = 2, y = 13, number_pad = 0 },
+   N = { x = 25, y = nhc.ROWNO-1, number_pad = 0 },
+
+   -- rush
+   [ctrl("h")] = { x = 2,  y = POS.y, number_pad = 0 },
+   [ctrl("j")] = { x = POS.x, y = nhc.ROWNO-1, number_pad = 0 },
+   [ctrl("k")] = { x = POS.x, y = 0, number_pad = 0 },
+   [ctrl("l")] = { x = nhc.COLNO-2, y = POS.y, number_pad = 0 },
+   [ctrl("y")] = { x = POS.x - POS.y, y = 0, number_pad = 0 },
+   [ctrl("u")] = { x = POS.x + POS.y, y = 0, number_pad = 0 },
+   [ctrl("b")] = { x = 2, y = 13, number_pad = 0 },
+   [ctrl("n")] = { x = 25, y = nhc.ROWNO-1, number_pad = 0 },
+
+   -- move, number_pad
+   ["4"] = { dx = -1,  dy =  0, number_pad = 1 },
+   ["2"] = { dx =  0,  dy =  1, number_pad = 1 },
+   ["8"] = { dx =  0,  dy = -1, number_pad = 1 },
+   ["6"] = { dx =  1,  dy =  0, number_pad = 1 },
+   ["7"] = { dx = -1,  dy = -1, number_pad = 1 },
+   ["9"] = { dx =  1,  dy = -1, number_pad = 1 },
+   ["1"] = { dx = -1,  dy =  1, number_pad = 1 },
+   ["3"] = { dx =  1,  dy =  1, number_pad = 1 },
+
+   -- run (or rush), number_pad
+   [meta("4")] = { x = 2,  y = POS.y, number_pad = 1 },
+   [meta("2")] = { x = POS.x, y = nhc.ROWNO-1, number_pad = 1 },
+   [meta("8")] = { x = POS.x, y = 0, number_pad = 1 },
+   [meta("6")] = { x = nhc.COLNO-2, y = POS.y, number_pad = 1 },
+   [meta("7")] = { x = POS.x - POS.y, y = 0, number_pad = 1 },
+   [meta("9")] = { x = POS.x + POS.y, y = 0, number_pad = 1 },
+   [meta("1")] = { x = 2, y = 13, number_pad = 1 },
+   [meta("3")] = { x = 25, y = nhc.ROWNO-1, number_pad = 1 },
 };
 
 
 for k, v in pairs(basicmoves) do
    initlev();
 
+   if (v.number_pad ~= nil) then
+      if (v.number_pad ~= number_pad) then
+         nh.parse_config("OPTIONS=number_pad:" .. v.number_pad);
+         number_pad = v.number_pad;
+      end
+   end
+
    local x = u.ux;
    local y = u.uy;