# reversi-web **Repository Path**: thales-ucas/reversi-web ## Basic Information - **Project Name**: reversi-web - **Description**: 苹果棋web版,强化学习实验 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-01-07 - **Last Updated**: 2025-03-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # reversi 苹果棋 黑白棋 # 游戏简介 黑白棋,又叫翻转棋(Reversi)、奥赛罗棋(Othello)、苹果棋或正反棋(Anti reversi)。黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。它的游戏规则简单,因此上手很容易,但是它的变化又非常复杂。有一种说法是:只需要几分钟学会它,却需要一生的时间去精通它。 黑白棋是19世纪末英国人发明的。直到上个世纪70年代日本人长谷川五郎将其进行发展和推广,借用莎士比亚名剧奥赛罗(othello)为这个游戏重新命名(日语“オセロ”),也就是大家玩的黑白棋。为何借用莎士比亚名剧呢?是因为奥赛罗是莎士比亚一个名剧的男主角。他是一个黑人,妻子是白人,因受小人挑拨,怀疑妻子不忠一直情海翻波,最终亲手把妻子杀死。后来真相大白,奥赛罗懊悔不已,自杀而死。黑白棋就是借用这个黑人白人斗争的故事而命名。 ## 游戏规则 黑白棋的棋盘是一个有8*8方格的棋盘。下棋时将棋下在空格中间,而不是像围棋一样下在交叉点上。开始时在棋盘正中有两白两黑四个棋子交叉放置,黑棋总是先下子 ## 下子的方法 把自己颜色的棋子放在棋盘的空格上,而当自己放下的棋子在横、竖、斜八个方向内有一个自己的棋子,则被夹在中间的全部翻转会成为自己的棋子。并且,只有在可以翻转棋子的地方才可以下子。 ## 棋规 1. 棋局开始时黑棋位于e4和d5,白棋位于d4和e5,如图1-3所示。 2. 黑方先行,双方交替下棋。 3. 一步合法的棋步包括:在一个空格新落下一个棋子,并且翻转对手一个或多个棋子。 4. 新落下的棋子与棋盘上已有的同色棋子间,对方被夹住的所有棋子都要翻转过来。可以是横着夹,竖着夹,或是斜着夹。夹住的位置上必须全部是对手的棋子,不能有空格。 5. 一步棋可以在数个方向上翻棋,任何被夹住的棋子都必须被翻转过来,棋手无权选择不去翻某个棋子。 6. 除非至少翻转了对手的一个棋子,否则就不能落子。如果一方没有合法棋步,也就是说不管他下到哪里,都不能至少翻转对手的一个棋子,那他这一轮只能弃权,而由他的对手继续落子直到他有合法棋步可下。 7. 如果一方至少有一步合法棋步可下,他就必须落子,不得弃权。 8. 棋局持续下去,直到棋盘填满或者双方都无合法棋步可下。 # 开始游戏 ## 安装依赖 ``` npm install ``` ## 开发环境 ``` npm start ``` ### 生产环境 ``` npm run build ``` ### 检查并修复代码 ``` npm run lint ``` ## 支持库 threejs ## 算法 蒙特卡洛树 ## 游戏结构 使用vue创建前端结构 构建reversi游戏类 游戏的数据全在engine(游戏引擎)里,main负责逻辑结构调用 board(棋盘),square(方格),piece(棋子) # 具体讲解 [游戏引擎](./docs/engine.md) [人工智能](./docs/ai.md) [游戏界面](./docs/surface.md)