找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 2928|回復(fù): 0
收起左側(cè)

象棋AI模塊調(diào)試用代碼

[復(fù)制鏈接]
ID:72008 發(fā)表于 2015-1-11 19:58 | 顯示全部樓層 |閱讀模式
  1. //文件名 xq_main.java
  2. import xq.*;
  3. //聲明一個(gè)類
  4. public class xq_main {
  5. //聲明一個(gè)方法  
  6. public static void main(String[] args){
  7. //程序的入口
  8. //初始化一個(gè)棋盤
  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. //調(diào)試AI棋步生成情況
  67. for(int z=0;z<30;z++)
  68. {
  69. ChessMove qibu=AI.searchAGoodMove(qipan);
  70. System.out.print("AI生成一個(gè)當(dāng)前最佳棋步:\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("現(xiàn)在位置:Y "+qibu.fromY+"  X "+qibu.fromX+" 移動(dòng)到:Y "+qibu.toY+" X "+qibu.toX+"\n");  
  119. }
  120.    
  121.    
  122. }
  123. }

  124. AI主模塊會(huì)用到這個(gè)類要放到同一個(gè)包里
  125. package xq;
  126. /**
  127. * 該類為棋子的一個(gè)走法
  128. * 包含是什么棋子
  129. * 起始點(diǎn)的位置
  130. * 目標(biāo)點(diǎn)的位置
  131. * 以及估值時(shí)所用到的score
  132. */
  133. public class ChessMove {
  134.   public int ChessID;//表明是什么棋子
  135.   public int fromX;//起始的坐標(biāo)
  136.   public int fromY;
  137.   public int toX;//目的地的坐標(biāo)
  138.   public int toY;
  139.   public int score;//值,估值時(shí)會(huì)用到
  140. public ChessMove(int ChessID, int fromX,int fromY,int toX,int toY,int score){//構(gòu)造器
  141.   this.ChessID = ChessID;//棋子的類型
  142.   this.toY = toY;//棋子的目標(biāo)點(diǎn)y坐標(biāo)
  143.   this.fromX = fromX;//棋子的起始坐標(biāo)
  144.   this.fromY = fromY;
  145.   this.toX = toX;//棋子的目標(biāo)點(diǎn)x坐標(biāo)
  146.   this.score = score;
  147. }
  148. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表