You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
# 斗兽棋.魔改的三版本实现
|
|
|
|
|
|
|
|
|
|
[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.大致图像
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
(a方在左 默认为红色,b方在右 默认为蓝色)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 二、后端逻辑
|
|
|
|
|
|
|
|
|
|
行棋规则实现
|
|
|
|
|
|
|
|
|
|
吃子规则判定
|
|
|
|
|
|
|
|
|
|
双方轮流移动:判断能否移动,移动结果显示(字幕提示)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 三、待完善的软件需求
|
|
|
|
|
|
|
|
|
|
子菜单:选择单机还是联网
|
|
|
|
|
|
|
|
|
|
左右留白用于各自功能实现:如计时,
|
|
|
|
|
|
|
|
|
|
顶部留白用于主控功能:认输,回主界面,音乐暂停等
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 网络版开发v2.0
|
|
|
|
|
|
|
|
|
|
#### 一、增加需求
|
|
|
|
|
|
|
|
|
|
> 基于游戏服务器,加入联网通信功能
|
|
|
|
|
>
|
|
|
|
|
> 主要工作:
|
|
|
|
|
>
|
|
|
|
|
> 1.实现socket通信
|
|
|
|
|
>
|
|
|
|
|
> 2.JSON数据解析以及封装——协议见“游戏服务器及通信协议.pdf”
|
|
|
|
|
>
|
|
|
|
|
> 3.多线程编程——建议把通信模块实现为一个单独的新线程,主程序和通信模块之间需要交互,超时判断(来自服务器,接受并处理)
|
|
|
|
|
>
|
|
|
|
|
> 4.游戏逻辑调整
|
|
|
|
|
|
|
|
|
|
一些约定:
|
|
|
|
|
|
|
|
|
|
1.红0蓝1 通信协议中的side=0;红棋先手
|
|
|
|
|
|
|
|
|
|
2.棋子约定 chessman 0到6
|
|
|
|
|
|
|
|
|
|
3.服务器配置文件config.txt可改
|
|
|
|
|
|
|
|
|
|
客户端:
|
|
|
|
|
|
|
|
|
|
+ 申请加入对战 -> 先后手规则
|
|
|
|
|
|
|
|
|
|
+ 过程中可以叫停游戏或者主动退出游戏(弃权)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|