黄金点游戏程序开发(一)需求分析及简单python代码实现

黄金点游戏程序开发(一)需求分析及简单python代码实现

游戏规则:N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618 (所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同 学得到N分,离G最远的同学得到-2分,其他同学得0分。

1.顺序图分析

在这里插入图片描述

2.需求分析

2.1 功能需求

用户输入参与人数N:

 N = input("请输入参与游戏人数:")

第n轮玩家输入0~100有理数:

for i in range(int(N)):
	a = input("请玩家" + str(i+1) + "输入0~100之间的有理数:")
    gamenumbwer.append(a)

计算G的值:

for i in range(int(N)):
	Gnum += float(gamenumbwer[i])
Gnum = (Gnum*0.618)/int(N)

筛选距离G值最近和最远的玩家:

for i in range(int(N)):
        dis = abs(float(gamenumbwer[i])-Gnum)
        distance.append(dis)
    close = distance.index(min(distance))
    far = distance.index(max(distance))

得到并保存第n轮玩家得分:

print("玩家"+str(posc)+"获得"+str(N)+"分,玩家"+str(posf)+"失去两分,其余同学获得0分")
score[posc-1] += int(N)
score[posf-1] -= 2
print(score)

循环n论过后统计总得分

for i in range(int(N)):
        print("玩家"+str(i)+"得分为:"+str(score[i]))

2.2输入限制

玩家必须输入0~100的有理数,否则需要重新输入

while True:
                a = input("请玩家" + str(i+1) + "输入0~100之间的有理数:")
                if not str.isdigit(a):
                    print("输入错误")
                    continue
                elif float(a)<=0 or float(a)>=100:
                    print("输入错误")
                    continue
                else:
                    break

2.3 多名玩家同时得分或失分

游戏中玩家可能距离G值的距离相同,此时会有多名玩家得分或者失分:

# 最大的N个数的索引
max_num_index_list = map(nums.index, heapq.nlargest(N, nums))

# 最小的N个数的索引
min_num_index_list = map(nums.index, heapq.nsmallest(N, nums))

使用最大最小N个数的检索来找到所有得分和失分的玩家

3.部分运行代码截图

本图只展示了第九轮和第十轮得分情况和最终得分情况

4.后续迭代要求

美化图形界面,观察黄金点游戏迭代规律,设计多轮游戏,并且设计游戏结束后的排名机制和奖励惩罚机制,增强游戏趣味性。

5.开发环境

编写语言:python3
运行系统:windows10操作系统

6.至此完成简单的黄金点游戏需求分析即简单代码实现

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值