发表于: 2017-07-01 03:41:49
4 1001
今天完成的事:写了新出的页面,修电脑,整理任务四
明天要做的事:白天写写angular任务,晚上总结知识点
今天遇到的问题:甚少
感悟:人生天地间,忽如远行客。
前言:此任务没什么新的知识点,基本就是之前知识的整合,所以简单谈一下一些处理方法和这里涉及到又被我放弃了的状态机思想
第三集 室外
按惯例讲一下任务流程,我们先定义一下涉及到的几个页面:
定义控制游戏步骤的页面为1,定义点选杀人和投死的页面为2,定义游戏结果展示页面为3,定义法官查看进程页面为4。
此游戏过程想必大家已经反复看过很多次了,在此不在赘述,结合上述四个页面和游戏流程,我们可以得知其主要是页面1.2两个页面间的互通,3即是在符合某种条件后跳转,并将信息展示之用,4也是通过存在本地的数据来展示信息。
所以我们要攻破几个难关:
杀人(投票)如何控制:
此处即涉及到那个状态机的思想,状态机主要是这样的特征:
状态总数(state)是有限的。
任一时刻,只处在一种状态之中。
某种条件下,会从一种状态转变(transition)到另一种状态。
具体到此处,就是有三个状态,常态(未死),选中态(未死),变色态(杀/投),两个条件,点中方块和点击确定。然而我在做的时候,由于点中方块只能从常态和选中态相互转换,点击确定只能由选中态到变色态,而变色态和常态没有任何条件可以触发;又由于无法选中当前点击的方块,结果此方法作罢。
另一种方法是通过工厂函数对每一个方块建立对象,每个对象都有很多属性,类似死或者活,白天或黑夜等等,通过点击操作改变这些对象的属性,在其他页面读取属性然后体现在页面上,这就是最初级的面向对象的应用。顺便提一下,之前提到的如何获取当前点击到的方块,通过this方法this.index,即可获取当前点击的方块。
如何解决页面跳回来后定义失效的问题
假设我定义一变量,接着我对此变量进行修改并存入本地,当我在次进入这个页面提取此变量使用时,若提取操作在定义之前,那么定义变量的行为会使这个变量初始化;若在定义之后,则会接收不到变量定义而失效。这是一个鸡和蛋谁先存在的问题,我的做法是写一个判断,如果取得的变量有定义,那么返回这个变量;如果没有定义,那么重新定义此变量。
实际上这个做法很巧妙(嘿嘿,我聪明吧),但是很复杂。此次在回顾,我觉得应该在任务二的页面将所需变量和对象定义好,错入本地,这样就会解决定义的问题。
如何控制游戏四个步骤按照顺序执行
此处我定义了一个变量,每次执行一个步骤便加1,通过除以4的余数,来控制那四个步骤可不可以被点击
关于for循环
在我写的时候,由于for从i<=0开始循环出来的数组是从0开始的,首位索引值为0,而for从i<0开始循环的数组是从1开始的,首位索引值为0。而我在建立天数的数组的之后考虑到天数没有0,于是跟天数有关的for循环我全是用的i<0,这导致了后面索引值和其对应的字符对不上,非常凌乱,只能手动一个一个去前面查看并手动些索引值,导致代码特别混乱,此处和上面变量失效两个原因使我直到现在也无法优化我得任务4,此处要引起注意。
这个任务当时做十分艰难,现在回看还是比较简单,只是当时只窥其一斑而不得见全貌,无法整体考虑问题,导致思路受阻。整体起来前后贯穿的看这个任务就会非常清晰了。
评论