Java代码实现消消乐游戏中的消除功能
有n行m列矩阵,每个位置的元素取值(1~9),同一行或者同一列中如果有三个以及三个以上的数字相同时,将改相同的数字全部消除(即改为0)
**注意:**同一个数字可能同时在某一行和某一列被消除。
解题思路:先将行中满足条件的数字消除(在新数组中消除,不改变原数组的数据。),然后将列中满足条件的数字消除(同样是在新数组中消除),最后在合并经过行消除和列消除得到的两个数组。
/**消除行中满足条件的数字*/
public static int[][] TD(int[][] sourceArray) {//数组行的长度;int hang = sourceArray.length;//数组列的长度;int lie = sourceArray[0].length;//定义一个新数组;为了不改变原数组的数据;int[][] arr = new int[hang][lie];for (int i = 0; i < hang; i++) {for (int j = 0; j < lie; j++) {arr[i][j] = sourceArray[i][j];}}//行消除:某一行中有三个及三个以上相邻,相同的数字,就将满足该条件的数字修改为0。for (int i = 0; i < hang; i++) {//注意:索引不要越界。for (int j = 1; j < lie-1; j++) {if (arr[i][j-1]==arr[i][j]&&arr[i][j+1]==arr[i][j]) {arr[i][j-1]=0;arr[i][j+1]=0;int count = 2;while((j+count<lie)&&arr[i][j+count]==arr[i][j]) {arr[i][j+count]=0;count++;}arr[i][j]=0;}}}return arr;}
/**消除列中满足条件的数字*/
public static int[][] MD(int[][] sourceArray) {int hang = sourceArray.length;int lie = sourceArray[0].length;int[][] arr = new int[hang][lie];for (int i = 0; i < hang; i++) {for (int j = 0; j < lie; j++) {arr[i][j] = sourceArray[i][j];}}for (int j = 0; j < lie; j++) {for (int i = 1; i < hang-1; i++) {if (arr[i-1][j]==arr[i][j]&&arr[i+1][j]==arr[i][j]) {arr[i-1][j]=0;arr[i+1][j]=0;int count = 2;while(i+count<hang&&arr[i][j]==arr[i+count][j]) {arr[i+count][j]=0;count++;}arr[i][j]=0;}}}return arr;}
/**将上面两次消除得到的两个数组合并*/
public static int[][] copyTDAndMD(int[][] sourceArray,int[][] td,int[][] md) {for (int i = 0; i < td.length; i++) {for (int j = 0; j < md[0].length; j++) {//如果两个数组(行消除和列消除得到的数组)中同一位置的元素相等,就将该元素添加到原数组中,不相等就将0添加到原数组中。sourceArray[i][j] = (td[i][j]==md[i][j])?td[i][j]:0;}}return sourceArray;}
希望对你有所帮助。
“--------------------------------------------------------------”
如有不足,还望指正。
Java代码实现消消乐游戏中的消除功能相关推荐
- 消消乐游戏中,一种巧妙的消除条件判别算法
目录 前言 所要解决的问题 问题分析 解决办法 总结 前言 本文介绍了一种消消乐游戏的核心规则算法,我已经填了N个标签戳,相信你应该不会因为王者荣耀而搜到这篇文章.我们这里只介绍消消乐中关于三个相同颜 ...
- 成语消消乐java代码_成语消消看-4399成语消消看-成语消消看答案大全
成语消消看65 文过饰非.无疾而终.大浪淘沙.因地制宜.飞龙在天.人山人海 微信成语消消看65关答案 惺惺相惜,飞龙在天,大浪淘沙,分崩离析,文过饰非 因地制宜,无疾而终,婀娜妩媚,人山人海,极乐世界 ...
- java代码转置sql数据_SQL Server中的数据科学:数据分析和转换–使用SQL透视和转置
java代码转置sql数据 In data science, understanding and preparing data is critical, such as the use of the ...
- java 代码智能提示,如何在Eclipse中设置Java、JavaScript、HTML智能代码提示
使用eclipse自带的插件,无需另外安装插件,具体步骤如下 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Act ...
- avg是java关键字_浅谈AVG游戏中的脚本
最近因为笔记本数据丢失,翻网盘的时候找到了大学时候写的基于XNA的2D游戏引擎的代码,和为这个引擎写的使用示例. 其中比较大点的示例就是一个ACT游戏,一个AVG游戏和一个A*寻径算法. 因为当时的A ...
- 【数据结构与算法】->算法-> A* 搜索算法->如何实现游戏中的寻路功能?
A* 搜索算法 Ⅰ 前言 Ⅱ 算法解析 Ⅲ 如何实现游戏寻路问题 Ⅳ 总结 Ⅰ 前言 你可能玩过魔兽世界,仙剑奇侠和英雄联盟这类 MMRPG 游戏,在这些游戏中,有一个非常重要的功能,就是人物角色自动 ...
- 如何在游戏中实现穿墙功能
在游戏中,很多地方都有障碍物,那么怎么才能越过障碍物快速进行行走呢? 我们可以逆向分析它的障碍物判断函数,然后修改他的返回值或者直接jmp跳过检测就可以实现障碍物的穿越了. 下面就来说说具体的思路: ...
- 贪吃蛇游戏java代码_Java实现贪吃蛇游戏
最近JAVA和JSwing上手练习了一下贪吃蛇,供大家参考,具体内容如下 欢迎交流和加入新的内容 用到了JSwing,下面是一些具体的思路 实现 * 蛇: 采用单链表记录首尾,整个蛇被分为lattic ...
- 用简单Java代码尝试在控制台写游戏(附源码)
尝试写了一个在Java控制台运行的代码游戏,由于写这个的时候,博主还没学到可视化界面,也没有学到面向对象,甚至没有集合,运用的全是之前C语言的语法,因此应该很容易看懂吧.末尾附上源码. 以下是效果展示 ...
最新文章
- 台湾大学林教授libsvm在matlab的安装
- 第1章、蓄势待发准备篇
- 变频器服务器电路板维修,变频器电路板维修技巧
- Web框架——Flask系列之abort函数与自定义异常处理(十三)
- Bootstrap 幻灯片效果
- 状态栏和navigationbar 关联上,结构体总是通过被复制的方式在代码中传递,因此请不要使用引用计数。...
- cocos2dx-lua 笔记 方向控制 v2
- CentOS 7.6网络配置
- 图像识别的工作原理是什么?商业上如何使用它?
- 【金九银十】Java微服务面试题,看到你就是赚到
- 基于OPENCV的OCR身份证号识别技术
- 江苏大学毕业论文答辩PPT模板
- php源码安装图文教程_安装PHP的教程及说明(图文详解)
- 阅读软件怎么添加书源_「看书+听书」两款神器软件,我已深深的为之折服了...
- c语言学习周报(2020.11.21-11.28)
- php 获取手机设备的ID,获取苹果设备的UDID
- 公众号怎么设置滑动文字_这种微信公众号里面滑动是怎么操作的?
- CMS的全称是什么?全名是?
- 公司想注册电子邮箱账号,需要注意些什么?
- 做好抖音的核心就这两点