我正在尝试用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();
}
}
答案 0 :(得分:0)
变量board
是Disc
的二维数组。
Disc
没有方法setColor()
正确的方法名称是setDiscColor()