3个不稳定版本

0.2.0 2021年7月17日
0.1.1 2021年7月10日
0.1.0 2021年7月9日

#433 in HTTP服务器

GPL-3.0许可证

30KB
403

Mineswepttd

一个RESTful扫雷服务器。

我在我的域名上托管此服务:@ https://mineswepttd.0x44.pw/

安装

如果您想在本地运行此服务,并且希望端口号不是8000,我建议您使用Docker镜像

docker run -p 80:8000 pard68/mineswepttd

如果您只想在本地运行它(为了娱乐或与前端一起使用),您还可以使用Crates.io上发布的包

cargo install mineswepttd && mineswepttd

或者如果您想从src复制并运行它,可以尝试

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/<width>/<height>/<difficulty>

状态

棋盘状态具有以下格式(换行符可选)

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>,将上述状态作为正文传递

标志和揭示响应

标志和揭示端点响应可以包含一到三个部分。第一部分总是返回的是标志或揭示后的板子样子。它看起来像这样

0000011100
000001F100
0000011100
0000000000
0000000000
0000111000
01122F1000
02....3100
14.....100
.......100

一个整数表示一个揭示单元格的邻近地雷数量。这个整数可以是0到8之间的任何值。一个.表示一个未揭示未标志的单元格。一个F表示一个标志的单元格。一个M(未在上方显示)表示一个包含地雷的揭示单元格 -- 如果板上有M,则游戏结束。这引出响应的下一个潜在部分;胜负状态。

特别说明,在调用/flag时,板子之后的行将包含一个整数,表示已使用的标志总数。您的游戏可以使用此字段来确定用户还剩下多少个标志(总可用标志数等于难度)。如果所有标志都已使用,则/flag将仅返回给定的状态,以及总使用的标志数。

0000011100
000001F100
0000011100
0000000000
0000000000
0000111000
01122F1000
02..M.3100
14.....100
.......100
Lose!

如果板子之后的行被填充,则游戏结束。该行将包含两个字符串之一;Win!Lose!。如果响应的第三部分被请求,则该行也可以为空 -- \n。响应的第三个潜在部分是板子的状态。实现mineswepttd的前端开发者可以选择在自己的应用程序中跟踪游戏状态,或者可以在每次请求时请求更新的状态。要请求状态,将参数?send_state=true/flag/reveal请求一起发送。

前端

尚无。去制作一个。或者等到我做...

开发

在项目的根目录中可以找到一个postman配置文件。它包含了对当前所有端点的请求。

待办事项

[ ] - 测试 [X] - 最大标志数? [X] - 创建用于展示用法的图形前端 [ ] - 将其拆分为库和服务器 [X] - 使Docker操作生效

依赖关系

~17–49MB
~830K SLoC