到这时我才了解到一个游戏设计者脑中「指挥意图」清晰的重要性。你到底要做一个什么样的游戏,给玩家带来什么样的情感?只有一个大概的「我要爽」是不够的:究竟是控制巨大战舰缓慢机动将将擦过一块流星的那种屏气凝神的爽,还是控制战斗机高速穿梭在流星群中那种险象环生的爽?有时候自己也会犹豫。只有记住一开始你要提供的是怎么样的情感,并且在全程中反复回看,才不会偏离目标。
一个人制作尚且如此,当需要团队合作的时候,若不把一个确定的思路贯彻到底,怎么行呢?
第八周:2048 
啊,HTML 小游戏。在这个星期,2048 游戏突然流行了起来。于是我也跟风复刻了一个。看似简单的游戏,真的要做出来,对于新手来说还是挺费脑筋的。
第一个问题就是,这个网格怎么做呢?我采用的转化方法是使用一个二维的list。看起来就是:
[[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]]
这样一来,如果我要定位到第三(2)行第一(0)个格子,我就读取这个 list 中的 List[2][0] 即可。这样一来看起来颇为直观,又能解决问题。
接下来又有好几个问题需要一一解决。首先,当你按下一个方向键以后,所有行(列)的数字都会向着那个方向合并。这件事怎么办呢?
首先我单独写了一个 merge() 方法。只要传来一个 list,就逐个 iterate 并将合并后的值返回去。然后在主要 Class 中间的移动方法 move() 中规定,向哪个方向移动,就以那个方向的四个格子为排头建立四个 list,传去 merge() 那边再替换回来。这样一来这个游戏的核心规则就实现完成,剩下的边边角角多测试修缮即可。当测试成功的那一刻真是有一种爆棚的成就感——很少有解谜游戏的谜题能这样让你研究琢磨几个小时。
特别声明:以上文章内容仅代表作者本人观点,不代表当乐观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与当乐联系(copyright@downjoy.com)