简体   繁体   English

用Java初始化Othello Game Board

[英]Othello Game Board initialization in Java

I'm trying to initialize the game board for Othello in Java. 我正在尝试用Java初始化Othello的游戏板。 It should prompt the user for two player names, set player 1 to dark pieces, and player 2 to light pieces, but when I try to compile I get the following error: 它应该提示用户输入两个播放器名称,将播放器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();"

Can anyone offer some insight of what to do? 谁能提供一些有关该做什么的见解? I'm not sure what's wrong 我不知道怎么了

And sorry if this is formatted bad. 不好意思,如果这个格式不好。 Wasn't sure how to format for multiple Java classes. 不确定如何格式化多个Java类。

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

Variable board is a 2D array of Disc . 可变boardDisc的2D阵列。

Disc does not have a method setColor() Disc没有方法setColor()

The correct method name is setDiscColor() 正确的方法名称是setDiscColor()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM