用Othello Game Board初始化Java

时间:2016-09-18 03:52:29

标签: java compiler-errors initialization

我正在尝试用Java初始化奥赛罗的游戏板。它应该提示用户输入两个玩家名称,将玩家1设置为暗片,将玩家2设置为亮片,但是当我尝试编译时,我会收到以下错误:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: core.Disc.setColor

at core.Board.initObjects(Board.java:44) "board[3][3].setColor(Constants.LIGHT);"

at core.Board.<init>(Board.java:24) "initObjects();"

at core.Game.initObjects(Game.java:30) "board = new Board();"

at core.Game.<init>(Game.java:25) "initObjects();"

at othello.Othello.main(Othello.java:17) "Game game = new Game();"

任何人都可以提供一些有关如何做的见解?我不确定是什么问题

抱歉,如果格式不好。不知道如何格式化多个Java类。

Board.java

package core;

// board class
public class Board {

    // member variable board (always make access modifier 'private'        
    // Disc = data type (class)
    private Disc[][] board;

    // constructor (same name as class)
    public Board(){

        // method call for initObjects
        initObjects();
    }

    private void initObjects(){

        // declaring size of array // new is used to allocate memory
        board = new Disc[Constants.ROWS][Constants.COLUMNS];

        // looping and initializing board
        for(int row = 0; row < Constants.ROWS; row++){

            for (int col = 0; col < Constants.COLUMNS; col++){

                // calling no argument constructor
                // for class Disc
                board[row][col] = new Disc();
            }
        }

        // setColor is part of class Disc
        board[3][3].setColor(Constants.LIGHT);
        board[3][4].setColor(Constants.DARK);
        board[4][3].setColor(Constants.DARK);
        board[4][4].setColor(Constants.LIGHT);
    }



    /**
     * @return the board
     */
    public Disc[][] getBoard() {
        return board;
    }

    /**
     * @param board the board to set
     */
    public void setBoard(Disc[][] board) {
        this.board = board;
    }

}

Constants.java

package core;

import java.awt.Color;

public class Constants {

    public static Color DARK = Color.BLACK;
    public static Color LIGHT = Color.WHITE;
    public static int PLAYER_ONE = 0;
    public static int PLAYER_TWO = 1;
    public static int ROWS = 8;
    public static int COLUMNS = 8;
    public static int MAX_PLAYERS = 2;

}

Disc.java

package core;

import java.awt.Color;


public class Disc {

    // member variable
    private Color discColor;

    /**
     * @return the discColor
     */
    public Color getDiscColor() {
        return discColor;
    }

    /**
     * @param discColor the discColor to set
     */
    public void setDiscColor(Color discColor) {
        this.discColor = discColor;
    }

}

Game.java

package core;

import java.util.ArrayList;
import javax.swing.JOptionPane;


public class Game {


    // member variables
    private ArrayList<Player> players;
    private Board board;

    public Game(){

        // initObjects method call
        initObjects();
    }

    private void initObjects(){

        board = new Board();
        createPlayers();
        printPlayers();
    }

    private void createPlayers(){

        players = new ArrayList<Player>();

        for(int i=0; i < 2; i++){

            String name = JOptionPane.showInputDialog(null, "Enter player's name");
            Player player = new Player();
            player.setName(name);

            if(i == Constants.PLAYER_ONE)
                player.setDiscColor(Constants.DARK);
            else if(i == Constants.PLAYER_TWO)
                player.setDiscColor(Constants.LIGHT);

        Player.add(players);

    }   
}

    private void printPlayers()
{
    System.out.println("The game has the following players:");


    for(Player name : getPlayers())
    {
        System.out.println("Player " + name.getName() + " is playing disc color " + name.getDiscColor()); 
    }
}

    /**
     * @return the players
     */
    public ArrayList<Player> getPlayers() {
        return players;
    }

    /**
     * @param players the players to set
     */
    public void setPlayers(ArrayList<Player> players) {
        this.players = players;
    }

    /**
     * @return the board
     */
    public Board getBoard() {
        return board;
    }

    /**
     * @param board the board to set
     */
    public void setBoard(Board board) {
        this.board = board;
    }

}

Player.java

package core;

import java.awt.Color;


public class Player {

    private String name;

    private Color discColor;

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return the discColor
     */
    public Color getDiscColor() {
        return discColor;
    }

    /**
     * @param discColor the discColor to set
     */
    public void setDiscColor(Color discColor) {
        this.discColor = discColor;
    }

}

Othello.java

public class Othello {

public static void main(String[] args) {
    Game game = new Game();
}
}

1 个答案:

答案 0 :(得分:0)

变量boardDisc的二维数组。

Disc没有方法setColor()

正确的方法名称是setDiscColor()