现代软件工程课程设计——黄金点游戏(一)

文章目录

  • 一、 项目介绍
  • 二、项目功能
    • 1.项目功能列表
    • 2.功能实现
      • 创建玩家对象
      • 设置游戏基本信息
      • 输入各玩家本轮的输入值
      • 计算本轮的黄金点值
      • 胜负判断
      • 修改winner和loser的分值
      • 记录并输出本轮信息
  • 三、运行截图
  • 四、阶段总结
      • 阶段成果
      • 不足之处

一、 项目介绍

  • 游戏名称:黄金点游戏
  • 游戏规则:N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。
  • 游戏采用单机方式实现,需要为用户提供便利的输入界面。
  • 该游戏每次至少可以运行10轮以上,并能够保留各轮比赛结果。
  • 该游戏采用Python语言编写

二、项目功能

1.项目功能列表

功能编码 功能描述
fun-1 创建玩家对象
fun-2 设置游戏基本信息
fun-3 输入各玩家本轮的输入值
fun-4 计算本轮的黄金点值
fun-5 胜负判断
fun-6 修改winner和loser的分值
fun-7 记录并输出本轮信息

2.功能实现

创建玩家对象

  • 对象基本属性
    玩家对象具有三个基本属性,name、decision和score。
    name表示玩家姓名,作为区分玩家的信息;
    decision表示玩家在某一轮次给出的数值,用于计算该轮次的黄金点值和判断胜负;
    score表示玩家在某一轮次过后累计的分值。

  • 对象方法
    玩家对象具有四个行为,setDeciison,win,lose和info
    setDecision用于设置玩家的decision属性;
    win表示该玩家在本轮次胜出,分值增加;
    lose表示该玩家在本轮次失败,分值减少;
    info用于输出该玩家在本轮次过后的基本信息。

代码如下(示例):

设置游戏基本信息

  • 变量N为游戏玩家数
  • 变量n为游戏轮次数
  • 变量time用于轮次循环
  • 列表process用于保存各轮次结果

代码如下(示例):

输入各玩家本轮的输入值

  • 遍历玩家列表,调用setDecision函数设置玩家本次输入值。

代码如下(示例):

计算本轮的黄金点值

  • 遍历玩家列表,根据decision属性计算平均值

代码如下(示例):

胜负判断

  • 遍历玩家列表,根据decision属性得出与黄金点值G相差最小和相差最大的玩家下表min和max

代码如下(示例):

修改winner和loser的分值

  • 根据judge函数得到的下标,调用相应玩家对象的相应函数修改score属性。

代码如下(示例):

记录并输出本轮信息

  • 将本轮各玩家基本信息以及黄金点值输出
  • 将本轮各玩家基本信息以及黄金点值保存入列表process

代码如下(示例):

三、运行截图

  • 设置游戏基本信息以及玩家信息

阶段成果

本次项目设计,我们利用简便的Python语言完成了主体部分的代码,并实现了基本功能。

不足之处

  • 在本次项目设计中,没有添加UI设计,项目的交互性及用户体验很差;

  • 该版本未对用户的输入值(包括用户姓名、游戏玩家数和轮数以及用户输入等信息)进行检查,程序健壮性不足,容易发生错误;

  • 设置的列表process仅为后续新添加的功能作支撑,在当前版本中并未有实际作用。

  • 本版本代码不够简介、优美,功能仍需不断优化改进。

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览208213 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年9月17日
下一篇 2020年9月17日

相关推荐