91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 1.84MB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發布日期: 2023-11-21
  • 語言: Java
  • 標簽: Java版??設計論文??

資源簡介

中國象棋,位棋盤,Zobrist鍵值,alpha-beta搜索,置換表,局面評價,包含設計說明 摘 要:隨著人工智能及計算機硬件的發展,計算機象棋程序的下棋水平也不斷地得到提高。20世紀60年代初,麥卡錫提出了alpha-beta修剪算法,把為決定下一個走步而需對棋盤狀態空間的搜索量從指數級減少為指數的平方根,大大地提高了機器下棋的水平。IBM的超級計算機“Deep Blue”更是一個神話,讓棋迷們神往。本文根據國際象棋程序設計的一些成功經驗,提出中國象棋程序設計的一些思路和方法。 關 鍵 詞:中國象棋,位棋盤,Zobrist鍵值,alpha-beta搜索,置換表,局面評價 Abstract:Along with the development of the Artificial Intelligence and computer hardware, the capability of computer chess program have advanced continually.At the beginning of 60s,20th century, McCaxi brought forword alpha-beta pruning algorism which made the chess program advanced more by reducing the order of magnitude of the number of searching nodes deciding next step,named “State Space” from O(Xn) to O(Xn/2). IBM’s super-computer “Deep Blue” is more like a myth for all computer chess fans. In my article, I will describe some ideas and methods of designing Chinese Chess program along with some successful experiences and cases of the Chess. Keywords: Chinese Chess, bit board, zobrist keys, alpha-beta search, transposition table, Evaluation 目 錄 引 言 3 第一章 概述 4 1.1 棋盤的標記 4 1.2 棋子的名稱 5 1.3 棋譜的記錄方法 5 1.4 歷史局面的表示及存儲 7 1.5 棋譜記錄文件的格式 8 第二章 基本數據結構——位棋盤 10 2.1 什么是位棋盤 10 2.2 位棋盤的作用 10 2.3 位棋盤的基本運算 12 2.4 Java中位棋盤的實現 13 第三章 基本數據結構——Zobrist鍵值 17 3.1 比較局面的方法 17 3.2 Zobrist鍵值的實現方法 17 3.3 Zobrist鍵值的工作原理及用途 17 3.4 Java中實現Zobrist鍵值 18 第四章 著法生成 20 4.1偽合法著法的生成 20 4.2 合法著法的生成 25 第五章 搜索算法 29 5.1 最小-最大搜索 29 5.2 Alpha-Beta搜索 33 5.3 迭代加深 36 5.4 置換表 37 5.5 其他策略 41 第六章 局面評價函數 47 6.1 評價函數的實現方法 48 6.2 評價函數所需的信息 48 第七章 程序的設計及實現 51 7.1 搜索引擎的實現(engine包) 51 7.2 信息傳輸機制(message包) 52 7.3 棋子生成(pieces包) 52 7.4 主控模塊(main包) 52 附件1:搜索算法主程序SearchMove.java 55 附件2:程序運行界面及功能說明 74

資源截圖

代碼片段和文件信息

/*
?*中國象棋Java版V1.0
?*作者:王學峰
?*源文件:Chess.java
?*最后修改時間:2010-1-02
?*添加功能:實現了當前棋局的保存
?*/

import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
import?java.util.*;
import?java.io.*;

//主類
public?class?Chess{
public?static?void?main(String?args[]){
new?ChessMainframe(“中國象棋:觀棋不語真君子,棋死無悔大丈夫“);
}
}

