软件工程课程设计_第八周

小组成员:

姓名学号
张伯威2018141461065
罗正2018141461092

 


分组编写黄金点程序:

设计要求:

  • N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。
  • 采用单机方式实现,提供便利输入界面。
  • 至少可以运行十轮以上,保留各轮比赛结果
  • 后续基础上迭代开发

设计思路:

  • 通过对资料的了解得知,黄金点游戏有一个特性。与聪明人玩游戏,黄金点在逐渐地往下移动。一次游戏的获胜数字和大家的聪明程度有关,越聪明,第一轮的数字就越低。由此可知,如果设计AI,需要设计其输入数字迭代次数。
  • 本次设计是人人交互,通过用户输入数字,所以采取命令行方式
  • 运行十轮,保留用户得分信息

环境选择:

通过对任务需求和开发难度的综合考量,选择用python来编写代码。

设计代码(第一版):

pointList = []
players = 10
for i in range(players):
    pointList.append(0)

times = 0

while times < 10:
    numberList = []
    average = 0
    closestNumber = 0
    fartherNumber = 0
    closestSub = 100
    fartherSub = 0
    for i in range(10):
        inputNum = input("输入数字:")
        numberList.append(inputNum)
        average = average + float(inputNum)
    average = average / 10 * 0.618

    for i in range(len(numberList)):
        playerSub = abs(float(numberList[i]) - average)
        if i == 0:
            closestSub = fartherSub = playerSub
            closestNumber = fartherNumber = 0
        else:
            if playerSub < closestSub:
                closestNumber = i
            if playerSub > fartherSub:
                fartherNumber = i
    print("Win:", closestNumber, "Lose:", fartherNumber)
    pointList[closestNumber] = pointList[closestNumber] + 10
    pointList[fartherNumber] = pointList[fartherNumber] - 2
    times = times + 1

第一版代码实现了基本的玩法功能和输赢后的加分减分方式,但是最后成绩还没有输出,

输入输出方式是命令行,需要由玩家输入数字

之后会对代码进行优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值