MainTest类,主要用于写一些客户端的代码,用于测试
public class MainTest {
public static void main(String[] args) {
ThreeGameImpl g1 = new ThreeGame();
String user1;
String user2;
String curUser;
int curCount = 0;
boolean flag = false;
g1.print();
Scanner s = new Scanner(System.in);
System.out.println("请输入一号玩家姓名:");
user1 = s.next();
System.out.println("请输入二号玩家姓名:");
user2 = s.next();
while(!flag){
curUser = (curCount++)%2==0?user1:user2;
System.out.println("请玩家下棋:(输入坐标:1,2等)");
String Loc = s.next();
int i = Character.getNumericValue(Loc.charAt(0));
int j = Character.getNumericValue(Loc.charAt(2));
while(g1.getXY(i, j)!=‘O‘){
System.out.println("该位置已有棋,请重新输入");
Loc = s.next();
i = Character.getNumericValue(Loc.charAt(0));
j = Character.getNumericValue(Loc.charAt(2));
}
flag = g1.putC(i, j);
if(flag){
System.out.println(curUser+"胜利!");
break;
}
}
s.close();
System.out.println("游戏结束!");
// System.out.println(‘#‘+‘#‘+‘#‘);
// System.out.println(‘*‘+‘*‘+‘*‘);
}
}
ThreeGameImpl是一个抽线类,用于规范方法
public abstract class ThreeGameImpl {
public abstract void print();
public abstract boolean check();
public abstract boolean putC(int i,int j);
public abstract void init();
public abstract char getXY(int i,int j);
}
ThreeGame是具体实现
public class ThreeGame extends ThreeGameImpl{
private char[][] C;
private char[] style= {‘#‘,‘*‘};
private int count = 0;
public ThreeGame(){
C = new char[3][3];
init();
System.out.println("游戏开始!");
}
@Override
public void print() {
for(int i = 0;i<3;i++){
for(int j = 0;j<3;j++){
System.out.print(C[i][j]+" ");
}
System.out.println();
}
}
@Override
public boolean check() {
for(int i = 0;i<3;i++){
if(C[i][0]+C[i][1]+C[i][2] == 105 || C[i][0]+C[i][1]+C[i][2] == 126) return true;
if(C[0][i]+C[1][i]+C[2][i] == 105 || C[0][i]+C[1][i]+C[2][i] == 126) return true;
}
if(C[0][0]+C[1][1]+C[2][2] == 105 || C[0][0]+C[1][1]+C[2][2] == 126) return true;
if(C[0][2]+C[1][1]+C[2][0] == 105 || C[0][2]+C[1][1]+C[2][0] == 126) return true;
return false;
}
@Override
public boolean putC(int i,int j) {
C[i][j] = style[(count++)%2];
print();
return check();
}
@Override
public void init() {
for(int i = 0;i<3;i++){
for(int j = 0;j<3;j++){
C[i][j] = ‘O‘;
}
}
}
@Override
public char getXY(int i, int j) {
return C[i][j];
}
}
原文:https://www.cnblogs.com/lvgj/p/12586409.html