Skip to content
This repository has been archived by the owner on Nov 17, 2020. It is now read-only.

KeshiSmith/FusionChess

Repository files navigation

日期:2016.12.9

班级:计算机科学与技术1班

学校:郑州大学

融 合 象 棋(FUSION CHESS)

小组成员 任务任务 邮箱
郑浩楠 程序逻辑设计与编写 8*******3@163.com
简相杰 程序通信程序编写 2********5@qq.com
王玥 GUI设计与编写 i*******e@126.com

融合象棋是基于中国游戏产生的新型玩法,在传统中国象棋的规则基础下,融合象棋赋予了【车】、【马】、【炮】、【兵】/【卒】新的能力——两两融合的能力。

例如:【马】+【车】=【马车】。

通过棋子间的融合,融合象棋中的棋子可以同时拥有两种棋子的能力,而已经融合的棋子也可以分开,以此提高棋子的机动性,使游戏更加复杂、有趣。

融合象棋不仅能让玩家感受到与众不同的乐趣,还可以让棋牌游戏的种类更加丰富多彩。


1.起始需求

功能
基本功能
  1. 良好的用户交互界面(GUI)。
  2. 背景音乐(Music)与音效(Sound & Effect)。
  3. 正确的象棋规则,可进行操作。
  4. 蓝牙(Bluetooth)对战。
可选功能
  1. 全球化(Global)的可能性。
  2. 人工智能(AI)对战的可能性。

2.项目进程

2.1 阶段1

本阶段完成用户交互界面(GUI)的设计与编写,主要任务由王玥负责,完成菜单界面(Menu Activity),帮助界面(Help Activity),游戏界面(Game Activity)的编写。

2.1.1 阶段目标
  1. 完成【菜单页面】的设计与编写。
  2. 完成【帮助页面】的设计与编写。
  3. 完成【游戏页面】的设计与编写。
2.1.2 截止时间

11月17日-11月23日

2.1.3 个人进度

王玥:用户交互界面的设计与编写。

简相杰:程序全球化的辅助编写。

郑浩楠:游戏素材(图片与音乐)的选择与制作。

2.2 阶段2

本阶段完成音乐服务(Music Service)的编写,添加背景音乐,添加音效,完成相关对话框的编写,为后期游戏运行体验做准备。

2.2.1 阶段目标
  1. 完成【音乐服务】的编写。
  2. 完成相关对话框的编写。
  3. 完成【音乐服务】与其他页面间的通信。
2.2.2 截止时间

11月24日-11月30日

2.2.3 个人进度

郑浩楠:音乐服务的编写,以及与其他页面间的通信。

王玥:相关对话框的编写。

简相杰:程序测试,准备蓝牙通信相关内容。

2.3 阶段3

本阶段完成游戏逻辑(Fusion Chess)类的编写,以及游戏布局的编写(Game View),完成基本象棋逻辑和功能。

2.3.1 阶段目标
  1. 完成象棋逻辑类的编写。
  2. 完成游戏布局的编写。
  3. 将象棋逻辑类,游戏布局与游戏界面相结合,完成基本游戏机制。
2.3.2 截止时间

10月31日-11月13日

2.3.3 个人进度

郑浩楠:象棋逻辑类的编写,象棋布局的编写,将象棋逻辑类,象棋布局与游戏界面相结合。

王玥:相关对话框的编写。

简相杰:程序测试。

2.4 阶段4

完成蓝牙框架类(Bluetooth Helper)的编写,试图添加人机对战功能。

2.4.1 阶段目标
  1. 完成蓝牙框架类的编写及其测试。
  2. 试图添加人机对战功能。
2.4.2 截止时间

11月14日-11月20日

2.4.3 个人进度

简相杰:编写蓝牙框架类。

郑浩楠:试图编写人机对战模块。

王玥:程序测试。

2.5 阶段5

本阶段将蓝牙框架类与游戏界面相结合,实现蓝牙对战功能,完成程序测试,修复游戏中出现的BUG。

2.5.1 阶段目标
  1. 将蓝牙框架类添加至程序,实现蓝牙对战功能。
  2. 程序测试,修复程序中出现的BUG。
2.5.2 截止时间

11月21日-11月27日

2.5.3 个人进度

郑浩楠:将蓝牙框架类添加至程序,实现蓝牙对战功能。

简相杰:辅助添加蓝牙框架类。

王玥:程序测试。


3. 难点解决

在此App开发过程中我们遇到了以下一些问题:

  1. 使用Service实现背景音乐播放,按HOME键后台运行,背景音乐依然播放无法停止。

解决方法:在Service中添加计数器,当Activity调用onStop时减1,当调用onResume时加1,计数器大于等于0时播放,小于0时暂停播放。

  1. 使用大图作为Activity背景导致内存溢出(OOM)异常。

解决方法:将图片直接进行压缩,或者使用Bitmap类进行图片的压缩加载,而不是在XML文件的background属性中直接添加图片资源。

  1. 使用人工智能算法(博弈树)出现程序卡顿的问题。

解决方法:对博弈树进行α剪枝与β剪枝,使用吃子优先策略增加剪枝数量。

  1. 蓝牙通信,BluetoothSocket 连接失败

解决方法:采用BluetoothSeverSocket和BluetoothSocket(客户端-服务端)的方式代替单个BluetoothSocket方式。

  1. 蓝牙通信,只能接收信息,不能发送信息。

解决方法:单独开一个负责接收的线程,用android消息机制,将子线程的信息传到主线程。