0.1.0 |
|
---|
#8 在 #reveal
28KB
402 代码行
Mineswepttd
一个RESTful扫雷服务器。
安装
git clone https://github.com/pard68/mineswepttd && \
cd mineswepttd && \
cargo run
或
git clone https://github.com/pard68/mineswepttd && \
cd mineswepttd && \
cargo build --release && \
./target/release/mineswepttd
使用
获取一个新的随机状态
GET /new/<宽度>/<高度>/<难度>
状态
板状态格式如下(换行符是可选的)
10 10 10
currently-lately-sound-coral
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
第一行由三个整数组成;宽度、高度和难度(难度指的是板上的地雷数量)。第二行是板子的种子,对/new
的请求将返回一个人类友好的字符串,然而任何Unicode字符串都是可接受的种子。剩余的行是一系列由1和0组成的两个整数对。每个对中的第一个整数指的是单元格的揭示状态。每个对中的第二个整数指的是该单元格的标记状态。
标记或取消标记单元格
POST /flag/<x>/<y>?send_state=<true|false>
,将上述状态作为正文传递
揭示单元格
POST /reveal/<x>/<y>?send_state=<true|false>
,将上述状态作为正文传递
标记和揭示响应
/flag
和/reveal
端点的响应可以由一到三个部分组成。第一部分,将始终返回的是标记或揭示后的板子外观。它看起来像这样
0000011100
000001F100
0000011100
0000000000
0000000000
0000111000
01122F1000
02....3100
14.....100
.......100
整数表示已揭示单元格的相邻地雷数。这个整数可以是0到8之间的任何数。点(.
)表示未揭示且未标记的单元格。标记的单元格用(F
)表示。一个(M
)(未在上文展示)表示包含地雷的已揭示单元格——如果棋盘上有(M
),则游戏结束。这引出了响应的下一个潜在部分;胜负状态。
0000011100
000001F100
0000011100
0000000000
0000000000
0000111000
01122F1000
02..M.3100
14.....100
.......100
Lose!
如果棋盘下方的行被填充,则游戏结束。该行将包含两个字符串之一;(Win!
)或(Lose!
)。如果请求响应的第三部分,则此行也可以为空——(\n
)。响应的第三个潜在部分是棋盘的状态。实现mineswepttd
前端开发的开发者可以选择在自己的应用程序中跟踪游戏状态,也可以在每次请求时请求更新状态。要请求状态,请在(/flag
)或(/reveal
)请求中发送参数(?send_state=true
)。
开发
可以在本项目的根目录中找到Postman配置。它包含对当前所有端点的请求。
依赖项
~18–48MB
~827K SLoC