山寨腾讯“爱消除”游戏之自动提示特效
2013-11-19 00:01
169 查看
【广而告之】山寨腾讯“爱消除”游戏已经正式入驻GitHub,项目地址是:https://github.com/3125788/CrazyLink
欢迎广大寨友一起来完善这个游戏。
所谓自动提示,就是识别到玩家一段时间没有操作后,自动为玩家提示一个可以消除的位置。
显示效果如下:
我们增加了渲染类drawAutoTip来处理这个特效的渲染,具体实现请参考源代码。
自动消除算法:
1、循环检测每一个格子
2、对该格子执行交换操作
3、检测交换后的状态是否满足消除条件,如果满足,代表找到一个可以自动提示的位置,标志自动提示的格子(drawAutoTip对标识为EFT_AUTOTIP的格子进行渲染)
4、否则,对该格子再次执行交换操作,恢复原来的状态
我美工的水平太次,只能用闪星来表示,欢迎网友贡献更酷的自动提示特效,提交到GitHub项目上。
注意:自动提示特效的图片保存在\res\drawable-nodpi\autotip.png下,该图片是512*128分辨率,共保存了四幅图片,要求背景是透明的。
欢迎广大寨友一起来完善这个游戏。
所谓自动提示,就是识别到玩家一段时间没有操作后,自动为玩家提示一个可以消除的位置。
显示效果如下:
我们增加了渲染类drawAutoTip来处理这个特效的渲染,具体实现请参考源代码。
自动消除算法:
1、循环检测每一个格子
2、对该格子执行交换操作
3、检测交换后的状态是否满足消除条件,如果满足,代表找到一个可以自动提示的位置,标志自动提示的格子(drawAutoTip对标识为EFT_AUTOTIP的格子进行渲染)
4、否则,对该格子再次执行交换操作,恢复原来的状态
static void exchange(int pic[][], int col1, int row1, int col2, int row2) { //对交换的坐标进行有效性校验,如果是无效的,则不进行交换 if(col1 < 0 || col1 > 6) return; if(col2 < 0 || col2 > 6) return; if(row1 < 0 || row1 > 6) return; if(row2 < 0 || row2 > 6) return; int picId = pic[col1][row1]; pic[col1][row1] = pic[col2][row2]; pic[col2][row2] = picId; } //自动提示识别算法 //只需要交换一步就能成行的,认为满足自动提示条件 boolean autoTipMethod(int col, int row) { for(int i = 0; i < (int)CrazyLinkConstent.GRID_NUM; i++) { for(int j = 0; j < (int)CrazyLinkConstent.GRID_NUM; j++) { exchange(mPicBak, i, j, i-1, j); if(isInLine(mPicBak, i, j)) return true; exchange(mPicBak, i-1, j, i, j); exchange(mPicBak, i, j, i+1, j); if(isInLine(mPicBak, i, j)) return true; exchange(mPicBak, i+1, j, i, j); exchange(mPicBak, i, j, i, j-1); if(isInLine(mPicBak, i, j)) return true; exchange(mPicBak, i, j-1, i, j); exchange(mPicBak, i, j, i, j+1); if(isInLine(mPicBak, i, j)) return true; exchange(mPicBak, i, j+1, i, j); } } return false; } //自动提示 void autoTip() { for(int i = 0; i < (int)CrazyLinkConstent.GRID_NUM; i++) { for(int j = 0; j < (int)CrazyLinkConstent.GRID_NUM; j++) { mPicBak[i][j] = mPic[i][j]; } } for(int i = 1; i < (int)CrazyLinkConstent.GRID_NUM - 1; i++) { for(int j = 1; j < (int)CrazyLinkConstent.GRID_NUM - 1; j++) { if(autoTipMethod(i, j)) { markAutoTip(); return; } } } } //将可以自动提示的动物标识出来 static void markAutoTip() { for(int i = 0; i < (int)CrazyLinkConstent.GRID_NUM; i++) { for(int j = 0; j < (int)CrazyLinkConstent.GRID_NUM; j++) { if (isInLine(mPicBak, i, j)) { mStatus[i][j] = EFT_AUTOTIP; } } } } //将自动提示标识清除 static void clearAutoTip() { for(int i = 0; i < (int)CrazyLinkConstent.GRID_NUM; i++) { for(int j = 0; j < (int)CrazyLinkConstent.GRID_NUM; j++) { if (EFT_AUTOTIP == mStatus[i][j]) { mStatus[i][j] = EFT_NORMAL; } } } mIsAutoTip = false; mAutoTipTimer = 0; }
我美工的水平太次,只能用闪星来表示,欢迎网友贡献更酷的自动提示特效,提交到GitHub项目上。
注意:自动提示特效的图片保存在\res\drawable-nodpi\autotip.png下,该图片是512*128分辨率,共保存了四幅图片,要求背景是透明的。
相关文章推荐
- 山寨腾讯“爱消除”游戏之奖励特效
- 山寨腾讯“爱消除”游戏之失去生命特效
- 山寨腾讯“爱消除”游戏之交换特效优化
- 山寨腾讯“爱消除”游戏之菜单特效
- 山寨腾讯“爱消除”游戏之生命特效
- 山寨腾讯“爱消除”游戏之屏幕自动适配
- 山寨腾讯“爱消除”游戏之获得生命特效
- 山寨腾讯“爱消除”游戏之菜单特效
- Android 山寨腾讯“爱消除”游戏源码 视频教程
- 山寨腾讯“爱消除”游戏7日教程--DAY5
- 山寨腾讯“爱消除”游戏之声音效果
- 山寨腾讯“爱消除”游戏7日教程--DAY4
- 山寨腾讯“爱消除”游戏之框架总结
- 山寨腾讯“爱消除”游戏之屏幕拾取技术
- 山寨腾讯“爱消除”游戏7日教程
- 山寨腾讯“爱消除”游戏7日教程--DAY6
- 山寨腾讯的Tab切换特效添加了自动切换功能
- 山寨腾讯“爱消除”游戏7日教程--DAY2
- 山寨腾讯“爱消除”游戏7日教程--DAY3
- 山寨腾讯“爱消除”游戏之屏幕拾取技术