所以我将这项练习作为学校的作业:
此作业的目标是编写一个可以重播游戏的程序 奥赛罗。输入文件包含对文件进行的所有更改。 轮流登机。转弯期间所做的所有更改均应 在屏幕上可视化。
一次读取并处理输入文件的一行,让更改生效 放置在板上。每次回合后,游戏只要一直停留就暂停 输入文件指示。当到达文件末尾时,游戏 已完成。 游戏从屏幕中央的四个石头开始。两块白色的石头 在d 4和e 5处,以及在d 5和e 4处有两个黑色石头。请确保这些石头 在进行任何转弯之前都存在。
所有方法 此项作业需要:
void wait(int milliseconds);
void place(int x, int y, int type);
void showChanges();
Javadoc中描述了这些方法的工作方式。 该类包含以下常量:
public static final int NUMBER_OF_COLUMNS = 8;
public static final int NUMBER_OF_ROWS = 8;
public static final int BLACK = 2;
public static final int WHITE = 1;
public static final int EMPTY = 0;
我已经编写了下一个代码:
package Module3;
import java.util.Scanner;
import java.io.PrintStream;
import ui.UserInterfaceFactory;
import ui.UIAuxiliaryMethods;
import ui.OthelloReplayUserInterface;
public class Replay1 {
public static final int NUMBER_OF_COLUMNS = 8;
public static final int NUMBER_OF_ROWS = 8;
public static final int BLACK = 2;
public static final int WHITE = 1;
public static final int EMPTY = 0;
PrintStream out;
OthelloReplayUserInterface ui;
Replay1(){
out = new PrintStream(System.out);
ui = UserInterfaceFactory.getOthelloReplayUI();
}
void start() {
setFirstStones();
Scanner data = UIAuxiliaryMethods.askUserForInput().getScanner();
process(data);
}
void process(Scanner data){
while(data.hasNextLine() ){
int playerInt;
String player= data.next();
int waitingTime = data.nextInt();
String action= data.next();
if (action.equals("move") ){
String column= data.next();
int row = data.nextInt();
if (player.equals("white") ) {
playerInt=WHITE;
}
else {
playerInt = BLACK;
}
int columnInt=determiningColumn(column);
ui.wait(waitingTime);
placeStones(columnInt, row-1 , playerInt);
ui.showChanges();
}
}
}
int determiningColumn(String column){
int columnInt=0;
switch (column) {
case "a":
columnInt = 0;
break;
case "b":
columnInt=1;
break;
case "c":
columnInt=2;
break;
case "d":
columnInt=3;
break;
case "e":
columnInt=4;
break;
case "f":
columnInt=5;
break;
case "g":
columnInt=6;
break;
case "h":
columnInt=7;
break;
default:
columnInt=8;
}
return columnInt;
}
void setFirstStones(){
ui.place(3, 3, ui.WHITE);
ui.place(4, 4, ui.WHITE);
ui.place(3, 4, ui.BLACK);
ui.place(4, 3, ui.BLACK);
ui.showChanges();
}
void placeStones(int x, int y, int type){
ui.place(x, y, type);
}
public static void main(String[] args) {
new Replay1().start();
}
}