#文档名:软工课设06_第24组_week 8
#编写人:杨彦军
#校对:尹鸿伟
#编写时间:2020年10月19日09:32:20
项目目标
- 游戏规则:N个同学(N通常大于10),每人写一个0~100之间的有理数(不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。
- 采用单机方式实现,需要为用户提供便利的输入界面。
- 该游戏每次至少可以运行10轮以上,并能够保留各轮比赛结果。
项目成员
姓名 | 学号 |
---|---|
尹鸿伟 | 2018141461316 |
杨彦军 | 2018141461237 |
开发环境
基于本周开发时间和难度考虑,我们小组决定首先开发出一个控制台界面的单机demo程序。
为方便地调用matplotlib等第三方库进行游戏结果展示,我们小组决定使用python 3.8.5作为开发环境。
考虑到项目后期的迭代开发,我们项目的开发方向为面向对象开发。
代码规范
我们项目由我们两人共同开发,为方便代码交流,我们规定小组代码规范如下:
- 在代码文件编写文件头(包含文件名、源代码功能、修改人、修改日期、修改内容等)。每人每次编写、修改源代码后,需及时修改文件头信息。
- 代码中的函数、变量定义使用全称或易理解的缩写。
- 代码中的函数要编写函数功能注释,一些关键循环、判断语句编写功能注释。
- 代码中待完成的功能利用
# TODO(author): content.
注释。
数据定义
名称 | 类型 | 功能 |
---|---|---|
GameBoard | class | 游戏中的裁判类,负责游戏结果的计算、记录 |
Player | class | 游戏中的玩家类,负责获取玩家的输入等 |
players | list | 在GameBoard类中存储实例化的Player类 |
g_nums | list | 在GameBoard类中存储每一次游戏的g number |
player_status | 字典{int: list} | 在GameBoard类中存储所有用户的成绩和输入 |
id | string | 在Player类中存储玩家姓名 |
程序流程
下一阶段开发计划
- 第8周:完成程序demo版本。
- 第9周:完成第8周课堂拓展的需求。
存在问题
- 如果满足得分条件的玩家有两个或多个,是否还得N分?
目前我们仅从开发难度出发,不考虑游戏规则合理性,如果有多个玩家符合得分条件,则都得N分。 - 每轮游戏得分是N分,但扣分只有2分,游戏策划是否合理?
后期可以考虑动态调整扣分。
项目展望
- 玩家输入数字时,控制台显示密文输入。
- 游戏结束后可以生成一个.csv的日志文件,记录玩家每一轮结果。
- 后期加入GUI,B/S模式支持。