编程新手 (Java) - 不知道如何修复类似于 Snake 的小型主机游戏的错误

New to Programming (Java) - dont know how to fix an error with a small Console Game simular to Snake

我刚开始学习 Java 并且正在做一个小项目,该项目应该在二维字符串数组字段中创建一个 gameField 边界用“#”标记。在这个字段中,我想生成一个标记为“>”的玩家。然后该玩家可以向左或向右转(例如 ∧ 用于向上看),然后可以选择向前移动 space。 我目前已经创建了 gameField,现在想将玩家生成到我在 class 播放器中创建了一个 spawnPlayer method/function 的二维字符串数组中。我现在想在 main 方法中添加/打开 method/function 。这是我收到错误消息但不知道该怎么办的地方。

public class KonsolenWanderer {




    public static void main(String[] args) {
        
        Field field1 = new Field();
        field1.createField();
        
        Player player1 = new Player();
        //Error is here!!!
        player1.spawnPlayer();
        
        
        

    }

}


public class Field {
    
    private String [][] fieldSize = new String [10][10]; 
        
    
    public void createField() {
        
        for(int i = 0; i < fieldSize.length; i++) {
            
            for(int j = 0; j < fieldSize[i].length; j++) {
                
                //Creating Field Border
                if(i == 0 || i == 9 || j == 0 || j == 9) {
                    fieldSize[i][j] = "#";  
                }
                else {
                    fieldSize[i][j] = " ";
                }
                
                System.out.print(fieldSize[i][j]);
            }
            
            System.out.println();
        }
        
    }
    

    public String[][] getFieldSize() {
        return fieldSize;
    }

    public void setFieldSize(String[][] fieldSize) {
        this.fieldSize = fieldSize;
    }


    
        
    
}



public class Player {
    
    private static int xPosition;
    private static int yPosition;
    private String up = "∧";
    private String down = "∨";
    private String left = "<";
    private String right = ">";
    private String currentDirection;
    
    Player() {
        xPosition = 4;
        yPosition = 4;
    }
    
    public void spawnPlayer(String[][]fieldSize) {
        
        fieldSize[xPosition][yPosition] = ">";
        
    }
    
    
    public static void moveForward() {
        
        
    }
    
    public static void turnPlayerLeft() {
        
        
    }
    
    public static void turnPlayerRight() {
        
        
    }

}

您需要在字段对象中设置位置或从字段中公开字段大小 class。

  public class KonsolenWanderer {

    public static void main(String[] args) {

        Field field = new Field();
        field.createField();

        Player player1 = new Player();
        //Error is here!!!
        player1.spawnPlayer(new String[8][8], field);

        field.showField();

    }
}

class Field {

    private String [][] fieldSize = new String [10][10];

    public void createField() {

        for(int i = 0; i < fieldSize.length; i++) {

            for(int j = 0; j < fieldSize[i].length; j++) {

                //Creating Field Border
                if(i == 0 || i == 9 || j == 0 || j == 9) {
                    fieldSize[i][j] = "#";
                }
                else {
                    fieldSize[i][j] = " ";
                }

                System.out.print(fieldSize[i][j]);
            }

            System.out.println();
        }

    }
    public void showField() {

        for(int i = 0; i < fieldSize.length; i++) {
            for(int j = 0; j < fieldSize[i].length; j++) {
                System.out.print(fieldSize[i][j]);
            }
            System.out.println();
        }

    }


    public String[][] getFieldSize() {
        return fieldSize;
    }

    public void setFieldSize(String[][] fieldSize) {
        this.fieldSize = fieldSize;
    }

    public void setPlayerPosition(int i, int j) {
        i++;
        j++;
        fieldSize[i][j] = ">";
    }
}

class Player {

    private static int xPosition;
    private static int yPosition;
    private String up = "∧";
    private String down = "∨";
    private String left = "<";
    private String right = ">";
    private String currentDirection;

    Player() {
        xPosition = 4;
        yPosition = 4;
    }

    public void spawnPlayer(String[][] fieldSize, Field field) {
        for(int i = 0; i < fieldSize.length; i++) {
            if (i == fieldSize.length -1){
                for(int j = 0; j < fieldSize[i].length; j++) {
                    if (j == fieldSize.length - 1 )
                        field.setPlayerPosition(i, j);
                }
            }
        }
    }


    public static void moveForward() {


    }

    public static void turnPlayerLeft() {


    }

    public static void turnPlayerRight() {


    }

}