找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2865|回复: 0
打印 上一主题 下一主题
收起左侧

象棋AI模块调试用代码

[复制链接]
跳转到指定楼层
楼主
ID:72008 发表于 2015-1-11 19:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. //文件名 xq_main.java
  2. import xq.*;
  3. //声明一个类
  4. public class xq_main {
  5. //声明一个方法  
  6. public static void main(String[] args){
  7. //程序的入口
  8. //初始化一个棋盘
  9. int qipan[][]=new int[][]{{2,3,6,5,1,5,6,3,2},{0,0,0,0,0,0,0,0,0},{0,4,0,0,0,0,0,4,0},{7,0,7,0,7,0,7,0,7},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{14,0,14,0,14,0,14,0,14},{0,11,0,0,0,0,0,11,0},{0,0,0,0,0,0,0,0,0},{9,10,13,12,8,12,13,10,9}};
  10. int x,y;
  11. for(y=0;y<=9;y++)
  12. {
  13. for(x=0;x<=8;x++)
  14. {
  15. switch (qipan[y][x]){
  16. case 0:
  17.          System.out.print("      ");//空格
  18.        break;
  19.      case 1:
  20.          System.out.print("黑帅  ");//黑帅
  21.        break;
  22.      case 2:
  23.          System.out.print("黑车  ");//黑车
  24.           break;
  25.      case 3:
  26.        System.out.print("黑马  ");//黑马
  27.         break;
  28.      case 4:
  29.        System.out.print("黑炮  ");//黑炮
  30.         break;
  31.      case 5:
  32.        System.out.print("黑士  ");//黑士
  33.         break;
  34.      case 6:
  35.        System.out.print("黑象  ");//黑象
  36.         break;
  37.      case 7:
  38.        System.out.print("黑兵  ");//黑兵
  39.         break;
  40.      case 8:
  41.        System.out.print("红将  ");//红将
  42.         break;
  43.      case 9:
  44.        System.out.print("红车  ");//红车                                                                                                                                            
  45.         break;
  46.      case 10:
  47.        System.out.print("红马  ");//红马
  48.         break;
  49.      case 11:
  50.        System.out.print("红砲  ");//红砲
  51.         break;
  52.      case 12:
  53.        System.out.print("红仕  ");//红仕
  54.         break;
  55.      case 13:
  56.        System.out.print("红相  ");//红相
  57.         break;
  58.      case 14:
  59.        System.out.print("红卒  ");//红卒
  60.         break;
  61. }
  62. }
  63. if(y==4) System.out.print("\n\n\n");else System.out.print("\n\n");
  64. }
  65. GuiZe AI=new GuiZe();
  66. //调试AI棋步生成情况
  67. for(int z=0;z<30;z++)
  68. {
  69. ChessMove qibu=AI.searchAGoodMove(qipan);
  70. System.out.print("AI生成一个当前最佳棋步:\n");//空格
  71. switch (qibu.ChessID){
  72. case 0:
  73.          System.out.print("      ");//空格
  74.        break;
  75.      case 1:
  76.          System.out.print("黑帅  ");//黑帅
  77.        break;
  78.      case 2:
  79.          System.out.print("黑车  ");//黑车
  80.           break;
  81.      case 3:
  82.        System.out.print("黑马  ");//黑马
  83.         break;
  84.      case 4:
  85.        System.out.print("黑炮  ");//黑炮
  86.         break;
  87.      case 5:
  88.        System.out.print("黑士  ");//黑士
  89.         break;
  90.      case 6:
  91.        System.out.print("黑象  ");//黑象
  92.         break;
  93.      case 7:
  94.        System.out.print("黑兵  ");//黑兵
  95.         break;
  96.      case 8:
  97.        System.out.print("红将  ");//红将
  98.         break;
  99.      case 9:
  100.        System.out.print("红车  ");//红车                                                                                                                                            
  101.         break;
  102.      case 10:
  103.        System.out.print("红马  ");//红马
  104.         break;
  105.      case 11:
  106.        System.out.print("红砲  ");//红砲
  107.         break;
  108.      case 12:
  109.        System.out.print("红仕  ");//红仕
  110.         break;
  111.      case 13:
  112.        System.out.print("红相  ");//红相
  113.         break;
  114.      case 14:
  115.        System.out.print("红卒  ");//红卒
  116.         break;
  117. }
  118. System.out.print("现在位置:Y "+qibu.fromY+"  X "+qibu.fromX+" 移动到:Y "+qibu.toY+" X "+qibu.toX+"\n");  
  119. }
  120.    
  121.    
  122. }
  123. }

  124. AI主模块会用到这个类要放到同一个包里
  125. package xq;
  126. /**
  127. * 该类为棋子的一个走法
  128. * 包含是什么棋子
  129. * 起始点的位置
  130. * 目标点的位置
  131. * 以及估值时所用到的score
  132. */
  133. public class ChessMove {
  134.   public int ChessID;//表明是什么棋子
  135.   public int fromX;//起始的坐标
  136.   public int fromY;
  137.   public int toX;//目的地的坐标
  138.   public int toY;
  139.   public int score;//值,估值时会用到
  140. public ChessMove(int ChessID, int fromX,int fromY,int toX,int toY,int score){//构造器
  141.   this.ChessID = ChessID;//棋子的类型
  142.   this.toY = toY;//棋子的目标点y坐标
  143.   this.fromX = fromX;//棋子的起始坐标
  144.   this.fromY = fromY;
  145.   this.toX = toX;//棋子的目标点x坐标
  146.   this.score = score;
  147. }
  148. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表