• Stars
    star
    233
  • Rank 172,230 (Top 4 %)
  • Language
    Python
  • License
    Other
  • Created over 4 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

elephantfish: 一个只有124行的中国象棋引擎

Elephantfish

介绍

elephantfish 是受到 sunfish 启发而撰写的纯python的中国象棋引擎, 整个象棋引擎核心代码只有124行(见compressed.py),棋力方面我仅进行过其与象棋小巫师傻瓜难度的一场对局,在我测试的对剧中,elephantfish赢得了比赛。

在几天前看到了sunfish这个项目(是一个国际象棋引擎,只有111行),觉得很有意思,于是做了一个类似中国象棋版本,中国象棋和国际象棋略有不同,我仅仅单独完成了棋规部分,子力价值表直接的参考了 象眼 ,mtd search部分的代码由于原版sunfish写的非常通用,我也就一行未改。

如果你对于程序中的mtd search看不懂建议先看一些对弈基础理论,比如articles下的几篇文章,如对弈程序基本技术,其官方网址:https://www.xqbase.com/computer/outline.htm

elephantfish默认会进行5秒钟的思考,当然实际一般会比5秒多一些,如果你想要它进行更长时间搜索以获得更好的性能可以对源码相应位置进行更改。

如同sunfish一样,我认为elephantfish会是一个很好的平台,由于其代码非常少,可以很方便的进行各种实验,希望各位感兴趣的同学可以尝试对其进行优化. 如果在优化后想要评估和目前版本的棋力差别,可以使用test.py中的self_arena来将你的代码和elephantfish进行对弈。

如果你觉得这个版本的象棋ai实力不够强,可以看看 XQpy

运行截图

Think depth: 6 My move: b9c7

  9 俥.象士将士象傌俥
  8 .........
  7 .砲傌....砲.
  6 卒.卒.卒.卒.卒
  5 .........
  4 .........
  3 兵.兵.兵.兵.兵
  2 .炮..炮....
  1 .........
  0 车马相仕帅仕相马车
    abcdefghi
    
Your move:

运行elephantfish!

elephahtfish 自包含在 elephantfish.py 文件中,只是用了python的自带操作而没有使用任何第三方库. 建议使用 pypy 或者 pypy3 来获得更好的性能表现.

简单的使用命令python elephantfish.py 或者pypy elephantfish.py 就可以运行象棋程序,程序会利用自带一个命令行工具进行对局.

特性

  1. 使用简单而高效的 MTD 二分搜索算法(见对弈程序基本技术).
  2. 使用众所周知的现代象棋引擎trick 比如空着裁剪.
  3. 通过简单的子力价值表进行局面评估.
  4. 使用python标准数据结构.

License

GNU GPL v3

More Repositories

1

TexasSolver

🚀 A very efficient Texas Holdem GTO solver ♠️♥️♣️♦️
C++
1,757
star
2

ChineseAiDungeonChatGPT

中文版的ai地牢,直接使用的openai的ChatGPT api作为讲故事的模型。
Python
1,391
star
3

TexasHoldemSolverJava

A Java implemented Texas holdem and short deck Solver
Java
808
star
4

icyChessZero

中国象棋alpha zero程序
Jupyter Notebook
376
star
5

ChineseAiDungeon

中文版ai地牢,基于清源CPM fineutne
Python
236
star
6

FastLoRAChat

Instruct-tune LLaMA on consumer hardware with shareGPT data
Jupyter Notebook
121
star
7

XQPy

象棋巫师(非官方)python实现
JavaScript
68
star
8

AlphaNLHoldem

An unoffical implementation of AlphaHoldem. 1v1 nl-holdem AI.
Jupyter Notebook
65
star
9

ByrBbsMirror

北邮人论坛镜像源代码
Python
39
star
10

icyface_offline

offline part of icyface
Jupyter Notebook
30
star
11

icytranslate_offline

The offline part of icytranslate(a english-chinese translate platform) ,the output of this project should be a translate model
Jupyter Notebook
19
star
12

icyElephant

a chinese chess engine using conv neural network with zero look-ahead
Jupyter Notebook
19
star
13

gym_chinese_chess

中国象棋gym环境
Jupyter Notebook
12
star
14

AiDungeonChatGPT

AI-Dungeon like Game, directly uses openai's ChatGPT api as a storytelling model.
Python
11
star
15

icyface_api

rest api of icyface
Python
8
star
16

ChineseChessMuzero

使用Muzero算法进行中国象棋对弈
Jupyter Notebook
8
star
17

icytranslate_api

restful api of icytranslate (an opensource english - chinese translate platform)
Jupyter Notebook
7
star
18

icycloud

An docker based IAAS platform
JavaScript
6
star
19

mandarin_recognition

chinese mainland madarin speech recognition neural networks
Jupyter Notebook
5
star
20

icygo

a cnn based go engine
Jupyter Notebook
5
star
21

icyface_website

JavaScript
5
star
22

FastChat

FastChat clone
Python
4
star
23

shisanshui_ai

十三水AI,使用Deterministic CFR解决十三水问题
C++
4
star
24

dark-lora

dark version of a chat LLM
Jupyter Notebook
4
star
25

deuces

A python3 port of https://github.com/worldveil/deuces , a pure python poker hand evaluator
Python
4
star
26

icytranslate_website

the website of icytranslate, a english-chinese translate system
CSS
3
star
27

texas_holdem

德州扑克 通用solver构建中进行的一些实验
Jupyter Notebook
2
star
28

rainfall_prediction

Jupyter Notebook
2
star
29

texassolver_page

webpage of texas solver
HTML
2
star
30

simple_ocr

Jupyter Notebook
2
star
31

Object-detection

Using tensorflow to build a series of object detection networks, and discuss each network's performance
Jupyter Notebook
2
star
32

en2ch_translate

a demo that translates english to chinese
Jupyter Notebook
1
star
33

Lesson1_simple_face

face recognition using hisgram,HOG,LBP,CNN, etc, a brief code history of facial recognition
Jupyter Notebook
1
star