java吧 关注:1,293,014贴子:12,827,025
  • 2回复贴,共1

发一发老早之前用手机写的控制台消消乐

只看楼主收藏回复



IP属地:甘肃1楼2018-06-23 10:50回复
    原本以为很简单,写进来才发现细节很繁复。
    初始化游戏不能出现可以不操作而直接消除的棋子。
    最后想到的解决方案是生成的同时向前向上匹配,
    如果能消除就重新生成,不能就下一格。
    移动格子后查找可以消除的格子。
    起初想的关注点就是移动后的两个格子,一调试发现每推进一格,都需要关注它的垂直的两个方向。这一块代码很吓人,写了n层while循环……
    消除后空格上移。
    这块又有一个细节,当空格上面的格子掉落后,
    需要重新匹配地图中可以消除的格子,消除完又是一波掉落。所以这块需要设置一个无限次数循环,结束条件为不再有新的可消除格子产生。
    消除停止后,再次填充为空的格子。
    这点简单,把初始化的代码再拉过来跑一跑就ok。
    想到但懒得实现的一个小细节——判断死局。
    当前地图没有可通过移动消除的格子为死局,需要重新初始化游戏。关键点在判定上,想到的方案是for循环遍历所有格子。以每个格子为关注点,分别向上向下向左向右移位(代码中有交换方法,略加改造),如果能交换成功,直接返回活局。如果遍历完成还没有交换成功,返回残局。然后初始游戏。这个功能下次想写安卓时再实现吧,目前调试发现死局并不容易出现。
    bug应该不少,但是关键代码好了,这个小游戏暂告一段落。
    补充一下:代码编写调试全部在手机的aide软件中完成。耗时一天。下面上代码。


    IP属地:甘肃2楼2018-06-24 19:56
    回复
      2025-12-30 08:53:38
      广告
      不感兴趣
      开通SVIP免广告
      源码onezero.top/essay/134


      IP属地:甘肃3楼2018-06-24 19:57
      回复