• 黄金点游戏


    黄金点游戏

          黄金点游戏是一个数字小游戏,其游戏规则是:

          N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动。

          现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下:

          1、本作业属于结对编程项目,必须由二人共同完成,并分别将本次作业过程发到博客,同时将本次作业源代码提交到codeing系统;

          2、如果可能的话尽量以C/S或B/S方式实现,即利用服务器接收和处理所有玩家提交的数字,并将结果反馈给各玩家,玩家可以通过客户端提交的数字;

          3、如果采用单机方式实现的话,需要为用户提供便利的输入界面;

          4、该游戏每次至少可以运行10轮以上,并能够保留各轮比赛结果。

    用结构体保存玩家信息

    typedef struct gameplayer  //定义玩家结构体
    {
        int name;
        int score;
        int win;
        int fail;
        float number;
        float b;    
    }PLAYER;            //含有玩家的姓名,分数,编号,分数

    计算及输出玩家成绩

    void suan_score(PLAYER *p,float ave,int num,FILE *fp)
    {
        int i;
        char ch;
        float max=(float)fabs(p[0].number-ave);
        float min=(float)fabs(p[0].number-ave);
        
        for(i=0;i<num;i++)         //统计出本轮最大值,最小值
        {
            p[i].b=(float)fabs(p[i].number-ave); 
            if(max<p[i].b)
                max=p[i].b;        
            if(min>p[i].b)
                min=p[i].b;       
        }
        
        for(i=0;i<num;i++)        //挨个玩家赋予成绩
        {
            if(p[i].b==max) 
            {
                p[i].score-=2;    
            }
            if(p[i].b==min) 
            {
                p[i].score+=num;
            }
        }
        printf("累计比赛的得分:
    ");
        for(i=0;i<num;i++)        //挨个玩家输出成绩
            printf("      玩家%d: %d
    ",p[i].name,p[i].score);
        while(1)
        {
            printf("是否继续  Y or N : ");
            scanf("%c",&ch);
            if(ch=='y'||ch=='Y')
            {
                break;
            }
            else if(ch=='n'||ch=='N') 
            {
                exit(0);
            }
            
        }
    }

    运行界面

    开始游戏输入界面,输入玩家人数、游戏轮次和玩家输入的数

    输出本轮运行成绩并决定是否进行下一轮游戏

    总结,通过这次结队编程我知道了规范编码和编写相应的注释的重要性,不然队友很难读懂你写的程序;并且学会了如何与队友培养默契为以后工作打下了基础。

    结对编程工作照:

    结对伙伴博客园地址:http://www.cnblogs.com/lvjianxiong/

    结对伙伴Coding主页地址:https://coding.net/u/lvjianxiong

    本人Coding主页地址:https://coding.net/u/hulinzhuang

  • 相关阅读:
    Maven项目Spring配置XML报错
    Emcas配置快捷代码块
    ubuntu安装ipython
    基于Docker的集成开发环境包含gvim&Emacs
    deepin安装v11vnc服务
    Eclipse 默认工作区设置
    docker方式搭建DNS服务器
    deepin安装vnc服务
    DataReader类型化数据读取与装箱性能研究
    评《禁止分班考试惹争议:学霸吃不饱,学渣吃不消》:营造公平社会环境从不分班开始
  • 原文地址:https://www.cnblogs.com/hulinzhuang/p/5372390.html
Copyright © 2020-2023  润新知