项目简介
本项目是基于C语言开发的播棋模拟系统,能实现播棋游戏的规则模拟、结果统计以及智能决策等功能。通过编写函数对播棋规则进行代码实现,如判断游戏操作合法性、统计游戏结果、输出游戏中间状态以及根据棋盘状况做出最优决策等,可帮助用户更好地了解和模拟播棋游戏过程。
项目的主要特性和功能
- Wasm入门:支持用任意语言编程实现需求,将代码编译到Wasm,生成或编写JS胶水代码导出封装好的Wasm函数,可对接课程组提供的测试用JS代码。
- 播棋规则模拟:实现播棋游戏完整规则,包含棋盘初始化、棋子播撒、计分、取子、游戏结束判定等功能。
- 结果统计与检测:根据选手行动序列,判断操作是否合规,准确统计游戏结果,如先手净胜棋数、当前计分洞棋数等。
- 中间状态输出:依据选手行动序列,确定当前各棋洞及计分洞棋子数量,判定下一步操作选手,能识别违规操作并结算得分。
- 智能决策:根据当前棋盘状况,为选手做出最大化净胜棋数的决策,且每次决策时间不超2000ms。
安装使用步骤
1. 环境准备
确保计算机安装了Node.js的当前LTS版本,若未安装,自行搜索解决。
2. 选择编程语言及工具链
可选择AssemblyScript、Rust或其他支持Wasm作为编译目标的编程语言。
- AssemblyScript:
- 创建目录t1-as
并进入:
bash
mkdir t1-as
cd t1-as
- 初始化项目:
bash
npm init
npm install --save-dev assemblyscript
npx asinit .
- 在/assembly
目录的index.ts
文件中按要求完成代码实现。
- 编译代码:
bash
npm run asbuild
- 在/tests/index.js
中编写测试并执行:
bash
npm test
- Rust:
- 进入目录t1_rust
:
bash
cd t1_rust
- 按要求完成代码实现。
bash
wasm-pack build --target nodejs
- 在/src/lib.rs
中编写测试并执行:
bash
cargo test
- 自选编程语言:
- 按所选语言命名风格,在/T1
内新建文件夹t1-{PL}
并完成代码实现。
3. 任务代码实现
- T1任务:实现
bocchiShutUp()
或bocchi_shut_up()
函数,根据flag
统计数组seq
中特定十位数数字的出现频次,返回出现频次最大的数。 - T2任务:实现
mancalaResult()
或mancala_result()
函数,根据选手行动序列判断游戏是否结束、操作是否合法并返回结果。 - T3任务:
- T3.1:实现
mancalaBoard()
或mancala_board()
函数,根据选手行动序列确定当前棋盘状态及下一步行棋选手,若有违规操作进行得分结算。 - T3.2:实现
mancalaOperator()
或mancala_operator()
函数,根据当前棋盘状况为选手做出最大化净胜棋数的决策。
- T3.1:实现
4. 提交前测试
完成代码编写和测试后,进入对应任务目录(如/T1
、/T2
、/T3
),参照注释,按所选语言/实现方式修改test.js
开头的相关引入代码(仅修改和选择相关的那一行)。执行以下命令进行提交前测试:
bash
npm run submit-test
若测试输出🎉 You have passed all the tests provided.
或🎉 Finished battle, result: {你的程序实现的净胜棋数}:{其他组的程序实现的净胜棋数}. ⏰ Processing Time: {你的程序实现用于作出决策的总处理时间}:{其他组的程序实现用于作出决策的总处理时间}
,说明代码实现可作为有效提交。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】