# 国际象棋手册

## 介绍

### 概述

国际象棋是一个双人战略棋类游戏。国际象棋有2D/3D模式，游戏可以是双人之间和电脑之间，它可以为玩家检测已知的第三方引擎。游戏最初由 Robert Ancell 开发，现在包含在 GNOME 游戏软件包内。

国际象棋使用 Python 语言编写，采用 GTK+ 和 Cairo 绘制棋盘。可选择 OpenGL 3D 支持模式，使用 Python OpenGL 和 GtkGLExt 库。作为一个现代3D程序，推荐使用硬件加速，但软件模式应该也是好的。国际象棋作为默认的人工智能棋类游戏捆绑在 GNU 游戏包中。它还有网络对战模式，可以在互联网上与其他人进行游戏。

国际象棋的棋盘是正方形的，有64个格子颜色相互交替。每一方有16个棋子：一个王、一个后、两个车、两个马、两个象和8个兵。一方控制白棋另一方控制黑棋，白棋一方先走，双方轮流走棋，当移动时“吃掉”了对方的棋子，就要把它从棋盘上拿走。获胜的条件是把对方的王将死，这时候的王正在被攻击且无处可逃。这个游戏一发明，就形成了广泛的战术策略。

现代游戏从十五世纪后半叶欧洲南部类似游戏发展而来，更古老的游戏起源于亚洲。国际象棋是一个世界范围内最流行的棋类之一。传统的竞技比赛开始于十六世纪，第一个世界冠军，维尔赫姆.斯坦尼茨在1886年获得冠军头衔，弗拉基米尔·鲍里索维奇·克拉姆尼克获得第14届世界冠军。还有一个每两年一次的世界性比赛称作国际象棋奥林匹克。自从20世纪以来，两个国际组织，世界国际象棋联合会和国际象棋国际通信赛协会组织和举办了顶级比赛和通信赛。

早期的电脑专家想创建一个国际象棋游戏机，现在国际象棋在电脑程序中已经深入开发。1997年，一场人机大战在加里·卡斯帕罗夫和 IBM 超级电脑“深蓝”对弈，证明电脑甚至可以击败最强大的人类棋手。

要运行国际象棋，点 主菜单，再在 游戏 菜单中，选择 国际象棋。或者在命令行输入：`glchess`

## 玩国际象棋小游戏

### 游戏主窗口

启动国际象棋，显示下图所示的主窗口。游戏中使用鼠标移动棋子，每一方轮流移动自己的棋子，从棋盘的一个位置移动到另一个位置。主窗口分为三个区域：顶部是菜单和工具栏，进行最常用的游戏操作。中间是棋盘，这里可以用鼠标移动棋子。最下面是游戏历史记录区域，提供走棋的记录，点击下拉按钮可以查看前面走的每一步棋。

#### 国际象棋的主窗口

Main window in glChess.

### 开始一个新的游戏

要开始一个新的游戏，点工具栏上的新游戏按钮，出来一个新游戏对话框，您可以设置新游戏的各项设置。在游戏属性区域，设置游戏名称、每一步的时间限制等选项。在玩家区域，可以设置人类或电脑玩家，如果您安装了其他国际象棋机器人 AI 程序，也会显示在这个列表中。最后的难度区域，是设置机器人的难度级别。

#### 新游戏对话框

Start new game dialog for glChess.

### 菜单

菜单栏位于主窗口的顶部，包含下列菜单项：

Game

- This menu contains:

  - Ctrl+N New This starts a new game of Chess.

  - Ctrl+O Open Loads a previously saved game.

  - Ctrl+S Save Saves the current game of chess.

  - Save As Saves the current game of chess with a new filename.

  - Ctrl+L Network Game This starts a network multiplayer game using GGZ Gaming Zone.

  - Resign To concede loss of the game, so that the opponent wins the game.

  - Claim Draw If a claimed draw is accepted, the game ends without victory for either player.

  - Ctrl+Q Quit Ends the game.

