簡體   English   中英

使用2D數組的基本Java游戲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM