# 斗兽棋.魔改的三版本实现

[TOC]



### 一、游戏角色

>  象Eleph>狮Lion>豹Leo>狼Wolf>狐Fox>鹰Eag>鼠Mse>[象]

### 二、游戏规则

- 行棋规则

> 所有动物可以上、下、左、右走一格
>
> 所有动物不能进入己方兽穴
>
> 鼠：唯一能进小河，并且不会与其他动物吃与被吃，但可以鼠类互吃
>
> 狮：在河边时，可以纵横对直跳过河，但如果路线被对方在河里的老鼠所阻隔，则不能跳河
>
> 狐：可以左上、左下、右上、右下方向走一格
>
> 鹰：在无棋子、陷阱（可进入陷阱）阻隔情况下，直线走任意格
>
> 陷阱：进入陷阱可以被任意兽类吃掉

- 胜负规则

> •任意动物进入对方兽穴
>
> •对方所有动物被吃光
>
> •所有对方活着的动物均被困住（均不可移动）
>
> •对方中途离开游戏
>
> •对方走棋时间用完（单机版可不实现）
>
> •和棋：在连续100回合内，双方均无动物被吃

+ 违例判负规则(网络版)

> 7-3违例：连续7步内，如果同一动物连续超过3次进入同一棋格，在接下来的第8步将禁止该动物进入该棋格（若7步内有进入陷阱，则不受该限制，被追动物不受该限制）
>
> 17-5违例：连续17步棋内，如果只操作同一个动物，且该动物的活动范围不超过5个棋格，在接下来的第18步将禁止该动物进入上述5个棋格中的任意一个（若17步内有进入陷阱，则不受该限制）



### 单机版开发v1.0

#### 一、前端界面

监听鼠标动作

实现按钮等控件操作

绘制文字，图片

播放音乐、动画等

游戏提示

ex.大致图像

![image-20220825111106122](C:\Users\DoubleQ\AppData\Roaming\Typora\typora-user-images\image-20220825111106122.png)

(a方在左 默认为红色，b方在右 默认为蓝色)



 

#### 二、后端逻辑

行棋规则实现

吃子规则判定

双方轮流移动：判断能否移动，移动结果显示（字幕提示）



#### 三、待完善的软件需求

子菜单：选择单机还是联网

左右留白用于各自功能实现：如计时，

顶部留白用于主控功能：认输，回主界面，音乐暂停等



### 网络版开发v2.0

#### 一、增加需求

> 基于游戏服务器，加入联网通信功能
>
> 主要工作：
>
> 1.实现socket通信
>
> 2.JSON数据解析以及封装——协议见“游戏服务器及通信协议.pdf”
>
> 3.多线程编程——建议把通信模块实现为一个单独的新线程，主程序和通信模块之间需要交互，超时判断(来自服务器，接受并处理)
>
> 4.游戏逻辑调整

一些约定：

1.红0蓝1 通信协议中的side=0；红棋先手

2.棋子约定 chessman 0到6

3.服务器配置文件config.txt可改

客户端：

+  申请加入对战 -> 先后手规则 

+ 过程中可以叫停游戏或者主动退出游戏(弃权)



#### 二、开发流程

（一）UI设计

​	-----增加相关按钮，增加提示，增加每一步的提示

（二）功能实现

​	-----与服务器数据交换
