热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一个用来测试正确的尾调用的迷宫小游戏

--localmap{--{1,1,0,0,0,0,0,0,0,0},--{0,1,1,0,0,0,0,0,0,0},--{0,0,1,0,0,0,0,0,0,0
-- local map = {
-- {1,1,0,0,0,0,0,0,0,0},
-- {0,1,1,0,0,0,0,0,0,0},
-- {0,0,1,0,0,0,0,0,0,0},
-- {0,0,0,1,1,0,0,0,0,0},
-- {0,0,0,0,1,1,0,0,0,0},
-- {0,0,0,0,0,1,1,0,0,0},
-- {0,0,0,0,0,0,1,1,0,0},
-- {0,0,0,0,0,0,0,1,1,0},
-- {0,0,0,0,0,0,0,0,1,1},
-- {0,0,0,0,0,0,0,0,0,2},
-- }
local map = {
{1,1,0,0,0},
{0,1,0,0,0},
{0,1,0,0,0},
{0,1,1,1,1},
{0,0,0,0,2},
}
-- local map = {
-- {1,0,0},
-- {1,0,0},
-- {2,0,0},
-- }


local left = 1
local right = #map[1]
local up = 1
local down = #map

local exit = 2;
local count = 0;
local Dir = {
up = 1,
down = 2,
left = 3,
right = 4,
}

local beginTime = os.time();
math.randomseed(os.time());

function GetDir()
return math.random(Dir.up,Dir.right);
end

function CheckReach(x,y)
print("Pos("..x..","..y..")")

count = count + 1
if(count > 200)then
print("不跑了,累死了")
return;
end

local value = map[x][y];

local reach = (value == exit);
if(reach == true)then
print("出来了,用了"..count.."步".."耗时".. os.time() - beginTime .."秒")
return
end

if(value ~= 1)then
if(map[x - 1] ~= nil and map[x - 1][y] == 1)then
return TurnUp(x -1 ,y);
end
if(map[x + 1] ~= nil and map[x + 1][y] == 1)then
return TurnDown(x +1 ,y);
end
if(map[x][y - 1] == 1)then
return TurnLeft(x ,y - 1);
end
if(map[x][y + 1] == 1)then
return TurnRight(x ,y + 1);
end
end

local move = GetDir();
if(move == Dir.up)then
return TurnUp(x- 1,y);
elseif(move == Dir.down)then
return TurnDown(x +1 ,y);
elseif(move == Dir.left)then
return TurnLeft(x,y -1);
else
return TurnRight(x,y+1);
end
end

function TurnUp(x,y)
print("↑")
if(x then
return TurnDown(x + 1,y)
end

return CheckReach(x,y);
end

function TurnDown(x,y)
print("↓")
if(x > down)then
return TurnUp(x - 1,y)
end

return CheckReach(x,y);
end

function TurnLeft(x,y)
print("←")
if(y then
return TurnRight(x,y + 1)
end


return CheckReach(x,y);
end

function TurnRight(x,y)
print("→")
if(y > right)then
return TurnLeft(x,y - 1)
end

return CheckReach(x,y);
end


CheckReach(1,1)

上面的代码很简单,在学到lua的尾调用的时候,写来玩,测一下堆栈会不会爆
然而写完这个小游戏后,发现不知道怎么查看lua的堆栈
无语

开源是一种精神


推荐阅读
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Givenasinglylinkedlist,returnarandomnode'svaluefromthelinkedlist.Eachnodemusthavethe s ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 本文介绍了安全性要求高的真正密码随机数生成器的概念和原理。首先解释了统计学意义上的伪随机数和真随机数的区别,以及伪随机数在密码学安全中的应用。然后讨论了真随机数的定义和产生方法,并指出了实际情况下真随机数的不可预测性和复杂性。最后介绍了随机数生成器的概念和方法。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • #define_CRT_SECURE_NO_WARNINGS#includelist.h#includevoidSListInit(PNode*pHead ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
author-avatar
潇潇-77
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有