e怎么下载国际象棋单机版下载 chess free

当前位置: >
>Chess:在线国际象棋互动平台
网站详情来源:
收录时间:
名称: Chess:在线国际象棋互动平台
英文网址:
Chess:在线国际象棋互动平台是一个在线象棋社区,用户可以学习、交流、比赛;这里不仅有各种不同形式的免费象棋比赛,还为用户安排了各种活动,包括象棋锦标赛,有关象棋的文章、视频和各种社会工具等。
Chess网站的口号是&娱乐、学习和分享&。该口号反映了该网站的创办意图&&为用户提供一个愉快的象棋环境。在这里各种不同水平的棋手都能够学习、编著、娱乐、聊天和分享。
Chess网站最初是由Aficionado有限公司创办的,Aficionado是&象棋导师&软件的研发者。后来,该网站被转手,并与2007年5月由其创始人重新建立。该网站有二十多个工作人员,他们的工作职责分别是规划网站,为顾客服务和管理网站上的内容等。
此外,还雇佣了二十名员工,为该网站写文章,制作视频和设计在线象棋课程等。虽然该网站的定位是在网上下象棋或举办网上象棋比赛,但同时它也是棋手们学习和分享象棋知识的地方,正好契合了该网站的口号。该网站有严格的规定,在象棋比赛中不能使用任何象棋软件。
该网站被分为以下几个部分:
娱乐:该部分包含了六种玩象棋的方式&&回合制象棋、在线象棋、锦标赛、投票制、同电脑下象棋和在手机上下象棋等。在Facebook和iGoogle网站上都有的应用程序。以上方式一般会员都可以使用。在线象棋以前一直是测试版,直至最近服务器变得相对稳定后才正式投入使用。回合制象棋同时提供标准象棋和国际象棋960场比赛。
学习:在学习部分会员可以选择各种各样的工具帮助他们提高他们的象棋水平。但是大多数工具都是一个免费的试用版,一般会员不能长期使用。这里的学习工具有视频学习、战术训练、每日难题和电脑练习等。
阅读:在该部分有各式各样的文章、和个人博客等。每周还会有不同象棋大师的专栏。此外,还有一个象棋百科全书,任何人都可以在这里编辑内容。
论坛:该部分是的论坛。
资源:该部分的资源有分析板、可供下载的内容、装备、分类广告、地图、指引、书籍和设备、浏览器工具栏和窗口小部件等。
会员:在这里用户可以搜索其他会员或棋手,邀请朋友加入,观看,购买成为会员,或查阅国家列表或互动地图。
群体:用户可以选择加入某个公共群体,私人群体或某个团队。这样就可以以团队的形式与其他团队进行常规或投票象棋比赛。
< is the #1 online chess community with more than 6 million members from around the world!
provides a safe and enjoyable environment where chess players of all skill levels can learn, play, and enjoy the game together.
分享给小伙伴们:
赫赫无敌:探索互联网世界,收集和分享实用互联网资源,推荐国内和国外知名、实用、创新、科技、优质的站点资源!互联无极限,探索无止境;分享求真知,网络无国界!
本文地址:/topics/5918.html 转载请注明
同类站点推荐您所在的位置: >
> 国际象棋 Chess Free安卓版下载
国际象棋 Chess Free中文版下载
11.27MB213人喜欢
12.94MB193人喜欢
51.39MB126人喜欢
37MB121人喜欢
33.33MB99人喜欢
118.87MB58人喜欢
28.78MB56人喜欢
4.09MB53人喜欢
【国际象棋 Chess Free中文版】内容简介
由来自互联网提供的一款类型的MD5值为:4f8eceecb92f536fa2eb
国际象棋Android上是最好的国际象棋GAME!这是现在Android上收视率最高的国际象棋(在写作时),从30&+象棋步伐中列出。评价:“国际象棋供应一个这方面的经典棋盘GAME的富厚和具有挑战性的的体验,所有你的Andr??oid智妙手机的规模内。”
【国际象棋 Chess Free中文版】屏幕截图
【国际象棋 Chess Free中文版】用户评论
Copyright 99 安卓市场 All Rights Reserved. 皖ICP备号-1您的位置:&>&&>&&>& > 国际象棋(Fritz Chess Benchmark)CPU核心测试4.3.2 中文绿色版
国际象棋(Fritz Chess Benchmark)CPU核心测试4.3.2 中文绿色版
运行环境:WinXP/Win2000/Win200...
下载次数:
开 发 者 :
发布时间:
软件大小:159 K
软件语言:简体中文
官方网站:
软件授权:免费版
这是一个测试CPU性能和核心的工具。
Fritz Chess Benchmark里的每秒千步,是指CPU运行国际象棋时每秒预测的步数,你看见P3 1GHz的提示了没。它每秒可以预测48万步,你的CPU在4线程下每秒预测约等于:960万步,这个和CPU的每秒运算次数是不一样的,而是CPU每秒针对该软件运算后的结果,这和该软件对CPU线程、核心和指令集的支持密切相关!
上一个:下一个:
国际象棋(Fritz Chess Benchmark)CPU核心测...的相关下载
猜你喜欢本月热门
&软件说明&
?本站所有软件及资料均为软件作者提供或网友推荐收集整理而来,仅供学习和研究使用。
具体参考。
?推荐使用旋风、迅雷、BT下载软件并使用或好压等解压软件解压缩包
?本站提供的软件及资料若有侵犯您版权的,请来信指出,本站将立即改正。
?魔盟提供的软件都会尽量测试再发布,并用多种杀毒软件验证,限于能力及系统等因素,无法百分百保证全部软件没问题,若您发现错误或其它问题,请点击页底联系我们,谢谢!
?本站提供的软件如未标明作者还请邮件告知,我们即刻修正使您的名字显示在软件页面。
?本站为非营利性站点,所有资源均为网络搜集或供私下研究学习之用!本站仅提供一个观摩研究学习的环境,将不对任何资源负法律责任。所有非免费授权资源请在下载后24小时内删除。如果您觉得对相关资源有应用需求,请联系作者购买正版!
?本站部分软件压缩包会有压缩密码,请
&他们在阅读
&他们在下载
46人正在下载&&
181人正在下载&&
112人正在下载&&
126人正在下载&&
1061人正在下载&&
Copyright & www.12349.net
All rights reserved.欢迎来到应用汇!请
Chess Free
600-800下载 / 0人喜欢 / 0人评论
大小:4.13M 更新:
Chess Free 介绍
Chess Free
Simply the best chess app for Android!
* 10 play levels from very easy to extremely hard. There is one level for everyone no matter if your a beginner or an expert!
* Very impressive chess engine which teaches you the names of famous chess openings by showing the name of openings as you play them.
* Play Online against players from all over the world. Get started right away by playing as guest or register for an account at freechess.org (link in the app).
- Get your ranking in three different game modes (Lightning, Blitz, Standard).
- Improve your game skill by watching other players games live.
- Chat with your opponents or other people that are online.
* Send PGN files so you can review your games on your computer or anywhere you like.
* 2 player hot-seat.
* 3 Chess Board colors and 3 Chess Piece Sets.
* Clean and simple interface.
* Keeps statistics so that you can keep track of your improvement.
* Designed for both Tablet and Phone.
Don't forget to rate the game if you like it!
Chess Free 版本更新
v2.5.17* BugfixesAs always thanks for the feedback from all of you.I am constantly trying to improve Chess, enjoy!
用户对 Chess Free 评论
亲,想发表评论请下载哦~
发现该应用有下载安装使用错误或恶意扣费携带病毒,请
400-600下载
3万-3.1万下载
Chess Free
可安装 无法启动
屏幕适配有误
版本太旧需要更新
您的举报信息将会同步到工信部12321举报平台
AppChina 应用汇QQ群:
应用汇开发者交流开发群:
网游玩家客服QQ:
微博/微信联系人QQ:
网游合作QQ:北区
单机合作QQ:,
友情链接QQ:
反馈邮箱:
广告合作:>> ChessMainFrame.java - 个人开发的国际象棋源代码,
点击查看更多 ▼
点击收缩隐藏 ▲
ChessMainFrame.java - 个人开发的国际象棋源代码,
源码下载: &
package org.acerge.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import org.acerge.engine.*;
import org.acerge.message.*;
import org.acerge.message.impl.ChessM
import org.acerge.message.impl.ChessMessageQ
import org.acerge.message.impl.MessageC
import org.acerge.message.impl.MessageP
import org.acerge.message.impl.PieceMessageD
import org.acerge.message.support.MsgNetC
import org.acerge.message.support.OuterMsgR
import org.acerge.message.support.OuterMsgS
import org.acerge.pieces.*;
import org.acerge.rule.*;
import mons.logging.L
import mons.logging.LogF
import java.io.*;
public class ChessMainFrame extends JFrame {
private static Log log = LogFactory.getLog(ChessMainFrame.class);
private JL
private JButton button_setSysCfg, button_resetA
private JButton button_reverseB
private JButton button_cmpM
private JButton button_turnB
private JButton button_saveF
private JButton button_openF
private JButton button_preStep, button_nextStep, button_endS
private JFileChooser fileChooserB
private JTextField textField_redTime, textField_blackT
private JButton button_getC
private JButton button_setRule, button_displayR
private JButton button_
JPanel panel0, panel1, panel2, panel3, panel4;// select red or black
private PictureBoard pictureB
private int player = 0;
private boolean boardReversed =
// private boolean boardChangedWhenComputerIsThingking =
private boolean computerIsThingking =
private final TimeRule timeRule = new TimeRule();
private TimeRuleConfig timeRuleConfig = new TimeRuleConfig();
private SysConfigInfo sysCfg = new SysConfigInfo();
private ReadyToPlay readyToP
private boolean competitorStarted =
// computer.
private boolean started =
private boolean isFirstStep =// 第一步
private String competitorN
private static final String SET_RULE_COMMAND = &set time rule&;
private static final String DISPLAY_RULE_COMMAND = &display time rule&;
private int boardGridS// 棋板格子的大小
private int view = 0;// 视角0:红方在下方
private int lineL
private ActiveBoard activeB
private PieceArray pieceArr = new PieceArray();;
private Qizi pieceIndex[] = new Qizi[90];;// [90]
private PieceArray capturedArr = new PieceArray();;
private Qizi lastS
private SortedMoveNodes AllM
private int[][] HisTable = new int[90][90];;
private Tra
private SearchEngine searchE
/***************************************************************************
* message processer
**************************************************************************/
private MessageQueue msgQueue = new ChessMessageQueue();
private Producer producer = new MessageProducer(msgQueue);
private Consumer consumer = new MessageConsumer();
private PieceMessageDeliver deliver = new PieceMessageDeliver(msgQueue);
private MessageListener localListener = new LocalMessageListener();
private MessageListener remoteListener = new RemoteMessageListener();
private MsgNetConnection netConnection = new MsgNetConnection();
private OuterMsgSender outSender = new OuterMsgSender(netConnection);
private OuterMsgReceiver outReceiver = new OuterMsgReceiver(producer,
netConnection);
/***************************************************************************
* button Listeners
**************************************************************************/
private LastNextTurnBackButtonListener lnt = new LastNextTurnBackButtonListener();
private OpenSaveButtonListener fhl = new OpenSaveButtonListener();
private ConnectActionListener connectListener = new ConnectActionListener();
private SysInfoButtonsListener sral = new SysInfoButtonsListener();
/***************************************************************************
* Constructors
**************************************************************************/
public ChessMainFrame() {
initialize();
createGui();
public ChessMainFrame(int bs, int view, String appname) {
super(appname);
setBoardGridSize(bs);
setView(view);
initialize();
createGui();
private void initialize() {
JPanel jContentPane = new JPanel();
jContentPane.setLayout(null);
this.setContentPane(jContentPane);
// this.getContentPane().setLayout(null);
for (int k = 0; k & 90; k++)
for (int j = 0; j & 90; j++)
HisTable[k][j] = 0;
setBoardGridSize(50);
this.getActiveBoard();
this.getSearchEngine();
this.initActiveBoard();
this.getTranslation();
this.getPictureBoard();
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
timeRuleConfig = new TimeRuleConfig();
timeRule.setProducer(producer);
timeRule.setPlayerTimer(new TimeCounter());
sysCfg = new SysConfigInfo();
readyToPlay = new ReadyToPlay();
AllMoves = new SortedMoveNodes();
deliver.registerAConsumer(consumer);
consumer.RegisterAListener(localListener);
consumer.RegisterAListener(remoteListener);
outReceiver.setProducer(producer);
deliver.start();
public void createGui() {
JDialog.setDefaultLookAndFeelDecorated(true);
content = this.getContentPane();
// content.
// content.setLayout(null);
// this.setContentPane(newBoard);
// newBoard.
fileChooserButton = new JFileChooser();
fileChooserButton.setCurrentDirectory(new File(&./save&));
this.setSize(new Dimension(getPictureBoard().getWidth() + 140,
getPictureBoard().getHeight() + 80));
this.setLocation(SCREEN.getLocationForCenter(getSize()));
getNoteinfo().setBounds(10, pictureBoard.getHeight() + 15,
pictureBoard.getWidth() - 20, 25);
getPanel0().setLocation(pictureBoard.getWidth() + 15, 5);
getPanel1().setLocation(pictureBoard.getWidth() + 15, 135);
getPanel2().setLocation(pictureBoard.getWidth() + 15, 203);
getPanel3().setLocation(pictureBoard.getWidth() + 15, 273);
getPanel4().setLocation(pictureBoard.getWidth() + 15, 400);
content.add(noteinfo);
content.add(getPanel0());
content.add(getPanel1());
content.add(getPanel2());
content.add(getPanel3());
content.add(getPanel4());
content.add(getPictureBoard());
initPictureBoardAndPieces();
displayAllQizi();
}// end of createGui
public void initActiveBoard() {
getActiveBoard()
&rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1&);
getTranslation()
.setFenStr(
&rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1&);
loadBook(&./data/book.txt&);
player = 0;
public void initActiveBoard(String fenStr) {
getActiveBoard().loadFen(fenStr);
player = activeBoard.getPlayer();
/***************************************************************************
* add all picture pieces to content
**************************************************************************/
public void initPictureBoardAndPieces() {
initPieces();
for (int i = 0; i & pieceArr.size(); i++)
content.add(pieceArr.getPiece(i));
content.add(pictureBoard);
public void reloadPreActiveBoard(ActiveBoard newBoard) {
clearPicturePieces();
this.activeBoard = newB
initPieces();
initPictureBoardAndPieces();
displayAllQizi();
player = getActiveBoard().getPlayer();
private void initPieces() {
// if (content==null) content = this.getContentPane();
PieceFactory.setPieceSize((int) (getBoardGridSize() * 0.9));
String s = activeBoard.getFenStr();
int row = 9;//
int col = 0;
for (int i = 0; i & 90; i++) {
pieceIndex[i] =
PieceMouseListener PML = new PieceMouseListener();
for (int i = 0; i & s.length() && row &= 0;) {
char tmpChar = s.charAt(i);
if (tmpChar &= '1' && tmpChar &= '9') {
col += tmpChar - '0';
if (s.charAt(i) == '/' || s.charAt(i) == ' ') {
tmpQizi = PieceFactory.getAPiece(s.charAt(i), col, row);
tmpQizi.addMouseListener(PML);
pieceArr.add(tmpQizi);
pieceIndex[col * 10 + row] = pieceArr
.getPiece(pieceArr.size() - 1);
public void loadBook(String book) {
getSearchEngine().clearHash();
getSearchEngine().clearHistTab();
// arch.LoadBook(&./data/BOOK.DAT&);
getSearchEngine().loadBook(book);
} catch (IOException e1) {
e1.printStackTrace();
private void clearPicturePieces() {
for (int i = 0; i & pieceIndex. i++) {
pieceIndex[i] =
Qizi tmpQz =
int len = pieceArr.size();
for (int i = 0; i & i++) {
if ((tmpQz = pieceArr.remove(0)) != null) {
content.remove(tmpQz);
public void reverseBoard() {
boardReversed = !boardR
displayAllQizi();
// public void
public void displayAllQizi() {
for (int i = 0; i & pieceIndex. i++) {
displayAQizi(pieceIndex[i]);
public void displayAQizi(Qizi qz) {
int x0, y0;
if (qz == null)
setQzLocation(qz);
qz.setVisible(true);
public void setQzLocation(Qizi qz) {
int x0, y0;
x0 = qz.getCoordinateX();
y0 = qz.getCoordinateY();
if (boardReversed) {
x0 = 8 - x0;
y0 = 9 - y0;
qz.setLocation((int) (lineLoc + (x0 - 0.45) * boardGridSize),
(int) (lineLoc + (9 - y0 - 0.45) * boardGridSize));
public boolean undo() {
int oldSrc = activeBoard.lastMove().
int oldDst = activeBoard.lastMove().
int oldCap = activeBoard.lastMove().
if (oldSrc & 0 || oldDst & 0) {
(&End of undo!!.&);
activeBoard.undoMove();
translation.moveCurrentToHis();
if (lastSelected != null) {
lastSelected.setBorderPainted(false);
lastSelected = pieceIndex[oldDst];
lastSelected.setBorderPainted(true);
changeLocation(lastSelected, oldSrc / 10, oldSrc % 10);
if (oldCap != 0) {
pieceIndex[oldDst] = capturedArr.remove(capturedArr.size() - 1);
pieceIndex[oldDst].setVisible(true);
public boolean redo() {
MoveNode tmpMove = translation.getHisMoveStruct();
if (tmpMove != null) {
int src = tmpMove.
int dst = tmpMove.
movePiece(src, dst, false);
translation.moveHisToCurrent();
(&end of redo&);
public void setAQizi(Qizi srcQz, int x, int y) {
pieceIndex[x * 10 + y] = srcQz;
srcQz.setCoordinate(x, y);
public void changeLocation(Qizi srcQz, int dstX, int dstY) {
// if dst has a qizi, move it to captured place[dst][1] and set to
// visible to false
int src = srcQz.getCoordinate();
int dst = dstX * 10 + dstY;
if (pieceIndex[dst] != null) {
pieceIndex[dst].setVisible(false);
capturedArr.add(pieceIndex[dst]);
pieceIndex[dst] =
pieceIndex[dst] = srcQz;
pieceIndex[dst].setCoordinate(dstX, dstY);
setQzLocation(pieceIndex[dst]);
pieceIndex[dst].setBorderPainted(true);
pieceIndex[src] =
// for mouseAction
public boolean movePiece(Qizi qz, int dstX, int dstY, boolean needSave) {
if (qz == null)
int srcX = qz.getCoordinateX(), srcY = qz.getCoordinateY();
AllMoves.GenMoves(activeBoard, HisTable);
MoveNode tmpMove =
int tmpSrc, tmpDst, moveNum = AllMoves.MoveN
for (int i = 0; i & moveN i++) {
tmpSrc = AllMoves.MoveList[i].
tmpDst = AllMoves.MoveList[i].
if (tmpSrc == srcX * 10 + srcY && tmpDst == dstX * 10 + dstY) {
BitBoard pieceBoard = (activeBoard.getPieceBits(qz
.getPieceType())).getLeftShift(0);// copy to
// pieceBoard
tmpMove = new MoveNode(tmpSrc, tmpDst);
if (activeBoard.movePiece(tmpMove)) {
if (needSave)
translation.addMoveInfo(pieceBoard, qz, dstX, dstY);
(translation.getEMoveStr() + &
+ translation.getCMoveStr());
if (isFirstStep) {
timeRule.resetTimeAndBeginCount();
isFirstStep =
// for remoteMove computer Move or redo or undo
public void movePiece(int src, int dst, boolean needSave) {
Qizi qz = pieceIndex[src];
int dstX = dst / 10;
int dstY = dst % 10;
if (qz == null)
if (lastSelected != null) {
lastSelected.setBorderPainted(false);
if (movePiece(qz, dst / 10, dst % 10, needSave)) {
// if true, model data and other information are saved,
// following is to alter the view
changeLocation(qz, dst / 10, dst % 10);
lastSelected =
timeRule.updateTotalTime(player);
player = 1 -
public void decideFailer() {
// send lose message
AllMoves.GenMoves(activeBoard, HisTable);
for (int i = 0; i & AllMoves.MoveN i++) {
MoveNode tmp = AllMoves.MoveList[i];
if (activeBoard.movePiece(tmp)) {
activeBoard.undoMove();
if (activeBoard.getPlayer() == 0)
producer.send(new ChessMessage(Header.RED_FAILED, null, true));
producer.send(new ChessMessage(Header.BLACK_FAILED, null, true));
public boolean ignoreMouseAction(Object eventSource) {
if (computerIsThingking && eventSource!=button_cmpMove) {
outputInfo(&cannot take any action,computer is thingking&);
if (started) {
if (eventSource == button_start || eventSource == button_setRule
|| eventSource == button_setSysCfg
|| eventSource == button_getConnect)
if (eventSource instanceof Qizi)
if (!started)
if (sysCfg.getBattleModel() == 2) {
// network
if (eventSource == button_cmpMove || eventSource == button_endStep
|| eventSource == button_preStep
|| eventSource == button_resetAll
|| eventSource == button_turnBack
|| eventSource == button_nextStep)
if (eventSource instanceof Qizi) {
Qizi tmp = (Qizi) eventS
int rb1 = (tmp.getPieceType() & 7 ? 0 : 1);
if (player != sysCfg.getSelectedRb())
if (rb1 != sysCfg.getSelectedRb()) {
if (lastSelected == null)
if (eventSource == pictureBoard) {
if (lastSelected != null) {
int rb2 = (lastSelected.getPieceType() & 7 ? 0 : 1);
if (rb2 != sysCfg.getSelectedRb())
public void afterMoved(boolean mouseAction) {
if (mouseAction) {
src = activeBoard.lastMove().
dst = activeBoard.lastMove().
producer.send(new ChessMessage(Header.PIECE_MOVEED,
src + &-& + dst, true));
decideFailer();
private void setTimeRule(TimeRuleConfig trc) {
SetRuleDialog.createAndDisplay(this, trc, true, null);
private void setSysCfgInfo(SysConfigInfo scfi) {
SetSysCfgDialog.createAndDisplay(this, scfi, true, &设置系统信息&);
private void displayTimeRule(TimeRuleConfig trc, String title) {
SetRuleDialog.createAndDisplay(this, trc, false, title);
private int showMessageBox(String showmsg) {
return JOptionPane.showConfirmDialog(ChessMainFrame.this, showmsg,
&Information&, JOptionPane.YES_NO_OPTION);
public void resizePictureBoard(int newSize) {
setBoardGridSize(newSize);
clearPicturePieces();
content.remove(pictureBoard);
pictureBoard.setBoardGridSize(newSize);
this.repaint();
initPictureBoardAndPieces();
private void resetAll() {
if (sysCfg.getBattleModel() == 2)
sysCfg.setSelectedRb(1 - sysCfg.getSelectedRb());
timeRule.paulseCount();
clearPicturePieces();
initActiveBoard();
translation = new Translation();
// resizePictureBoard(30);
msgQueue.removeAll();
initPictureBoardAndPieces();
displayAllQizi();
textField_redTime.setText(&red:&);
textField_blackTime.setText(&black:&);
isFirstStep =
loadBook(&./data/book.txt&);
private void outputInfo(String info) {
noteinfo.setText(info);
private void computerMove() {
if (button_cmpMove.getText() == &Computer&) {
button_cmpMove.setText(&Stop&);
new Thread() {
public void run() {
computerIsThingking =
outputInfo(&Computer is thinking...&);
// ActiveBoard
// tmpactive=(ActiveBoard)ObjectCopyer.getACopy(activeBoard);
searchEngine.setActiveBoard(activeBoard);
MoveNode bestMove=
bestMove = searchEngine.getBestMove();
} catch (LostException e) {
e.printStackTrace();
button_cmpMove.setText(&Computer&);
if (bestMove == null) {
outputInfo(&Computer cannot find best Move!!!&);
button_cmpMove.setEnabled(true);
// if(boardChangedWhenComputerIsThingking){
// reloadPreActiveBoard(tmpactive);
movePiece(bestMove.src, bestMove.dst, true);
afterMoved(false);
outputInfo(&computer moved:&
+ String.copyValueOf(bestMove.location())
+ &轮到你走棋,快点!&);
computerIsThingking =
}.start();
searchEngine.stopSearch();
button_cmpMove.setText(&Computer&);
/***************************************************************************
* private class section.
**************************************************************************/
private class ConnectActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (ignoreMouseAction(e.getSource()))
if (sysCfg.getSelectedSc() == 1) {
netConnection.setPointAsServer(sysCfg.getPortNum());
(&Server started!!&);
netConnection.setPointAsClient(sysCfg.getIpAddress(), sysCfg
.getPortNum());
(&Client started!!&);
new Thread() {
public void run() {
netConnection.createConnection();
if (netConnection.available()) {
(&Server and Client connected!&);
(&Starting outReceiver&);
outReceiver.setConnection(netConnection);
outReceiver.startReceiveData();
readyToPlay.setConnectionReady(true);
competitorStarted =
if (sysCfg.getSelectedSc() == 1) {
// as server
outSender.send(new ChessMessage(Header.SYSINFO,
sysCfg, false));
}.start();
private class LocalMessageListener implements MessageListener {
public void onMessage(Message msg) {
if (!msg.isLocalMessage())
Header head = msg.getMessageHeader();
Object body = msg.getMessageBody();
if (head.equals(Header.CHART)) {
// sendout
} else if (head.equals(Header.PIECE_MOVEED)) {
if (outSender.available()) {
outSender.send(new ChessMessage(head, body, false));
} else if (head.equals(Header.RED_TIME_USED)
|| head.equals(Header.RED_FAILED)) {
System.err.println(&RED LOST!!!!!!!!!!!!!!&);
int n = showMessageBox(&红方输了,是否保存?&);
if (n == JOptionPane.YES_OPTION)
saveFile();
resetAll();
// button_openFile.getActionListeners()[0].actionPerformed(new
// ActionEvent(button_openFile,12324,&ffff&));
} else if (head.equals(Header.BLACK_TIME_USED)
|| head.equals(Header.BLACK_FAILED)) {
System.err.println(&BLACK LOST!!!!!!!!!!!!!!&);
int n = showMessageBox(&黑方输了,是否保存?&);
if (n == JOptionPane.YES_OPTION)
saveFile();
resetAll();
private class RemoteMessageListener implements MessageListener {
public void onMessage(Message msg) {
if (msg.isLocalMessage())
if (!outSender.available())
Header head = msg.getMessageHeader();
Object body = msg.getMessageBody();
if (head.equals(Header.SET_TIME_RULE)) {
System.err.println(&received time rule from competitor!&);
displayTimeRule((TimeRuleConfig) body, &协商规则&);
int n = showMessageBox(&Do you agree the time rule ?&);
if (n == JOptionPane.YES_OPTION) {
timeRuleConfig = (TimeRuleConfig)
timeRule.resetTimeRule(timeRuleConfig);
readyToPlay.setTimeRuleReady(true);
outSender.send(new ChessMessage(Header.AGREE, null, false));
System.err
.println(&send a message of disagree on time rule from competitor!&);
outSender.send(new ChessMessage(Header.DISAGREE, null,
} else if (head.equals(Header.AGREE)) {
readyToPlay.setTimeRuleReady(true);
timeRule.resetTimeRule(timeRuleConfig);
showMessageBox(&Competitor agreed!!!&);
} else if (head.equals(Header.DISAGREE)) {
showMessageBox(&Competitor disagree!!!!!&);
} else if (head.equals(Header.SYSINFO)) {
competitorStarted =
readyToPlay.setSysCfgReady(true);
SysConfigInfo cpt = (SysConfigInfo)
competitorName = cpt.getUserName();
(&Competitor name& + competitorName);
sysCfg.setSelectedRb(1 - cpt.getSelectedRb());
} else if (head.equals(Header.PIECE_MOVEED)) {
String tmpStr = (String)
int src = Integer.parseInt(tmpStr.substring(0, tmpStr
.indexOf('-')));
int dst = Integer.parseInt(tmpStr
.substring(tmpStr.indexOf('-') + 1));
// (&receive a Message to move!&);
movePiece(src, dst, true);
afterMoved(false);
/***************************************************************************
* for set time rule, display time rule,set syscfg and start Button
**************************************************************************/
private class SysInfoButtonsListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
// button_setRull
if (ignoreMouseAction(e.getSource()))
if (e.getActionCommand().equals(SET_RULE_COMMAND)) {
setTimeRule(timeRuleConfig);
timeRule.resetTimeRule(timeRuleConfig);
timeRule.getPlayerTimer().setNeedCount(true);
if (sysCfg.getBattleModel() == 2)// network
outSender.send(new ChessMessage(Header.SET_TIME_RULE,
timeRuleConfig, false));
readyToPlay.setTimeRuleReady(true);
// button_displayRule
if (e.getActionCommand().equals(DISPLAY_RULE_COMMAND)) {
displayTimeRule(timeRuleConfig, &现在所用的规则&);
// button_start
if (e.getSource() == button_start) {
if (!readyToPlay.isTimeRuleReady()) {
timeRule.resetToDefault();
readyToPlay.setTimeRuleReady(true);
if (readyToPlay.canPlay()) {
if (view != sysCfg.getSelectedRb())
reverseBoard();
// button_setSysCfg
if (e.getSource() == button_setSysCfg) {
if (started)
setSysCfgInfo(sysCfg);
if (sysCfg.getBattleModel() == 2) {
// network battle
button_getConnect.setEnabled(true);
readyToPlay.setConnectionReady(true);
// newBoard.setMovableQz(3);
button_getConnect.setEnabled(false);
competitorStarted =
readyToPlay.setSysCfgReady(true);
private class PictureBoardMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
if (ignoreMouseAction(e.getSource()))
int x = e.getX();
int y = e.getY();
Dimension d = pictureBoard.getXYCoordinate(x, y);
if (boardReversed) {
pictureBoard.test.setText(&x=& + x + &,y=& + y);
if (lastSelected != null) {
int src = lastSelected.getCoordinate();
if (movePiece(lastSelected, x, y, true)) {
changeLocation(lastSelected, x, y);
if (sysCfg.getBattleModel() == 3) {
computerMove();
timeRule.updateTotalTime(player);
player = 1 -
afterMoved(true);
private class PieceMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
// (((Qizi)e.getSource()).getCoordinate());
if (ignoreMouseAction(e.getSource()))
if (lastSelected == null) {
lastSelected = (Qizi) e.getSource();
lastSelected.setBorderPainted(true);
Qizi tmpQizi = (Qizi) e.getSource();
int x1 = tmpQizi.getCoordinateX();
int y1 = tmpQizi.getCoordinateY();
int src = lastSelected.getCoordinate();
if (movePiece(lastSelected, x1, y1, true)) {
changeLocation(lastSelected, x1, y1);
if (sysCfg.getBattleModel() == 3) {
computerMove();
timeRule.updateTotalTime(player);
player = 1 -
afterMoved(true);
lastSelected.setBorderPainted(false);
lastSelected = tmpQ
lastSelected.setBorderPainted(true);
private class OpenSaveButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
// Handle open button action.
if (ignoreMouseAction(e.getSource()))
if (e.getSource() == button_openFile) {
openFile();
// Handle save button action.
} else if (e.getSource() == button_saveFile) {
saveFile();
/***************************************************************************
* for lastButton,nextButton,turnBack,computerStop,resetAllBt
**************************************************************************/
private class LastNextTurnBackButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (ignoreMouseAction(e.getSource()))
if (e.getSource() == button_preStep) {
} else if (e.getSource() == button_nextStep) {
} else if (e.getSource() == button_turnBack) {
(&Turn back!!(need rewrite!!&);
} else if (e.getSource() == button_cmpMove) {
computerMove();
} else if (e.getSource() == button_endStep) {
if (translation.getHisMoveStruct() != null) {
while (redo())
while (undo())
} else if (e.getSource() == button_resetAll) {
(&reset all&);
resetAll();
private class TimeCounter implements PlayerTimer {
private boolean needC
private String displayS
public TimeCounter() {
this.needCount =
public void setNeedCount(boolean needCount) {
this.needCount = needC
public boolean isNeedCount() {
return needC
public void Display() {
displayStr = timeRule
.getDisplayString(timeRule.getUsedTime(player));
if (player == 0) {
textField_redTime.setText(&red:& + displayStr);
textField_blackTime.setText(&black:& + displayStr);
public int getCurrentPlayer() {
/***************************************************************************
* Following is getters and setters
**************************************************************************/
public int getBoardGridSize() {
return boardGridS
private void openFile() {
int returnVal = fileChooserButton.showOpenDialog(ChessMainFrame.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fileChooserButton.getSelectedFile();
resetAll();
getTranslation().loadFromFile(file);
} catch (IOException e1) {
e1.printStackTrace();
(file.getAbsolutePath());
private void saveFile() {
int returnVal = fileChooserButton.showSaveDialog(ChessMainFrame.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fileChooserButton.getSelectedFile();
(file.getAbsolutePath());
translation.saveToFile(file);
} catch (IOException e1) {
e1.printStackTrace();
// This is where a real application would save the file.
public void setBoardGridSize(int boardGridSize) {
this.boardGridSize = boardGridS
lineLoc = boardGridSize * 2 / 3;
public int getView() {
public void setView(int view) {
this.view =
public JButton getButton_cmpMove() {
if (button_cmpMove == null) {
button_cmpMove = new JButton(&Computer&);
button_cmpMove.setSize(90, 25);
button_cmpMove.setBorder(BorderFactory.createRaisedBevelBorder());
button_cmpMove.addActionListener(lnt);
return button_cmpM
public JButton getButton_displayRule() {
if (button_displayRule == null) {
button_displayRule = new JButton(&displayRule&);
button_displayRule.setSize(90, 25);
button_displayRule.setMargin(new Insets(1, 1, 1, 1));
button_displayRule.setBorder(BorderFactory
.createRaisedBevelBorder());
button_displayRule.setActionCommand(DISPLAY_RULE_COMMAND);
button_displayRule.addActionListener(sral);
return button_displayR
public JButton getButton_getConnect() {
if (button_getConnect == null) {
button_getConnect = new JButton(&connect&);
button_getConnect.setSize(90, 25);
button_getConnect.setEnabled(false);
button_getConnect
.setBorder(BorderFactory.createRaisedBevelBorder());
button_getConnect.addActionListener(connectListener);
return button_getC
public JButton getButton_openFile() {
if (button_openFile == null) {
button_openFile = new JButton(&Read&);
button_openFile.setSize(90, 25);
button_openFile.setMnemonic(KeyEvent.VK_R);
button_openFile.setBorder(BorderFactory.createRaisedBevelBorder());
button_openFile.addActionListener(fhl);
return button_openF
public JButton getButton_resetAll() {
if (button_resetAll == null) {
button_resetAll = new JButton(&resetAll&);
button_resetAll.setSize(90, 25);
button_resetAll.setBorder(BorderFactory.createRaisedBevelBorder());
button_resetAll.addActionListener(lnt);
return button_resetA
public JButton getButton_reverseBoard() {
if (button_reverseBoard == null) {
button_reverseBoard = new JButton(&Reverse&);
button_reverseBoard.setSize(90, 25);
button_reverseBoard.setBorder(BorderFactory
.createRaisedBevelBorder());
button_reverseBoard.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
reverseBoard();
return button_reverseB
public JButton getButton_saveFile() {
if (button_saveFile == null) {
button_saveFile = new JButton(&Save&);
button_saveFile.setSize(90, 25);
button_saveFile.setMnemonic(KeyEvent.VK_S);
button_saveFile.setBorder(BorderFactory.createRaisedBevelBorder());
button_saveFile.addActionListener(fhl);
return button_saveF
public JButton getButton_setRule() {
if (button_setRule == null) {
button_setRule = new JButton(&set rule&);
button_setRule.setSize(90, 25);
button_setRule.setBorder(BorderFactory.createRaisedBevelBorder());
button_setRule.setActionCommand(SET_RULE_COMMAND);
button_setRule.addActionListener(sral);
return button_setR
public JButton getButton_setSysCfg() {
if (button_setSysCfg == null) {
button_setSysCfg = new JButton(&Setting&);
button_setSysCfg.setSize(90, 25);
button_setSysCfg.setBorder(BorderFactory.createRaisedBevelBorder());
button_setSysCfg.addActionListener(sral);
return button_setSysC
public JButton getButton_start() {
if (button_start == null) {
button_start = new JButton(&start&);
button_start.setActionCommand(&start&);
button_start.setSize(90, 25);
button_start.setBorder(BorderFactory.createRaisedBevelBorder());
button_start.addActionListener(sral);
return button_
public JButton getButton_turnBack() {
if (button_turnBack == null) {
button_turnBack = new JButton(&back&);
button_turnBack.setSize(90, 25);
button_turnBack.setMnemonic(KeyEvent.VK_B);
button_turnBack.setBorder(BorderFactory.createRaisedBevelBorder());
button_turnBack.addActionListener(lnt);
return button_turnB
public JButton getButton_endStep() {
if (button_endStep == null) {
Image endImage = Toolkit.getDefaultToolkit().getImage(
&./image/end.gif&);
Image endImage1 = Toolkit.getDefaultToolkit().getImage(
&./image/end1.gif&);
button_endStep = new JButton();
button_endStep.setSize(21, 21);
button_endStep.setIcon(new ImageIcon(endImage));
button_endStep.setBorder(BorderFactory.createRaisedBevelBorder());
button_endStep.setPressedIcon(new ImageIcon(endImage1));
button_endStep.addActionListener(lnt);
return button_endS
public JButton getButton_nextStep() {
if (button_nextStep == null) {
Image rightImage = Toolkit.getDefaultToolkit().getImage(
&./image/right.gif&);
Image rightImage1 = Toolkit.getDefaultToolkit().getImage(
&./image/right1.gif&);
button_nextStep = new JButton();
button_nextStep.setSize(21, 21);
button_nextStep.setIcon(new ImageIcon(rightImage));
button_nextStep.setBorder(BorderFactory.createRaisedBevelBorder());
button_nextStep.setPressedIcon(new ImageIcon(rightImage1));
button_nextStep.addActionListener(lnt);
return button_nextS
public JButton getButton_preStep() {
if (button_preStep == null) {
Image leftImage = Toolkit.getDefaultToolkit().getImage(
&./image/left.gif&);
Image leftImage1 = Toolkit.getDefaultToolkit().getImage(
&./image/left1.gif&);
button_preStep = new JButton();
button_preStep.setSize(21, 21);
button_preStep.setIcon(new ImageIcon(leftImage));
button_preStep.setBorder(BorderFactory.createRaisedBevelBorder());
button_preStep.setPressedIcon(new ImageIcon(leftImage1));
button_preStep.addActionListener(lnt);
return button_preS
public JPanel getPanel0() {
if (panel0 == null) {
panel0 = new JPanel();
panel0.setSize(100, 125);
panel0.setLayout(null);
panel0.setBorder(BorderFactory.createEtchedBorder());
getButton_turnBack().setLocation(5, 5);
getButton_saveFile().setLocation(5, 35);
getButton_openFile().setLocation(5, 65);
getButton_preStep().setLocation(5, 95);
getButton_endStep().setLocation(35, 95);
getButton_nextStep().setLocation(70, 95);
panel0.add(button_turnBack);
panel0.add(button_saveFile);
panel0.add(button_openFile);
panel0.add(button_preStep);
panel0.add(button_endStep);
panel0.add(button_nextStep);
return panel0;
public JPanel getPanel1() {
if (panel1 == null) {
panel1 = new JPanel();
panel1.setLayout(null);
panel1.setSize(100, 65);
panel1.setBorder(BorderFactory.createEtchedBorder());
getButton_setSysCfg().setLocation(5, 5);
getButton_resetAll().setLocation(5, 35);
panel1.add(button_setSysCfg);
panel1.add(button_resetAll);
return panel1;
public JPanel getPanel2() {
if (panel2 == null) {
panel2 = new JPanel();
panel2.setLayout(null);
panel2.setSize(100, 65);
panel2.setBorder(BorderFactory.createEtchedBorder());
getButton_reverseBoard().setLocation(5, 5);
getButton_cmpMove().setLocation(5, 35);
panel2.add(button_reverseBoard);
panel2.add(button_cmpMove);
return panel2;
public JPanel getPanel3() {
if (panel3 == null) {
panel3 = new JPanel();
panel3.setBorder(BorderFactory.createEtchedBorder());
panel3.setLayout(null);
panel3.setSize(100, 125);
getButton_getConnect().setLocation(5, 5);
getButton_setRule().setLocation(5, 35);
getButton_displayRule().setLocation(5, 65);
getButton_start().setLocation(5, 95);
panel3.add(button_getConnect);
panel3.add(button_setRule);
panel3.add(button_displayRule);
panel3.add(button_start);
return panel3;
public JPanel getPanel4() {
if (panel4 == null) {
panel4 = new JPanel();
panel4.setBorder(BorderFactory.createEtchedBorder());
panel4.setLayout(null);
panel4.setSize(100, 65);
textField_redTime = new JTextField(&redTime&);
textField_blackTime = new JTextField(&blackTime&);
textField_redTime.setEditable(false);
textField_blackTime.setEditable(false);
textField_redTime.setSize(90, 25);
textField_blackTime.setSize(90, 25);
textField_redTime.setLocation(5, 5);
textField_blackTime.setLocation(5, 35);
panel4.add(textField_redTime);
panel4.add(textField_blackTime);
return panel4;
public PictureBoard getPictureBoard() {
if (pictureBoard == null) {
pictureBoard = new PictureBoard();
pictureBoard.setBoardGridSize(boardGridSize);
pictureBoard.setBounds(0, 0, boardGridSize * 28 / 3,
boardGridSize * 32 / 3);
pictureBoard.setOpaque(false);
pictureBoard.addMouseListener(new PictureBoardMouseListener());
return pictureB
public void setPictureBoard(PictureBoard pictureBoard) {
this.pictureBoard = pictureB
public ActiveBoard getActiveBoard() {
if (activeBoard == null)
activeBoard = new ActiveBoard();
return activeB
public SearchEngine getSearchEngine() {
if (searchEngine == null) {
searchEngine = new SearchEngine();
searchEngine.setupControl(6, SearchEngine.CLOCK_S * 20,
SearchEngine.CLOCK_M * 10);
return searchE
public Translation getTranslation() {
if (translation == null)
translation = new Translation();
public JLabel getNoteinfo() {
if (noteinfo == null) {
noteinfo = new JLabel(&请注意此处的提示信息!&);
noteinfo.setForeground(Color.RED);
noteinfo.setFont(getFont());
} // @jve:decl-index=0:visual-constraint=&4,10&
源码下载: &
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
名称大小日期
&MANIFEST.MF68.00 B10-01-06 03:05
&&META-INF&0.00 B10-01-06 03:09
&Qizi.class3.49 kB09-01-06 23:43
&PieceArray.class1.09 kB09-01-06 23:42
&PieceFactory.class2.84 kB10-01-06 02:47
&PiecesObject.class2.20 kB10-01-06 02:37
&GetGiFData.class3.06 kB10-01-06 02:24
&MoveInfo.class1.18 kB09-01-06 23:42
&InvalidMoveException.class384.00 B09-01-06 23:42
&&pieces&0.00 B10-01-06 03:09
&ChessMessageQueue.class1.06 kB09-01-06 23:41
&PieceMessageDeliver.class2.71 kB09-01-06 23:41
&MessageConsumer.class1.29 kB09-01-06 23:41
&ChessMessage.class1.10 kB09-01-06 23:41
&MessageProducer.class1.04 kB09-01-06 23:41
&&impl&0.00 B10-01-06 03:09
&Consumer.class271.00 B09-01-06 23:41
&MessageListener.class184.00 B09-01-06 23:41
&Producer.class229.00 B09-01-06 23:41
&Message.class389.00 B09-01-06 23:41
&MessageQueue.class285.00 B09-01-06 23:41
&MessageDeliver.class278.00 B09-01-06 23:41
&MessageQueueNotSetException.class405.00 B09-01-06 23:41
&Header.class1.37 kB09-01-06 23:41
&MultiClientServer.class374.00 B09-01-06 23:40
&OuterMsgReceiver.class2.40 kB09-01-06 23:41
&ObjectCopyer.class2.21 kB09-01-06 23:41
&Connection.class242.00 B09-01-06 23:40
&OuterMsgSender.class1.32 kB09-01-06 23:41
&MsgNetConnection.class4.14 kB09-01-06 23:40
&Client.class2.04 kB09-01-06 23:40
&Server.class2.16 kB09-01-06 23:40
&&support&0.00 B10-01-06 03:09
&&message&0.00 B10-01-06 03:09
&PreMoveNodesGen.class8.12 kB09-01-06 23:39
&CCEvalue.class2.52 kB09-01-06 23:39
&MoveNode.class1.58 kB09-01-06 23:39
&EngineOption.class405.00 B09-01-06 23:39
&BitBoard.class6.14 kB09-01-06 23:39
&TestNumShift.class1.06 kB09-01-06 23:39
&SortedMoveNodes.class8.81 kB09-01-06 23:39
&BookRecord.class444.00 B09-01-06 23:39
&HashRecord.class562.00 B09-01-06 23:39
&KillerStruct.class504.00 B09-01-06 23:39
&SearchEngine.class17.29 kB09-01-06 23:39
&ActiveBoard.class13.87 kB09-01-06 23:39
&LostException.class363.00 B09-01-06 23:39
&&engine&0.00 B10-01-06 03:09
&ChessMainFrame$1.class2.36 kB09-01-06 23:44
&ChessMainFrame$2.class679.00 B09-01-06 23:44
&ChessMainFrame$3.class2.08 kB09-01-06 23:44
&ChessMainFrame$4.class724.00 B09-01-06 23:44
&ChessMainFrame$ConnectActionListener.class1.92 kB09-01-06 23:44
&ChessMainFrame$LastNextTurnBackButtonListener.class1.78 kB09-01-06 23:44
&ChessMainFrame$LocalMessageListener.class2.15 kB09-01-06 23:44
&ChessMainFrame$OpenSaveButtonListener.class1.08 kB09-01-06 23:44
&ChessMainFrame$PictureBoardMouseListener.class2.57 kB09-01-06 23:44
&ChessMainFrame$PieceMouseListener.class2.08 kB09-01-06 23:44
&ChessMainFrame$RemoteMessageListener.class4.22 kB09-01-06 23:44
&ChessMainFrame$SysInfoButtonsListener.class3.41 kB09-01-06 23:44
&ChessMainFrame$TimeCounter.class1.69 kB09-01-06 23:44
&ChessMainFrame.class30.85 kB09-01-06 23:44
&ChessApp.class609.00 B09-01-06 23:43
&SetSysCfgDialog$ButtonActionListener.class1.52 kB09-01-06 23:44
&SetSysCfgDialog$ModelRbListener.class1.26 kB09-01-06 23:44
&SetSysCfgDialog$ServerClientRbListener.class1.23 kB09-01-06 23:44
&SetSysCfgDialog.class7.61 kB09-01-06 23:44
&ReadyToPlay.class1.42 kB09-01-06 23:43
&SetRuleDialog$ButtonActionListener.class1.50 kB09-01-06 23:44
&SetRuleDialog.class5.61 kB09-01-06 23:44
&PictureBoard.class5.23 kB09-01-06 23:43
&SCREEN.class1.41 kB09-01-06 23:43
&Translation$1.class796.00 B09-01-06 23:43
&Translation.class21.70 kB09-01-06 23:43
&SysConfigInfo.class1.71 kB09-01-06 23:44
&CannotGetAgreeOnMoreThanThreeTimes.class441.00 B09-01-06 23:43
&&main&0.00 B10-01-06 03:09
&TimeExhaustedException.class386.00 B09-01-06 23:44
&Rule.class561.00 B09-01-06 23:44
&TimeRule.class4.42 kB09-01-06 23:44
&TimeRuleConfig.class794.00 B09-01-06 23:44
&PlayerTimer.class234.00 B09-01-06 23:44
&&rule&0.00 B10-01-06 03:09
&&acerge&0.00 B10-01-06 03:09
&&org&0.00 B10-01-06 03:09
&9.02 MB05-01-06 10:31
&pieceObj82.18 kB10-01-06 02:36
&&data&0.00 B10-01-06 03:09
&382.00 B05-01-06 10:31
&winer1,020.00 B05-01-06 10:31
&xyc002.QP968.00 B08-01-06 18:47
&xyc004.QP1.03 kB05-01-06 10:31
&xyc005.QP1.83 kB05-01-06 10:31
&&save&0.00 B10-01-06 03:09
&18.58 kB10-01-06 03:08
&7.60 kB10-01-06 03:08
&3.26 kB10-01-06 03:08
&302.00 B10-01-06 03:08
&365.00 B10-01-06 03:08
&1.10 kB10-01-06 03:08
&14.93 kB10-01-06 03:08
&28.18 kB10-01-06 03:08
&13.98 kB10-01-06 03:08
&3.13 kB10-01-06 03:08
&&engine&0.00 B10-01-06 03:08
&438.00 B10-01-06 03:08
&344.00 B10-01-06 03:08
&36.38 kB10-01-06 03:08
&5.50 kB10-01-06 03:08
&1.38 kB10-01-06 03:08
&717.00 B10-01-06 03:08
&6.06 kB10-01-06 03:08
&8.58 kB10-01-06 03:08
&1.43 kB10-01-06 03:08
&27.53 kB10-01-06 03:08
&&main&0.00 B10-01-06 03:08
&226.00 B10-01-06 03:08
&1.03 kB10-01-06 03:08
&307.00 B10-01-06 03:08
&214.00 B10-01-06 03:08
&108.00 B10-01-06 03:08
&194.00 B10-01-06 03:08
&176.00 B10-01-06 03:08
&146.00 B10-01-06 03:08
&676.00 B10-01-06 03:08
&607.00 B10-01-06 03:08
&765.00 B10-01-06 03:08
&613.00 B10-01-06 03:08
&1.48 kB10-01-06 03:08
&&impl&0.00 B10-01-06 03:08
&1.47 kB10-01-06 03:08
&441.00 B10-01-06 03:08
&2.84 kB10-01-06 03:08
&151.00 B10-01-06 03:08
&1.44 kB10-01-06 03:08
&1.79 kB10-01-06 03:08
&724.00 B10-01-06 03:08
&1.31 kB10-01-06 03:08
&&support&0.00 B10-01-06 03:08
&&message&0.00 B10-01-06 03:08
&2.62 kB10-01-06 03:08
&261.00 B10-01-06 03:08
&798.00 B10-01-06 03:08
&838.00 B10-01-06 03:08
&3.26 kB10-01-06 03:08
&1.54 kB10-01-06 03:08
&2.60 kB10-01-06 03:08
&&pieces&0.00 B10-01-06 03:08
&200.00 B10-01-06 03:08
&654.00 B10-01-06 03:08
&381.00 B10-01-06 03:08
&3.56 kB10-01-06 03:08
&592.00 B10-01-06 03:08
&&rule&0.00 B10-01-06 03:08
&&acerge&0.00 B10-01-06 03:08
&&org&0.00 B10-01-06 03:08
&&CChess&0.00 B10-01-06 03:08
&&src&0.00 B10-01-06 03:09
&72.00 B09-01-06 21:43
&73.00 B09-01-06 21:47
&1,017.00 B09-01-06 22:48
&commons-logging.jar37.12 kB08-07-04 21:16
&&cchess&0.00 B10-01-06 03:09
Sponsored links
23 篇源代码 21 篇源代码 18 篇源代码 13 篇源代码 9 篇源代码
285 篇源代码 173 篇源代码 48 篇源代码 42 篇源代码 36 篇源代码
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
CF仔没有找到您要的代码,请去留下您的问题吧,可能会有大神帮助你哦!
该用户暂时未开通博客
请按 Ctrl+D 键添加到收藏夹。

我要回帖

更多关于 国际象棋游戏下载 的文章

 

随机推荐