View

- This menu contains:

  - F11 Fullscreen Shows the game window in fullscreen mode.

  - 3D Chess View Enables 3D chess view mode using OpenGL. This requires Python OpenGL and Python GTKGLExt installed, in addition to a 3D graphics card setup properly. Please contact your system administrator if you have problems, either way you will always be able to play chess in 2D mode.

  - Show Logs Show logs for debugging glChess and the active chess AI engines.

Settings

- This menu contains:

  - Preferences This opens your window to edit preferences.

Help

- This menu contains:

  - F1 Contents Display this manual.

    About This opens the About dialog which shows basic information about glChess, such as the author's name, the version number of the game.

## 行棋规则

### 国际象棋的走棋规则

国际象棋是在一个正方形的棋盘中走棋，由八条横格线(称作“横线”，用数字1到8表示)和八条竖格线组成(称作“纵线”，用字母 a 到 h 表示)。六十四个格子的颜色由浅色和深色交替排列，称作“白格”和“黑格”。棋盘摆放时，玩家的右下角应当是白格，棋子摆放见示意图，双方的后放在跟自己颜色相同的格子里。

开始时双方各有十六个棋子：一个王、一个后，两个车、两个象、两个马和八个兵。一方，比如白方，控制白子，另一方，黑方控制黑子，白方总是先走。颜色的选择可以双方协商，或者抽签，或者由联赛决定。双方在轮流走棋每次走一个子(有一个例外是车，同时可以移动两个子)。棋子可以移动到其他空着的格子里，或位置上有对方的子，但是可以吃掉它，把它从棋盘上拿掉。除了一个例外(吃过路兵)，其他棋子吃掉对方的子后，放到对方子的位置上。

#### 王

当王受到对方一个子(也可能两个子)的攻击时，称作是“将军”，此时只允许解除王被“将”的移动，而不允许其他移动。游戏的目标就是将死对方的王，使得对方再没有招法可以解救王。

王每次只能移动一格，横着、竖着、斜着都可以。在游戏中，王只允许有一次特殊的双移动，王车易位，王朝车的方向移动两格，然后车越过王放在王旁边的格子里。王车易位必须满足下面的条件：

- 要易位的王和车之前都没有移动过。

- 王和车之间没有其他的棋子。

- 王没有处于被将状态，王车易位中间的路途也不会被将。任何使王受到攻击的易位，都是不合法的。

- 王和车必须在同一横线上(排除用兵升变的车来易位)。

#### 车

车可以移动多个方格，只要没有子挡着，可以横着也可以竖着(还可以跟王进行特殊的王车易位)。

#### 象

象也可以移动多个方格，只能走斜线，方向没有限制。注意，象只能在一种颜色的格子里移动，因此，玩家常说“白象”或“黑象”。

#### 后

后可以移动多个空格，横着、竖着、斜着都可以。

#### 马

马可以跳过一个阻挡的格子，两个横格一个竖格，反过来也一样，大概走出一个“L”形。在棋盘中间的马，可以朝八个方向移动。注意，每次马移动后，都会走到另外一种颜色的格子里。

#### 兵

兵的移动规则最复杂：兵只能往前移动一个空格，但如果这个兵还没走过，那么它第一次移动可以走两格，兵不能后退。当一个兵初次走两格时，恰好落在敌方兵的旁边，(这时轮敌方走棋)敌方兵可以斜着向前走到己方这个兵的后面吃掉这个兵，称为吃“过路兵”，就好像己方这个兵只走了一格被斜吃掉，这种吃子必须在对方行棋后立即进行。兵是唯一吃不在自己走棋路线上的子(例如，它们的两个格子是对角的)，但是如果这个对角位置是空的，则不能移动过去(直走斜吃)。如果兵走完所有格子到达第八个横线，就可以提升(升变)为一个后、车、马，或者同格颜色的象。在实际行棋中，几乎总是变为后。