//主框架類
class?ChessMainframe?extends?Jframe?implements?ActionListenerMouseListenerRunnable{
//玩家
JLabel?play[]?=?new?JLabel[32];
//棋盤
JLabel?image;
//窗格
Container?con;
//工具欄
JToolBar?jmain;
//重新開始
JButton?anew;
//悔棋
JButton?repent;
//退出
JButton?exit;
//當前信息
JLabel?text;

//保存當前操作
Vector?Var;

//規則類對象(使于調用方法)
ChessRule?rule;

/**
**?單擊棋子
**?chessManClick?=?true?閃爍棋子?并給線程響應
**?chessManClick?=?false?吃棋子?停止閃爍??并給線程響應
*/
boolean?chessManClick;

/**
**?控制玩家走棋
**?chessPlayClick=1?黑棋走棋
**?chessPlayClick=2?紅棋走棋?默認紅棋
**?chessPlayClick=3?雙方都不能走棋
*/
int?chessPlayClick=2;

//控制棋子閃爍的線程
Thread?tmain;
//把第一次的單擊棋子給線程響應
static?int?Mani;

ChessMainframe(){
new?ChessMainframe(“中國象棋“);
}

/**
**?構造函數
**?初始化圖形用戶界面
*/
ChessMainframe(String?title){
//獲行客格引用
con?=?this.getContentPane();
con.setLayout(null);
//實例化規則類
rule?=?new?ChessRule();
Var?=?new?Vector();

//創建工具欄
jmain?=?new?JToolBar();
text?=?new?JLabel(“歡迎使用象棋對弈系統“);
//當鼠標放上顯示信息
text.setToolTipText(“信息提示“);
anew?=?new?JButton(“?新?游?戲?“);
anew.setToolTipText(“重新開始新的一局“);
exit?=?new?JButton(“?退??出?“);
exit.setToolTipText(“退出象棋程序程序“);
repent?=?new?JButton(“?悔??棋?“);
repent.setToolTipText(“返回到上次走棋的位置“);

//把組件添加到工具欄
jmain.setLayout(new?GridLayout(04));
jmain.add(anew);
jmain.add(repent);
jmain.add(exit);
jmain.add(text);
jmain.setBounds(0055830);
con.add(jmain);

//添加棋子標簽
drawChessMan();

//注冊按扭監聽
anew.addActionListener(this);
repent.addActionListener(this);
exit.addActionListener(this);

//注冊棋子移動監聽
for?(int?i=0;i<32;i++){
con.add(play[i]);
play[i].addMouseListener(this);
}

//添加棋盤標簽
con.add(image?=?new?JLabel(new?ImageIcon(“image\\Main.GIF“)));
image.setBounds(030558620);
image.addMouseListener(this);

//注冊窗體關閉監聽
this.addWindowListener(
new?WindowAdapter()?{
public?void?windowClosing(WindowEvent?we){
System.exit(0);
}
}
);

//窗體居中
Dimension?screenSize?=?Toolkit.getDefaultToolkit().getScreenSize();
Dimension?frameSize?=?this.getSize();

if?(frameSize.height?>?screenSize.height){
frameSize.height?=?screenSize.height;
}
if?(frameSize.width?>?screenSize.width){
frameSize.width?=?screenSize.width;
}

this.setLocation((screenSize.width?-?frameSize.width)?/?2?-?280?(screenSize.height?-?frameSize.height?)?/?2?-?350);

//設置
this.setIconImage(new?ImageIcon(“image\\紅將.GIF“).getImage());
this.setResizable(false);
this.settitle(title);
this.setSize(558670);

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????1142272??2010-05-07?13:37??象棋\Java中國象棋需求\設計\Java版中國象棋項目設計論文.doc

?????文件???????5624??2008-04-15?11:17??象棋\象棋txt版本\1.txt

?????文件???????1723??2009-12-28?16:18??象棋\象棋txt版本\2.txt

?????文件???????2157??2008-04-15?11:17??象棋\象棋txt版本\3.txt

?????文件???????2226??2008-04-15?11:17??象棋\象棋txt版本\4.txt

?????文件??????13572??2008-04-15?11:17??象棋\象棋txt版本\5.txt

?????文件????????725??2008-04-15?11:17??象棋\象棋txt版本\6.txt

?????文件???????1468??2009-10-01?16:51??象棋\象棋txt版本\CodePub.Com說明.txt

?????文件??????25877??2007-11-28?19:12??象棋\Java中國象棋需求\象棋的走法\中國象棋規則簡介.files\440.htm

?????文件???????1106??2007-11-28?19:13??象棋\Java中國象棋需求\象棋的走法\中國象棋規則簡介.files\count.htm

?????文件??????26236??2007-11-28?19:16??象棋\Java中國象棋需求\象棋的走法\銀通在線?-?into365_net∷?中國象棋介紹及游戲規則.files\game.htm

?????文件????????844??2007-11-28?19:12??象棋\Java中國象棋需求\象棋的走法\中國象棋規則簡介.files\isLogin.htm

?????文件??????????0??2007-11-28?19:13??象棋\Java中國象棋需求\象棋的走法\中國象棋規則簡介.files\view_ad.htm

?????文件??????????0??2007-11-28?19:13??象棋\Java中國象棋需求\象棋的走法\中國象棋規則簡介.files\view_img_ad(1).htm

?????文件??????????0??2007-11-28?19:13??象棋\Java中國象棋需求\象棋的走法\中國象棋規則簡介.files\view_img_ad(2).htm

?????文件??????????0??2007-11-28?19:12??象棋\Java中國象棋需求\象棋的走法\中國象棋規則簡介.files\view_img_ad.htm

?????文件???????3751??2007-11-28?19:13??象棋\Java中國象棋需求\象棋的走法\中國象棋規則簡介.files\view_review.htm

?????文件??????30485??2007-11-28?19:16??象棋\Java中國象棋需求\象棋的走法\銀通在線?-?into365_net∷?中國象棋介紹及游戲規則.htm

?????文件??????38346??2007-11-28?19:13??象棋\Java中國象棋需求\象棋的走法\中國象棋規則簡介.htm

?????文件??????34560??2007-11-28?16:48??象棋\Java中國象棋需求\象棋的走法\中國象棋競賽規則,有什么朗朗上口的口訣嗎?_百度知道.htm

?????文件?????????20??2006-03-19?17:06??象棋\Java中國象棋需求\單機版成品給與參考\打包發布\Chess.bat

?????文件????????389??2010-01-06?19:04??象棋\Java中國象棋需求\單機版成品給與參考\源程序\Chess.class

?????文件????????534??2010-01-06?19:04??象棋\Java中國象棋需求\單機版成品給與參考\源程序\ChessMainframe$1.class

?????文件??????18888??2010-01-06?19:04??象棋\Java中國象棋需求\單機版成品給與參考\源程序\ChessMainframe$ChessRule.class

?????文件??????11704??2010-01-06?19:04??象棋\Java中國象棋需求\單機版成品給與參考\源程序\ChessMainframe.class

?????文件???????2293??2007-11-28?19:12??象棋\Java中國象棋需求\象棋的走法\中國象棋規則簡介.files\isLogin.files\css.css

?????文件???????5991??2007-11-28?19:16??象棋\Java中國象棋需求\象棋的走法\銀通在線?-?into365_net∷?中國象棋介紹及游戲規則.files\css.css

?????文件??????27882??2007-11-28?16:48??象棋\Java中國象棋需求\象棋的走法\中國象棋競賽規則,有什么朗朗上口的口訣嗎?_百度知道.files\iknow1_0.css

?????文件???????3832??2007-11-28?19:12??象棋\Java中國象棋需求\象棋的走法\中國象棋規則簡介.files\style.css

?????文件??????13270??2006-10-09?18:05??象棋\Java中國象棋需求\單機版成品給與參考\打包發布\Chess.jar

............此處省略96個文件信息

評論

共有 條評論