簡體   English   中英

找不到我的Java游戲的解決方案

[英]can't find solution for my Java Game

為了上學,我必須做一個已經存在的游戲。 這是游戲的鏈接游戲鏈接

簡短說明:您收到的每個級別(在屏幕右側)都有一組箭頭,您可以將它們放置在屏幕上,當您按下“開始”按鈕時,母牛開始移動。 當他在箭頭上移動時,他將沿該箭頭的方向改變方向。 因此,您必須使用箭頭將母牛引導到他的最終目的地(獎杯),而不要碰到任何障礙物(例如牆壁或樹木...)。

我們必須實現Model-View-Presenter設計模式。 所以我從我的模型開始,因為那是我的游戲邏輯。

我的問題:在我的等級示例下,每個等級都應使用簡單的.txt文件讀取:

26,6
xxxxxxxxxxxxxxxxxxxxxxxxxx
xGRGGBGxGGRGGGGGGGGGGBGGTx
xGGGGRGGGGFGxGGGGGGGGGGGGx
xGFGGLGGGGGGGLGGGGGGGGGGGG
xGGGGSGGGxGGGGGGxGGGGGGGGx
xxxxxxxxxxxxxxxxxxxxxxxxxx

x=obstacle 
G=grass
T=trophy
S= Start position of the cow
L= Fixed left arrow  
R= Fixed right arrow
F= fixed front arrow
B= fixed back arrow

我讀取了文件,並使用case語句將每個字符放在2D數組的一行中(每個字符代表一個對象)。

我的問題是:您有2組箭頭:FixedArrow(它已經在字段上,您不能更改其位置)和VariableArrow(屏幕右邊的箭頭,用戶可以將它們放置在字段,如果該字段是免費的,或者如果該字段位於Grass對象上,則換句話說,但是我該怎么做?如何創建一個單獨的屏幕,在其中可以放置用戶可以放置在該字段上的箭頭?

我知道我的解釋含糊不清,所以我希望你們打開我上面發布的鏈接並打1級,這樣您才能更好地理解我的意思。

我將在下面發布我的代碼和類圖的一部分。 path =是我在上文中解釋的.txt文件的路徑。

我的班級圖

public class Board {
private Tile[][] tiles;

    public Board(Path path) {

        try {

            int yRow = 0;
            Scanner scanner = new Scanner(path);
            String[] split = scanner.nextLine().split(",");
            tiles = new Tile[Integer.parseInt(split[1])][Integer.parseInt(split[0])];
            while (scanner.hasNext()) {
                String line = scanner.nextLine();

                for (int xRow = 0; xRow < line.length(); xRow++) {
                    char character = line.charAt(xRow);
                    switch (character) {
                        case 'x':
                            tiles[yRow][xRow] = new Tile(new Obstacle());
                            break;
                        case 'G':
                            tiles[yRow][xRow] = new Tile(new Grass());
                            break;
                        case 'S':
                            tiles[yRow][xRow] = new Tile(new Grass());
                            //cow.setStartPosition(xRow,yRow);
                            break;
                        case 'L':
                            tiles[yRow][xRow] = new Tile(new FixedArrow(Direction.LEFT));
                            break;
                        case 'R':
                            tiles[yRow][xRow] = new Tile(new FixedArrow(Direction.RIGHT));
                            break;
                        case 'F':
                            tiles[yRow][xRow] = new Tile(new FixedArrow(Direction.FRONT));
                            break;
                        case 'B':
                            tiles[yRow][xRow] = new Tile(new FixedArrow(Direction.BACK));
                            break;
                        case 'T':
                            tiles[yRow][xRow] = new Tile(new Trophy());
                            break;
                        //How should i read a set of arrows in without placing them in the game field but on the right side of the screen
                    }


                }

                ++yRow;
            }

        } catch (IOException e) {
            e.getMessage();
        }
    }

}

您只需要使用輸入掃描儀或其他工具設置可變箭頭。 可變箭頭應位於二維數組中。 您需要將輸入中的可變箭頭坐標與數組中這些點處的符號進行比較,並檢查是否可以在其中放置新箭頭或是否不允許使用。 如果允許,則用新的箭頭符號替換該符號,或者重新使用固定的箭頭符號。

希望我能正確理解您的問題,這對您有所幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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