[英]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
. 可变
board
是Disc
的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.