结对项目--黄金点游戏 (尹海&李状)

这是一个使用C语言编写的单机版黄金分割点游戏,玩家可以通过多次输入数字来竞争得分,最终得分由数字接近黄金分割比例的程度决定。游戏支持保存分数及继续游戏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结对项目名称:黄金分割点游戏(单机)

运行环境:vs

编译语言:c语言

实现的功能:用户可以选择继续游戏并且可以保存之前获得的分数,但是为了游戏的公平性,游戏的参数人数一开始用户确定以后就不能够改变。

Github地址:https://github.com/522623378/hello-world/blob/master/Golden%20point

总结与心得:本次项目的设计能够学习到另一个结对项目者的想法,能够让自己的思维能够开阔一些,在设计项目的过程中总是不断完善能够让自己的思维更加严密,同时也可以学习到另一个结对项目者的代码编写方法,能够让自己对于同一个代码编写能够有不同的写法。

代码:

#include <stdio.h>
 #include <math.h>
 void main()
 {
 int i,n,j,k;
 char s='Y';
 int a=0;
 int maxscore;
 int student[50];
 int number[50];
 double b=0;
 double min = 100 , max = 0;
 while(s=='Y')
 {
 maxscore=-1000;
 printf("请输入游戏人数:");
 scanf("%d",&n);
 printf("请输入游戏局数:");
 scanf("%d",&j);
 for(i=0;i<n;i++) //将得分数组赋值0
 {
 student[i]=0;
 }
 for(k=0;k<j;k++) //局数循环
 {
 for(i=1;i<=n;i++) //输入每个同学的数并求和
 {
 printf("请输入第%d个人的数字:",i);
 scanf("%d",&number[i-1]);
 a += number[i-1];
 }
  
 printf("G值为:%.3f \n",b=a/n*0.618); //输出G值
 for(i=0;i<n;i++)
 {
 if(fabs(number[i]-b)<min) //用每个数分别减去G值并取绝对值找到最大绝对值max与最小min
 {
 min=fabs(number[i]-b);
 }
 }
 for(i=0;i<n;i++)
 {
 if(fabs(number[i]-b)>max)
 {
 max=fabs(number[i]-b);
 }
 }
 for(i=0;i<n;i++) //通过max与min找到距离G点最远与最近的数,并将对用同学的成绩进行修改
 {
 if(fabs(number[i]-b)==min)
 {
  
 if(fabs(number[i]-b)==max)
 { student[i]=student[i]+n;
 }
 student[i]-= 2;
 }
 }
 a=0; //每轮游戏结束将一些必要数值重置
 b=0;
 max=0;
 min=100;
 printf("*******************************\n");
 for(i=0;i<n;i++) //打印出每个同学成绩
 {
 printf("*第%d位学生的得分为%d\n",i+1,student[i]);
 }
 printf("*******************************\n");
 }
 for(i=0;i<n;i++) //找到最高分
 {
 if(student[i]>maxscore)
 {
 maxscore=student[i];
 }
 }
  
  
 printf("游戏结束!结果如下:\n");
  
 printf("恭喜得数为%d的同学获胜!\n",maxscore); //输出游戏结果
 printf("____________________________________________________________________\n");
 printf("是否继续游戏? Y/N\n"); //游戏结束判断是否继续游戏
 scanf("%s",&s);
 }
  
 }

转载于:https://www.cnblogs.com/li1158/p/8041268.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值