c语言利用二维数组制作地图,用程序实现RPG背景地图二维数组构建

朱艳萍

摘要:该文主要阐述了前端RPG开发中,当作为背景的地图较为复杂时,如何用程序的方法构建与背景地图一致的二维数组,采用图文结合论述其算法,并使用原生JavaScript语言实现。

关键词:二维数组;背景地图;RPG;角色

中图分类号:TP311      文献标识码:A      文章编号:1009-3044(2019)03-0065-02

所谓RPG是指角色扮演游戏(Role Playing Game),是游戏类型的一种,在游戏中,玩家负责扮演这个角色在一个写实或虚构世界中活动。本文主要是阐述在RPG游戏中代表写实或虚构世界的复杂背景地图其对应二维数组的设计如何完成。该类型游戏中玩家负责扮演角色,通过一系列的指令完成游戏,这些指令与其背景地图密切相关,玩家是否能成功执行游戏指令取决于该地图对应的二维数组元素是否准确与地图元素一一对应,构建这样的一个二维数组成为关键。

1网格化地图及网格大小依据

游戏玩家要能准确执行指令,其背景环境中每一处元素一定要与某个数据关联,指令执行的判断依据便是这个数据,方法便是将地图网格化,绘制网格大小的依据是让网格能包含地图中最小背景元素即可,当为每个网格标注数据后,游戏玩家能够根据数据准确判断是哪个背景元素,以执行相应指令,如图1所示,地图网格化效果。

2获取二维数组算法描述及必要性

要得到图1中的与地图元素对应的二维数组,需要逐行逐列去确认地图中背景元素情况,然后给对应二维数组元素标注数字,代表该背景元素。如果背景地图元素简单,地图网格比较大,网格数量比较少,相应二维数组比较小,那么标注二维数组会非常容易,人工完成也不会很费力,但是,如果该背景地图元素复杂,地图网格小,网格数量多,对应二维数组将非常大,通过人工肉眼对照地图网格逐个去确认背景元素,完后又人工逐个去标注对应二维数组元素值,工作量会非常巨大!将该过程编制成一套程序显得尤为有意义。为了便于对问题进行描述,我们将上图中凡是能够通行的地方我们称之为通路,凡是不能通行的地方,我们称之为障碍物,那么上述构建二维数组的过程的具体做法是,将与地图网格对应的二维数组元素全部初始化为1(代表通路),为每个网格添加点击事件,通过点击事件与计算机进行通信,用户若点击某个网格表明该网格需要标注障碍物,将该网格对应的二维数组元素修改为0(代表障碍物)。

3获取二维数组具体实现步骤

1) 绘制一个网格

arrCreate函数最后的返回值arr至关重要,这个返回值就是我们这个项目的最终的目的,后面所有的动作算法都是为了将该二维数组与背景地图对应起来。调用arrCreate(rows,cols)函数后,网格用二维数组数据填充效果如图2所示,可见,此时二维数组的值与地图背景元素布置是没有对应的。

4) 给网格添加点击事件。

該步骤是整个程序的核心动作,也是实现程序化构建二维数组的关键点,给网格添加点击事件实现与计算机通信,要求计算机将用户点击的网格进行标注,本项目中对需要设置障碍标志的地方点击后标注0。

考虑到用户点击过程中,可能出现一些人为因素导致点击失误,比如点击网格错位的情况,我们在设计程序时让用户可以通过多次点击网格,实现设置障碍和取消障碍的随意切换,比如:第一次点击某个网格表示设置障碍,第二次点击时表示取消障碍,再次点击又是设置障碍,优化addClick函数如下:

调用优化后的addClick函数,反复点击网格,网格数据会在0和1之间切换,效果如下图4所示:

至此,程序化方法实现二维数组构建的方法基本完成。文章前面提到,本文仅用了0表示地图中障碍物,1表示地图中通路,当实际开发需要将地图中场景元素严格区分时,只需在每次点击时用不同的数据进行标注,并同步到二维数组中,计算机通过对二维数组元素值进行判断时,就如同玩家面对地图进行判断一样,有兴趣的读者可以触类旁通完成此项工作。

参考文献:

[1] 张志强.C++中指针的研究与应用[J].电脑知识与技术,2011(14).

[2] 谭丞.关于在C++中数组申请归还实现的研究与应用[J].福建电脑,2009(4).

【通联编辑:光文玲】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值