http://www.flashbynight.com/drench/
我试图在java中使用2D数组和1到6的随机数而不是颜色来制作类似的东西,但我无法理解如何组合相似的编号元组。如何制作遍历所有相同编号的连接元组的算法?
import java.util.*;
class drain
{
static int g[][]=new int[15][15];
int prev;
void newgame()
{
}
void game()
{
Scanner sc=new Scanner(System.in);
int chk;
int in,i,j;
for(i=0;i<15;i++)
{
for(j=0;j<15;j++)
{
System.out.print(g[i][j]+" ");
}
System.out.println();
}
do
{
System.out.println("Enter color: \n 1:Red \n 2:Blue \n 3:Yellow \n 4: Green \n 5:Purple \n 6:Black ");
in=sc.nextInt();
chk=Ref(in);
}
while(chk!=1);
}
int Ref(int a)
{
prev=g[0][0];
int flag=1,i=0,j=0,c=0;
for(i=0;i<15;i++)
{
for(j=0;j<15;j++)
{
if(g[i][j]==prev)
{
g[i][j]=a;
}
else if(i>0 && j==0)
{
flag=0;
break;
}
}
if(flag==0)
{
break;
}
}
flag=1;
for(i=0;i<15;i++)
{
for(j=0;j<15;j++)
{
if(g[j][i]==prev)
{
g[j][1]=a;
c++;
}
else if(j>0 && i==0)
{
flag=0;
break;
}
}
if(flag==0)
{
break;
}
}
for(i=0;i<15;i++)
{
for(j=0;j<15;j++)
{
System.out.print(g[i][j]+" ");
}
System.out.println();
}
if(c>=224)
{
return 1;
}
else
{
return 0;
}
}
public void main()
{
int i,j;
for(i=0;i<15;i++)
{
for(j=0;j<15;j++)
{
g[i][j]=(int)(1+(Math.random()*6));
}
}
drain a=new drain();
a.game();
}
}
答案 0 :(得分:0)
比较简单的方法是引入一个额外的数据结构(如列表),您可以在其中存储已访问过的所有字段。然后,当用户插入新号码时,如果其邻居具有相同的号码,请检查列表中的每个字段。
所以,首先你的列表中只有元素(1 | 1)。然后检查它的右侧或底部(或者如果可能的话,左侧或顶部)是否具有相同的数字。如果是,请将该字段添加到列表中。检查完当前元素的所有邻居后,继续执行列表中的下一个元素。如果到达列表末尾,则完成此操作。
当列表中的元素数等于所有元素的数量时,游戏结束。
这个程序并不复杂,所以我认为您可以自己轻松地从这些指令中编写算法: - )