可以更有效地编写吗?

时间:2018-10-12 09:10:32

标签: java

所以我将这项练习作为学校的作业:

此作业的目标是编写一个可以重播游戏的程序 奥赛罗。输入文件包含对文件进行的所有更改。 轮流登机。转弯期间所做的所有更改均应 在屏幕上可视化。

一次读取并处理输入文件的一行,让更改生效 放置在板上。每次回合后,游戏只要一直停留就暂停 输入文件指示。当到达文件末尾时,游戏 已完成。 游戏从屏幕中央的四个石头开始。两块白色的石头 在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();
}

}

0 个答案:

没有答案