[英]Basic java Game Using 2D Array
http://www.flashbynight.com/drench/
我正在嘗試使用2D數組和從1到6的隨機數(而不是顏色)在Java中進行相似的處理,但是我無法理解如何組合相似編號的元組。 如何制作遍歷所有相同編號的連接元組的算法?
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();
}
}
一個比您簡單的方法是引入一個附加的數據結構(如列表),在其中存儲您已經訪問過的所有字段。 然后,當用戶插入新號碼時,請檢查列表中的每個字段,如果其鄰居的號碼相同。
因此,一開始您只會在列表中包含元素(1 | 1)。 然后,您檢查該字段的右側或底部(如果可能,則為左側或頂部)是否具有相同的編號。 如果是,請將字段添加到列表中。 檢查完當前元素的所有鄰居后,繼續列表中的下一個元素。 如果您到達列表的末尾,則此輪完成。
當列表中的元素數量等於所有元素的數量時,游戲結束。
這個過程並不太復雜,所以我認為您可以輕松地根據這些指令編寫算法:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.