- 结对编程之队友信息
队友:彭扬阳。博客地址http://www.cnblogs.com/zxyoyo/
结对项目:黄金分割游戏。题目地址http://www.cnblogs.com/qingxu/p/5316897.html
- 结对编程之队友介绍
这次编程能很有幸和彭同学一组,彭同学平时是一个觉得沉默是金的同学,话不多,为人和善,最爱的就是动漫啦。团队沟通成本几乎是没有的,因为我们就隔着一个宿舍,喊一嗓子就可以商量项目。感觉上彭同学一个对编程有抱着崇高的敬意的人,轻易的不编程,编程也很慎重,能优化坚决优化,能简略坚决简略,所以有些地方还是有些小矛盾,比如有些地方,我觉得功能优化会带来过多的工作量已浪费过多的时间,而他还是觉得优化是必要的所以我们项目有点拖延,好吧不是一般的拖延。总的来说队友除了编程外平时还是个挺和蔼的人。合作愉快!!
- 结对编程之项目详情
分工:这次项目我们采用的是c/s方式工作。所以分工能也挺明确的,我写服务端,用于接收并处理用户的数据并且转发给所有用户。彭同学写的是客户端,主要处理用户界面交互,数据的发送。
规范:代码规范,大括号采用K&R风格。每个if, else, for, do, while后都要有一个大括号,即使有一条语句。变量名和函数名都采用首字母lowerCamelCase的命名规则。
团队的工作:
以下的功能设计由我们一起完成
- 第一个用户进入界面可以选择创建游戏
2.第二个用户选择加入游戏(如果用户选择创建游戏,服务端会自动加入到当前游戏中)
3.以下图是(1)创建玩家等待玩家加入游戏(2)有玩家加入(创建游戏的玩家界面)游戏后界面(3)选择加入游戏玩家后的界面(显示所有等待的玩家)
4.创建玩家选择开始游戏,发送消息给服务端,服务端将创建游戏推送给所有玩家,玩家一起进入游戏
5.游戏创建后进入游戏界面,有上把所有玩家输入的数列表,我这把分数,这把G值。。。。提示
6.提交完分数后界面
7.游戏接触弹出对话框提示,并且退出游戏
- 结对编程之我的工作
本人编写的是服务端,所以我介绍的就是我服务端的内容
以下为服务端大致分块设计
服务端程序设计图
用于收发数据的udpClientService层,主要负责打包后数据的发送,接收,打包数据的解析。
用于处理命令,并且执行相应操作的CoreService层,将解析完的命令进行具体的处理。
保存全局游戏的GameData块,用于所有游戏数据的更新
结对编程之通信数据协议
这是我们的主要模块,通信协议的设定:命令
GAME_JOIN |
1 |
客户端发送给服务端加入游戏 |
GAME_CREAT |
2 |
客户端发送给服务端创建游戏 |
GAME_BEGIN |
3 |
客户端发送给服务端开始游戏 |
GAME_SEND_G |
4 |
客户端发送给服务端G值 |
SERVICE_REPLY |
129 |
服务端相应客户端 |
GAME_RESULT |
130 |
服务端返回一局的结果 |
GAME_LODING |
131 |
服务端返回正在等待玩家 |
GAME_GAMER_LIST |
132 |
服务端返回所有玩家列表 |
GAME_DO_NOT_CREAT |
133 |
服务端返回创建游戏失败 |
GAME_CREATE_SUCESSED |
134 |
服务端返回创建游戏成功 |
GAME_GAMER |
135 |
服务端返回一个用户的名 |
GAME_OVER |
136 |
服务端返回游戏结束 |
传输数据格式的设定
命令 |
内容个数 |
内容1 |
内容结尾标志 |
内容2 |
内容结尾标志 |
内容3 |
内容结尾标志 |
命令:占一个byte位。
内容个数:占一个byte位。
内容结尾标志:占3个byte位格式如下
0xFF |
0x00 |
0xFF |
源码各包说明
communication:通信模块,用于接收命令,数据解析
Core:核心服务模块,用于命令具体操作
GameDataManger:用户数据保存模块,整个游戏数据保存块
Until:工具模块,主要是一些小工具,比如从int转到char[],char[]转int的工具
- 结对编程之感悟
结对编程让我明白如何配合队友工作,沟通是最重要的。我们采用c/s模式最终要就是协议的约定,在协议的约定上我们是小心又谨慎。我想这也是每个结对编程的需要注重的。