1.全部txt文件的方法。这个方法没有参数,返回一个全局变量ranks(int型),记录读到的txt文件数,作为关卡总数,并把读到的ranks个txt文件中的数据放到两个字典中,字典“arrstorage”的key为关卡序数,值为一个字符串数组,字符串数组代表了一个关卡需要的矩阵(稍后首先,进入游戏之后,我们在app.js中写了一个从服务器指定地址获取一个文件夹中的解释这个矩阵的作用);字典“tipsstorage”中key与字典“arrstorage”的key保持一致,值为一个字符串。并把这两个字典置于缓存池中。txt文件格式如下图:
0000000000000 0000200003000 0001abstract0 0000r0000d000 0000r0000d000 0000a0000r000 0000y0000e000 000000000s000 000000000s000 0000000000000 0000000000000 0000000000000 0000000000000 1 把...抽象出来;提出;抽出v 2 数组;一系列n 3 编址;寻址v |
两个字典内容示例如下:
Arrstorage = {1:[‘0000000000000’, ‘0000200003000’, ‘0001abstract0’, ‘0000r0000d000’, ‘0000r0000d000’, ‘0000a0000r000’, ‘0000y0000e000’, ‘000000000s000’,
‘000000000s000’, ‘0000000000000’, ‘0000000000000’, ‘0000000000000’, ‘0000000000000’,]}
Tipsstorage = {1: 1 把...抽象出来;提出;抽出v 2 数组;一系列n 3 编址;寻址v}
2.点击开始游戏,进入ranks(主要包含ranks.js和ranks.wxml),在wxml中我们画了13X13的input框。在ranks.js中,onLoad函数会读取缓存池中的关卡序数level(为int型),此时缓存池中没有数据,所以level==null,if(level == null){ level = 1},接下来以level作为key我们读取缓存池中的arrstorage对应的值赋予在ranks.js中定义的arr,读取缓存池中的tipsstorage对应的值赋予在ranks.js中定义的tips。定义一个函数,函数参数为arr,我们根据arr这一矩阵中的值,决定是否隐藏input框。具体逻辑如下:
if(arr[i][j] == 0) { 隐藏input框并不可选中且input框中无内容 } else if(arr[i][j] >= 1 && arr[i][j]<=9) { 隐藏input框并不可选中input框内容为arr[i][j] } else { 显示input框并可选中input框内容空 } |
3.定义一个inputarr,并用arr进行初始化,每次输入框输入一个字符,将inputarr中对应位置的字符改变为输入的字符,点击确认时,对比inputarr和arr两个数组,有不一样的就标红,全部一样则反馈过关(反馈还没写好)。
4.关于选关,点击选择关卡,就会进入choose(包括choose.js和choose.wxml),选择的关卡会置入缓存池中,点击上一关或者下一关,会改变缓存池中的关卡序数(-1或者+1),然后调用onload。以下为游戏主界面:
5.关于提示,提示是以level作为key从缓存池中拿到tipsstorage中对应的值,写入wxml的text框中,并将其设置为不可写。
杨老师给了我关于游戏引擎的指导以及建议,建议如下:
杨贵福:@Uncle Joker
你实现的是 引擎,不是硬编码。@超神的新垣结衣 认为你硬编码,有他的道理。细节如下。
1. 你们实现的是 游戏运行引擎。
2. 关卡生成是手工的。@超神的新垣结衣 希望你把关卡生成也用引擎实现。一般地,关卡生成的工具称为 关卡生成器,生成器并不需要作为程序的一部分发布。即使有的游戏会把生成器也一并发布了,但是游戏运行并不需要生成器。
3. 作为软件工程课程的一部分,关卡生成可以不必用代码实现,因为不是承诺的一部分。网上有不少可以用的,直接拿来用也可以。
4. 游戏运行引擎,希望能更注重用户友好。建议用墨刀设计,找几位同学测试,估计你会发现大家对操作的预期和隐喻,与你想的不同。方便写代码不宜作为理由,方便用户才是目的。