#### 空余移动规则

除了马例外，棋子不能越过其他子。一个自己的棋子(“己方”)如果恰好挡在路上，则不能被跳过，也不能被替换。敌方的子也不能跳过，但可以“吃掉”它。当一个棋子被吃掉(或提掉)，要立即从棋盘上拿走，不能再放回来。王不能被吃掉，只能被将军，如果王不能摆脱将军，则被将死，失去这一局棋。

游戏结束不一定非得到将死 — 玩家可以在行棋无望时认输。游戏也可以平局(和棋)结束，平局发生在多种情况，包括双方同意和棋、三次重复同样局面、五十回合移动规则，或者不可能将死(通常是棋子不够)情况。

### 限时游戏

在开始新游戏对话框中，可以选择走棋时间限制模式，玩家双方必须在规定时间内走棋，每次走棋时会开始倒数计时。

### 平局

游戏结束时双方都没有赢，大多数平局是基于协商的。能造成平局的有王被僵死、三次重复棋局、五十回合规则、棋子不足。不论是己方还是对方，正常走棋还是被迫形成平局条件，就可以提出和棋要求。

#### 僵局

僵局是指这样一种情形，轮到一方走棋时，没有合法的走棋步骤，而这时王也没有被将军。出现僵局时总是立即判和棋。

#### 三次重复局面

如果发生同一个棋手走出三次相同的盘面，双方走棋都符合规定(包括吃过路兵和王车易位)，这时候可以判定平局。

#### 五十回合规则

如果双方五十回合内没有移动过兵，也没有吃子，就可以判和棋。

#### 棋子不足

游戏结尾时，双方所有的兵都被吃掉，一方只剩下王，另一方也只剩下王或者王和一个马/象。这种情况下也是和棋，因为任何一方都不能够将死对方，只能是一方走错会被将死。这种情况也符合五十回合规则。

## 游戏设置

### 游戏首选项

首选项对话框允许您设置棋盘模式、移动方法和兵升级类型。

#### 国际象棋的首选项对话框

Game preferences dialog for glChess.

### 查看首选项

这个选项允许您设置国际象棋的外观感觉。

#### 国际象棋的查看首选项

View preferences dialog for glChess.

## 国际象棋机器人引擎

国际象棋可以使用其他的 Chess Engine Communication Protocol 和 Universal Chess Interface 兼容的国际象棋机器人引擎，包括下列引擎：

- GNUChess

- Sjeng

- Amy

- Crafty

- Faile

- Phalanx

- Glaurung

- HoiChess

- Diablo

- BBChess

- Fruit

- Amundsen

- Shredder

- Toga II

- Boo's Chess Engine

## 已知缺陷和限制

- 国际象棋中还没有缺陷文档和限制条件。您可以帮助国际象棋来改进这个领域，请参照游戏发行版 TODO 文件中的指导。

## 作者

国际象棋小游戏由 Robert Ancell 编写，包含在 GNOME 游戏软件包内。本手册最初由 Andreas Røsdal 编写，从多个 GPL 源代码中导入。要报告本程序或本手册的缺陷或者提出建议，请参照 文档 上的指导。

## 许可协议

本程序是自由软件，您可以在遵守自由软件基金会发布的 GNU 通用许可证 第2版或更高(如您所愿)版本下，重新分发和/或修改它。

本程序的发布意图是希望它有所用处，但请注意它没有任何担保，甚至不包括商业用途、以及特殊目的保证。更多相关细节，请参阅 GNU 通用公共许可证。

A copy of the GNU General Public License is included as an appendix to the GNOME Users Guide. You may also obtain a copy of the GNU General Public License from the Free Software Foundation by visiting their Web site or by writing to

        Free Software Foundation, Inc.
        59 Temple Place - Suite 330
        Boston, MA 02111-1307
        USA