Skip to content

Kinboise/tegojafo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

主辅棋服务器

使用flask编写的主辅棋服务器。目前实现对接的客户端有:

使用方法

  • 安装依赖flaskulid-py
  • 使用python app.pyhttp://localhost:2010启动服务器;
  • 使用GET请求访问服务器。

开局

初始化棋局:/api?act=start

局面存储在服务端game/<id>.json中。返回值示例:

{
    "id": "01JS0S6XEPB87GPXVVSPFD1WJV", //棋局编号,ULID格式
    "board": [
        [2,1,0,0,0,1],
        [1,0,0,0,0,0],
        [0,0,0,0,0,0],
        [0,0,0,0,0,0],
        [0,0,0,0,0,1],
        [1,0,0,0,1,3]
    ], //棋盘,0:空格,1:辅子,2:黑主,3:白主
    "hand": [11, 11], //[黑方持子, 白方持子]
    "turn": 2, //是谁的回合,2:黑,3:白
    "legal": [ [0,2], [2,0] ], //主子可移动到的坐标
    "hist": [], //历史行动,棋谱字符串形式
    "res": 0 //对局结果,0:进行中,2:黑胜,3:白胜
}

行动

放置辅子于a3:/api?id=<id>&act=move&move=+a3

  • 若行动非法,返回not empty or none left

移动主子至c1:/api?id=<id>&act=move&move=-c1/api?id=<id>&act=move&move==c1

  • move=-c1(移动到c1空格)与move==c1(移动到c1并吃子)效果相同;返回值会自动修正为正确棋谱;
  • 若行动非法,返回illegal move
  • 若胜利,体现在返回值res中;
  • 返回值示例:
{"id": "01JS0S6XEPB87GPXVVSPFD1WJV", "board": [[0, 1, 2, 0, 0, 1], [1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 1, 3]], "hand": [11, 11], "turn": 3, "legal": [[5, 3], [3, 5]], "hist": ["-c1"], "res": 0}

显示棋盘

以字符画形式画出当前局面:/api?id=<id>&act=draw

  • 显示效果(实际为<br>换行):
⬜⬛⚫⬜⬜⬛
⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬛
⬛⬜⬜⬜⬛⚪

以字符画形式画出合法移动:/api?id=<id>&act=showlegal

  • 显示效果(实际为<br>换行):
⬜⬛⚫⬜⬜⬛
⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜🟩
⬜⬜⬜⬜⬜⬛
⬛⬜⬜🟩⬛⚪

回放

根据存储的棋谱,以JSON形式返回每一手的局面:/api?id=<id>&act=replay

  • 返回值示例:
{
    "hist": ["-c1"],
    "res": 0,
    //数组,每个元素为一手的局面
    "states": [
        {
            "board": [
                [2, 1, 0, 0, 0, 1],
                [1, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 1],
                [1, 0, 0, 0, 1, 3]],
            "hand": [11, 11]
        },
        {
            "board": [
                [0, 1, 2, 0, 0, 1],
                [1, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 1],
                [1, 0, 0, 0, 1, 3]],
            "hand": [11, 11]
        }
    ]
}

以字符画形式画出棋局回放:/api?id=<id>&act=replay&draw=1

  • 显示效果(实际为<br>换行):
⚫⬛⬜⬜⬜⬛
⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬛
⬛⬜⬜⬜⬛⚪

⬜⬛⚫⬜⬜⬛
⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬛
⬛⬜⬜⬜⬛⚪

已知问题

  • 未实现无子可动判和的规则;
  • 不支持人机对战。

About

主辅棋Flask服务器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages