我正在嘗試完成這個Tic Tac Toe遊戲的任務。除了方法AddPiece和GetPieceAt之外,我完成了所有其他要求。我已經搜索了幾乎所有關於如何將其實現到ArrayList以及如何在ArrayList的(x,y)中設置它的一切。我覺得我可能會錯誤地理解這個任務,但是現在我不知道該怎麼做。我有一些想法寫下來,但我已經刪除了大部分我認爲會用這兩種方法去做的事情。在位置x,y的ArrayList中添加一個元素
爲了減少在這裏添加所有其他文件的麻煩,這是發佈任務的鏈接。 http://go.code-check.org/codecheck/files/1404121614cuepj4pvhuprowa1awz8s0642
任何幫助和指導將非常感激。
這是我對文件名TicTacToeBoard.java
代碼import java.util.ArrayList;
public class TicTacToeBoard extends GameBoard
{
/**
* The pieces in this game.
*/
ArrayList<TicTacToePiece> GamePieces;
/**
* Constructor. Instantiate the GamePieces ArrayList.
*/
public TicTacToeBoard()
{
// YOUR CODE HERE
super(0, 0);
GamePieces = new ArrayList<TicTacToePiece>();
}
/**
* empty out the GamePieces ArrayList
*/
public void Reset()
{
// YOUR CODE HERE
GamePieces.clear();
}
/**
* Fill a space with the newPiece, IF THAT SPACE IS EMPTY.
*
* @param x the first, horizontal coordinate for the next move
* @param y the second, vertical coordinate for the next move
* @newPiece the piece to place at the location
*/
public void AddPiece(int x, int y, TicTacToePiece newPiece)
{
// YOUR CODE HERE
GamePiece gp = new GamePiece(x,y);
gp.GetPosition();
// GamePieces.add((int) gp.GetPosition(), newPiece);
}
/**
* Get a GamePiece at a specific position.
*
* @param x the first, horizontal coordinate for the next move
* @param y the second, vertical coordinate for the next move
* @return the game piece at position x, y. or null if there is none
*/
public TicTacToePiece GetPieceAt(int x, int y)
{
// YOUR CODE HERE
return null;
}
/**
* Checks the board for win or draw conditions and update the GameState property appropriately.
*
* @return the GameStatus of this game
*/
public GameStatus CheckForWin()
{
TicTacToeGame t = new TicTacToeGame();
if(t.GetGameState() == GameStatus.ON)
return GameStatus.ON;
else if(t.GetGameState() == GameStatus.WIN_PLAYER_1)
return GameStatus.WIN_PLAYER_1;
else if(t.GetGameState() == GameStatus.WIN_PLAYER_2)
return GameStatus.WIN_PLAYER_2;
else
return GameStatus.DRAW;
// YOUR CODE HERE
}
/**
* Create a Board[][] array. This is a helper function that I used so that I could reuse code from Assignment 1. You do not have to implement this method.
*
* @return a two dimensional array of Strings
*/
private String[][] GetGameBoard()
{
// YOUR CODE HERE
String[][] Board = new String[3][3];
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
Board[i][j] = "-";
return Board;
}
// /**
// * Checks a string for win conditions. If three in a row occur, then it returns the proper GameState.
// * This is a helper function that I used, but is not required for you to implement.
// *
// * @param Input a representation of a row, column, or diagonal in the game.
// *
// * @return the proper GameStatus for a row, column, or diagonal represented by the Input String
// * "---" would indicate an entirely free row, column or diagonal, in which case it should return GameStatus.ON.
// * "000" indicates a row, column, or diagonal that has been won by player 1.
// * "111" indicates a row, column, or diagonal that has been won by player 2.
// */
// private GameStatus CheckStringForThree(String Input)
// {
// // YOUR CODE HERE
// }
/**
* Print the game board to stdout.
* 0 should be used to represent moves by player 1.
* 1 should be used to represent moves by player 2.
* - should be used to represent a free space.
* One blank space should occur between each space.
* So an empty game board would be
* - - -
* - - -
* - - -
* And a game might look like
* 0 - 1
* 0 - -
* 1 - 0
* WARNING: If you are storing the game board as Board[x][y], then the traditional nested loops won't
* print the board properly. x should be the horizontal coordinate. y should be the vertical coordinate.
*/
public void Print()
{
// YOUR CODE HERE
for(int r = 0; r < 3; r++)
{
for(int c = 0; c < 3; c++)
{
System.out.print(GetGameBoard()[r][c]);
}
System.out.println();
}
System.out.println(GamePieces);
}
}
想知道爲什麼要將它設置爲一個數組列表而不僅僅是一個2D數組? –
教授給了我們所有這些代碼,無論它在哪裏//你的代碼都是我們所做的。就我個人而言,我會用二維數組完成它,並完成這件事,但他希望我們使用該數組列表。 – thatonechin