使用2D数组的基本java游戏

时间:2017-03-04 09:06:50

标签: java arrays

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();
    }
}

1 个答案:

答案 0 :(得分:0)

比较简单的方法是引入一个额外的数据结构(如列表),您可以在其中存储已访问过的所有字段。然后,当用户插入新号码时,如果其邻居具有相同的号码,请检查列表中的每个字段。

所以,首先你的列表中只有元素(1 | 1)。然后检查它的右侧或底部(或者如果可能的话,左侧或顶部)是否具有相同的数字。如果是,请将该字段添加到列表中。检查完当前元素的所有邻居后,继续执行列表中的下一个元素。如果到达列表末尾,则完成此操作。

当列表中的元素数等于所有元素的数量时,游戏结束。

这个程序并不复杂,所以我认为您可以自己轻松地从这些指令中编写算法: - )