朱艳萍

摘要:该文主要阐述了前端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).

【通联编辑:光文玲】

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

  1. 如何在Windows 10的地图应用程序中获取离线地图

    If you know you're going to be using your PC in a location without an Internet connection, and you n ...

  2. php 嵌入手机百度地图,C# 程序中嵌入百度地图

    本例是对WinForm中使用百度地图的简要介绍.百度地图目前支持Android开发,IOS开发,Web开发,服务接口,具体可以参照'百度地图开放平台'. [动态加载百度地图]涉及到的知识点:WebBr ...

  3. 腾讯地图小程序服务器配置,腾讯地图实现微信小程序地图定位教程

    前言 目前腾讯位置服务提供路线规划.地图选点.地铁图.城市选择器插件四款插件产品,本篇博客主要针对地图选点功能进行实现. 开通腾讯位置服务 2.登录进入小程序后台,选择 "开发 - 开发工具 ...

  4. 二维计算机动画基础,二维计算机动画制作新技术相关探讨

    胡巧红 吴忆蓉 摘要:二维计算机动画制作新技术的应用是确保二维动画质量能得到有效提升,同时减少人力消耗.缩短制作时间的主要途径.本文将首先对二维计算机动画的发展进行介绍,然后论述了现有二维计算机动画制 ...

  5. 计算机二维动画实验原理,浅析计算机二维动画制作

    摘 要:最初的二维动画在制作上需要大量的人力还有较长的时间,相对的就是财力的消耗,在修改上也极度不便.计算机动画技术的发展提高了二维动画的制作效率,然而效率的提高却也让二维动画的质量变得不如以前.不过 ...

  6. 工程资料管理二维码制作教程分享

    适用场景 1.施工项目部资料管理 2.建筑监理公司档案管理 住建局经常开展市政工程施工.监理企业工程资料专项检查,施工单位.监理单位的纸质资料原件经常被翻乱,重新整理起来很费事,甚至会遗失. 可以将电 ...

  7. Tableau设置多边形地图、地理信息、背景地图源

    Tableau设置多边形地图.地理信息.背景地图源课程总结 Tableau设置多边形地图.地理信息.背景地图源课程视频 第7次课作业: 1.使用"蒙东地理数据"创建多边形地图,以注 ...

  8. 用VS.NET2003制作WEB应用程序的安装包

    用VS.NET2003制作WEB应用程序的安装包 --------------------------------------------------------------------------- ...

  9. tableau地图城市数据_Tableau 中的地图工作区

    Tableau 中的地图工作区由以下元素组成. "数据"窗格 "数据"窗格将位置数据组织为维度和度量.通常,位置字段(例如国家/地区.州/省/市/自治区和城市名 ...

最新文章

  1. LeetCode: 107. Binary Tree Level Order Traversal II
  2. (shell脚本编程)linux如何利用脚本执行多条命令以及linux如何执行定时任务
  3. 离散数学范式c语言实验报告,离散数学实验报告-利用真值表法求主析取范式及主合取范式的实现...
  4. linux下php扩展curl的安装
  5. 使用 graphviz 形象化有向图
  6. 大学期末考试综合实训试题一
  7. iOS开发Swift篇—(三)字符串和数据类型
  8. 最新 955 不加班公司名单
  9. 18.IDA-创建自己的sig(创建自己的标签)
  10. 双目摄像头 三维坐标 python_uNetXST:将多个车载摄像头转换为鸟瞰图语义分割图像...
  11. GridControl 设置自带选中复选框及设置该列列头名称
  12. 人工智能,大数据,云计算大杂烩
  13. linux oracle 运维_运维日记| Linux磁盘空间被莫名占用的问题
  14. 用Spring Cloud Alibaba开发微服务为什么越来越香?
  15. 实战Javascript:结合电商主界面实现轮播图和倒计时秒杀
  16. [sql面试经验] 经典sql面试题及答案第2期
  17. matlab导入vgg16,简单导入VGG16
  18. 简易数字电路交通灯设计
  19. First non-repeating character
  20. iOS9获取手机序列号serialNumber(UDID)

热门文章

  1. 我的世界正版服务器客户端,我的世界1.11.2
  2. Facebook联手纽约大学,要把核磁共振成像时间缩短10倍
  3. ONF完成业界首个基于SDN的无线传输PoC
  4. SQLDbx工具连接Oracle数据库
  5. linux添加键盘布局,Linux 定制键盘布局
  6. CAD2016 画直线时第二点为相对坐标(相对第一个点的坐标),非绝对坐标
  7. “App开发者需要更新此App以在此iOS版本上正常工作 ” 解决方法
  8. jacob根据word模板生成文
  9. Jungle Scout中国市场首发亚马逊FBA卖家百万美金案例中文版详解
  10. 苹果录屏功能没有声音_手机录屏没有声音如何处理?可以从这三个方面入手看看...