• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LvGJ
沉迷学习不秃头
博客园    首页    新随笔    联系   管理    订阅  订阅
三子棋

三子棋

用到了三个类分别是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];
    	}
    
    }
    
    
posted on 2020-03-28 11:25  LvGJ  阅读(243)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3