首页 > 其他 > 详细

三子棋

时间:2020-03-28 12:37:24      阅读:55      评论:0      收藏:0      [点我收藏+]

三子棋

用到了三个类分别是MainTest、ThreeGame、ThreeGameImpl

  1. 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(‘*‘+‘*‘+‘*‘);
    	}
    
    }
    
  2. 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);
    }
    
    
  3. 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)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!