连连看-二维数组实现简单的生成随机数,消除两个数相同
来源:互联网 发布:课堂直播软件 编辑:程序博客网 时间:2024/05/18 06:23
import java.util.Random;
import java.util.Scanner;
class Lianliankan
{
public static void main(String[] args)
{
//手动输入几乘几格式
Scanner sc=new Scanner(System.in);
int num1=sc.nextInt();
//完成初始化的操作 - 一定要注意要成对出现
Random r=new Random();
int count=0;
int temp=0;// 变量的申明
int x=0; // 代表第一维
int y=0;//代表第二维
int x2=0;// 代表第一维
int y2=0;//代表第二维
while(count<lian.length*lian[0].length/2)
{
temp=r.nextInt(9)+1;
x=r.nextInt(lian.length);// 随机一个第一维的数据
y=r.nextInt(lian[0].length);//随机一个第二维的数据
x2=r.nextInt(lian.length);
y2=r.nextInt(lian[0].length);
/*
1. 首先判断随机出来的下标是否被赋值过,如果被赋值过则里面的值一定不是0
2. 如果没有被赋值过则直接将我们随机的temp的数据赋值进去
3. 如果被赋值过,则通过一个while循环再次随机一组下标出来,直到随机的下标没有被赋值过则结束循环
4. 将随机的temp数据赋值给新随机的下标
*/
if(lian[x][y]==0)
{
lian[x][y]=temp;
}else
{
while(lian[x][y]!=0)
{
x=r.nextInt(lian.length);
y=r.nextInt(lian[0].length);
}
lian[x][y]=temp;
}
if(lian[x2][y2]==0)
{
lian[x2][y2]=temp;
}else
{
while(lian[x2][y2]!=0)
{
x2=r.nextInt(lian.length);
y2=r.nextInt(lian[0].length);
}
lian[x2][y2]=temp;
}
count++;
}
for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
{
System.out.print(lian[i][j]+" ");
}
System.out.println();
}
System.out.println();
/*
//手动设置参数
int[][] lian={{1,1,2,2,3,3},{3,3,4,4,5,5},{5,5,6,6,7,7},{7,7,8,8,9,9},{7,7,8,8,9,9},{7,7,8,8,9,7}};
for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
{
System.out.print(lian[i][j]+" ");
}
System.out.println();
}
System.out.println();
Random r=new Random();
int time=100;
int x=-1;
int y=-1;
int z=-1;
for(int i=0;i<lian.length;i++)
{
x=-1;y=-1;z=-1;time=100;
for(int j=0;j<lian[i].length;j++)
{
while(time>0)
{
x=r.nextInt(lian[i].length);
y=r.nextInt(lian[i].length);
z=lian[x][y];
lian[x][y]=lian[y][x];
lian[y][x]=z;
time--;
}
}
}
for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
{
System.out.print(lian[i][j]+" ");
}
System.out.println();
}
System.out.println();
*/
int f=1; //用来跳出循环
//消除
for(int x1=0;x1<lian.length;x1++)
{
for(int y1=0;y1<lian[x1].length;y1++)
{
f=1;
for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
{
if((x1!=i || y1!=j) && lian[x1][y1]==lian[i][j] &&lian[x1][y1]!=0 )
{
lian[x1][y1]=0;
lian[i][j]=0;
f=0;
break;
}
}
if(f==0)
{
break;
}
}
}
}
for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
{
System.out.print(lian[i][j]+" ");
}
System.out.println();
}
}
}
import java.util.Scanner;
class Lianliankan
{
public static void main(String[] args)
{
//手动输入几乘几格式
Scanner sc=new Scanner(System.in);
int num1=sc.nextInt();
int num2=sc.nextInt();
//创建一个二维数组
//完成初始化的操作 - 一定要注意要成对出现
Random r=new Random();
int count=0;
int temp=0;// 变量的申明
int x=0; // 代表第一维
int y=0;//代表第二维
int x2=0;// 代表第一维
int y2=0;//代表第二维
while(count<lian.length*lian[0].length/2)
{
temp=r.nextInt(9)+1;
x=r.nextInt(lian.length);// 随机一个第一维的数据
y=r.nextInt(lian[0].length);//随机一个第二维的数据
x2=r.nextInt(lian.length);
y2=r.nextInt(lian[0].length);
/*
1. 首先判断随机出来的下标是否被赋值过,如果被赋值过则里面的值一定不是0
2. 如果没有被赋值过则直接将我们随机的temp的数据赋值进去
3. 如果被赋值过,则通过一个while循环再次随机一组下标出来,直到随机的下标没有被赋值过则结束循环
4. 将随机的temp数据赋值给新随机的下标
*/
if(lian[x][y]==0)
{
lian[x][y]=temp;
}else
{
while(lian[x][y]!=0)
{
x=r.nextInt(lian.length);
y=r.nextInt(lian[0].length);
}
lian[x][y]=temp;
}
if(lian[x2][y2]==0)
{
lian[x2][y2]=temp;
}else
{
while(lian[x2][y2]!=0)
{
x2=r.nextInt(lian.length);
y2=r.nextInt(lian[0].length);
}
lian[x2][y2]=temp;
}
count++;
}
for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
{
System.out.print(lian[i][j]+" ");
}
System.out.println();
}
System.out.println();
/*
//手动设置参数
int[][] lian={{1,1,2,2,3,3},{3,3,4,4,5,5},{5,5,6,6,7,7},{7,7,8,8,9,9},{7,7,8,8,9,9},{7,7,8,8,9,7}};
for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
{
System.out.print(lian[i][j]+" ");
}
System.out.println();
}
System.out.println();
Random r=new Random();
int time=100;
int x=-1;
int y=-1;
int z=-1;
for(int i=0;i<lian.length;i++)
{
x=-1;y=-1;z=-1;time=100;
for(int j=0;j<lian[i].length;j++)
{
while(time>0)
{
x=r.nextInt(lian[i].length);
y=r.nextInt(lian[i].length);
z=lian[x][y];
lian[x][y]=lian[y][x];
lian[y][x]=z;
time--;
}
}
}
for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
{
System.out.print(lian[i][j]+" ");
}
System.out.println();
}
System.out.println();
*/
int f=1; //用来跳出循环
//消除
for(int x1=0;x1<lian.length;x1++)
{
for(int y1=0;y1<lian[x1].length;y1++)
{
f=1;
for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
{
if((x1!=i || y1!=j) && lian[x1][y1]==lian[i][j] &&lian[x1][y1]!=0 )
{
lian[x1][y1]=0;
lian[i][j]=0;
f=0;
break;
}
}
if(f==0)
{
break;
}
}
}
}
for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
{
System.out.print(lian[i][j]+" ");
}
System.out.println();
}
}
}
阅读全文
0 0
- 连连看-二维数组实现简单的生成随机数,消除两个数相同
- 连连看消除算法的C++代码实现
- 连连看消除游戏的拉线判断
- 连连看程序判断消除的算法
- 连连看消除算法
- 连连看的实现
- 连连看算法(判断两个图是否可消除)
- 二维数组---两个数和的最大值
- 用Objective-C 实现的简单连连看
- 用java实现简单的连连看小游戏~~
- Swing实现最简单连连看的思路和源码
- 连连看可以消除算法
- 生成互不相同的随机数
- 生成不相同的随机数
- 连连看 代码的实现
- 连连看游戏的实现
- 【游戏算法之连连看】我最开始想到的连连看的 消除算法。。。。。
- 【游戏算法之连连看】我最开始想到的连连看的 消除算法。。。。。【补充】
- android dwg图纸解决方案
- 【Java TCP/IP Socket】构建和解析自定义协议消息(含代码)
- VirtualBox虚拟机网络设置
- mysql中的<=>
- 解决Ubuntu无法上网的问题
- 连连看-二维数组实现简单的生成随机数,消除两个数相同
- 复杂链表的复制
- 时间类型转换
- Java 循环结构
- NYOJ 15-括号匹配(二)(经典区间DP)
- Oracle中TO_DATE TO_CHAR格式
- CDH5.X完全卸载步骤
- MOOC清华《程序设计基础》第6章:三种递推方法求兔子数列问题(斐波那契数列)
- 关于4. 3 DESIGN: SPAM 审核问题的解决方法