java项目开发(二)----五子棋2.0

java项目开发(二)----五子棋2.0

新增内容

AI电脑下棋

HashMap、权值
- 死连--两端都能下棋的连子
- 活连--一端被堵住的连子
		HashMap<String,Integer> hashmap=new HashMap<>();
		//活连
		hashmap.put("010", 10);
		hashmap.put("0110", 100);
		hashmap.put("01110", 1000);
		hashmap.put("011110", 100000);
		hashmap.put("020", 10);
		hashmap.put("0220", 100);
		hashmap.put("02220", 1000);
		hashmap.put("022220", 100000);
		//死连
		//死一连
		hashmap.put("012", 8);
		hashmap.put("021", 8);
		hashmap.put("01", 8);
		hashmap.put("02", 8);
		//死二连
		hashmap.put("0112", 60);
		hashmap.put("0221", 60);
		hashmap.put("011", 60);
		hashmap.put("022", 60);	
		//死三连
		hashmap.put("01112", 900);
		hashmap.put("02221", 900);
		hashmap.put("0111", 900);
		hashmap.put("0222", 900);	
		//死四连
		hashmap.put("011112",90000);
		hashmap.put("022221",90000);
		hashmap.put("01111",90000);
		hashmap.put("02222",90000);	
遍历棋盘找到权值最大处下棋
创建一个与棋盘大小相同的数组存储权值
	//创建一个与棋盘同大小的权值表
			int[][] chessweight=new int[ROW+1][CLOUN+1];
设置for循环遍历棋盘
字符串"0"作为首位置的字符,每往后遍历一个棋子便加一个字符串
判断所遍历的这个棋棋盘是否符合所取条件
	-这个位置必须没有棋子
 	-这个位置往后位置也不能为空(减少无效取值)
 	-当往后遍历取值到与连子不同棋子时记录并停止遍历,否则一直遍历下去
			for(int i=0;i<chessNumArr.length;i++) {
   
			for(int j=0;j<chessNumArr[i].length;j++) {
   
				
			//记录这个棋子的权值
			int code=0;
			//判断这个点是否有棋子能够开始计数
			if(chessNumArr[i][j]==0) {
   
			//记录这个棋子的情况
			int chessNum=chessNumArr[i][j];
			//判断下个位置是否有棋子
				
				
				//向右遍历记录符合要求的数组组合
				if(j<chessNumArr[i].length-1&&chessNum!=chessNumArr[i][j+1]) {
   
					String CodeStr="0";
					int chess0=chessNumArr[i][j+1];
					for(int k=j+1;k<chessNumArr[i].length;k++) {
   
						//判断后面是否能继续连续下去
						if(chess0==chessNumArr[i][k]) {
   

						CodeStr=CodeStr+chessNumArr[i][k];
						}else {
   
						//记录并停止遍历
						CodeStr=CodeStr+chessNumArr[i][k];
						break;
						}
						
					}
				}
				
				}
			}
空位置每遍历完一个方向便用HashMap得出权值加上
					//判断这个字符串是否符合要求
					if(hashmap.containsKey(CodeStr)) {
   
					//给字符串赋值
					code+=hashmap.get(CodeStr);}

接下来其他方向可以自己类比写出

监听器中写入
将游戏模式字符传入游戏监听器
-在五子棋界面创建字符串对象pattern
- 在游戏选择界面监听器中创建五子棋对象
- 按下游戏选择便给pattern赋值
- 因为五子棋界面对象以及传入游戏界面监听器,直接引用便是
	//创建五子棋对象,引用它 的窗口,传入字符串
	WuZiqi wzq=new WuZiqi();

			if(btner.equals("人机模式")) {
   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值