三子棋
时间:2020-03-28 12:37:24
收藏:0
阅读:56
三子棋
用到了三个类分别是MainTest、ThreeGame、ThreeGameImpl
-
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
评论(0)