From: Pasi Kallinen Date: Wed, 28 Jul 2021 17:47:12 +0000 (+0300) Subject: Add more movement tests X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=19599fa75162138a6fd73a6978a01f36256b66ca;p=nethack Add more movement tests --- diff --git a/test/testmove.lua b/test/testmove.lua index 434b816a2..23956b446 100644 --- a/test/testmove.lua +++ b/test/testmove.lua @@ -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;