zoukankan      html  css  js  c++  java
  • 结对编程--黄金分割点游戏

    一、题目

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

    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轮以上,并能够保留各轮比赛结果。

    百度百科中是这样解释的,黄金分割点是指把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比。其比值是一个无理数,用分数表示为(√5-1)/2,取其前

    三位数字的近似值是0.618。由于按此比例设计的造型十分美丽,因此称为黄金分割,也称为中外比。这个分割点就叫做黄金分割点(golden section ratio通常用Φ表示)这是一个

    十分有趣的数字,我们以0.618来近似表示,通过简单的计算就可以发现:(1-0.618)/0.618≈0.618一条线段上有两个黄金分割点。

    二、代码实现

    我的队友告诉我用javascript编写,做一个单机的网页格式,我只了解一点点网页编程,还好有队友,还有一个可以自学的网站w3c,上面有很多教程,队友告诉我这个比java简单一点,我的队友是蒲建国,他是一个编程能力很强的人,而且他很有耐心,他教会了我很多,(ps:而且我们学院的网站还有他的功劳呢),我以前一直以为编程必须要有一个编程软件,他告诉我编写网页的不需要,建造一个日记本文档,然后用浏览器打开,附图一张:

    下面是代码实现:

    1、

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset='utf-8'>
    <title></title>
    <!-- <script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script> -->
    <script src="jquery-1.9.1.min.js"></script>
    <script type="text/javascript" >

    调用javascript语言,学习这个的时候感觉好神奇,接下来就可以写javascript语言了!

    2、

    var i=1; //第几轮
    var j=1; //第几个人
    var data= [];

    输入进行几轮和几个人进行此游戏,并记录每个人输入的数据,javascript中定义变量比c语言简单,var是定义,当需要定义变量时,写var即可,不需要定义变量的类型,是不是很方便呢,反正我觉得是。

    3、

    ({

    var array = [];

    for(var a=1;a<=lun;a++){
    array[a] = [];
    for(var b=1;b<=num;b++){
    array[a][b] = Math.floor(Math.random()*100);
    }
    }
    result(array,num,lun);
    })

    该游戏有一模拟功能,输入人数和几轮,可以点击模拟游戏,将随机产生数据,这个和c语言中差不多,调用rand函数,产生随机数。

    4、

    $('#submit').click(function()

    {

    var val = $('input[name=val]').val();

    if(val<1 || val>99){

    alert('请输入0~100之间的有理数,不包括0或100');

    return false;

    }

    //alert(i);alert(j);

    //alert(val);

    //alert(data[i][j])

    data[i][j] = val;

    //alert(data[i][j]);

    //alert('提交成功');

    //进入下一轮游戏

    $('input[name=val]').val('');

    j++;

    if(j>num){

    alert('本轮游戏结束,进入下一轮游戏!');

    j=1;

    i++;

    if(i>lun){

    alert('本次游戏结束!');

    //游戏结束

    $('#createDiv').css('display','block');

    $('#input').css('display','none');

    i = 1;

    j = 1;

    result(data,num,lun);

    }

    $('#now').find('.lun').html(i);

    }

    当确定人数和轮次后,输入每一个玩家的数字,轮次结束后,数据记录完毕。

    5、

    var max = Math.abs(data[a][1] - G);
    var min = Math.abs(data[a][1] - G);
    var max_index = 1; 
    var min_index = 1;

    黄金分割点的游戏需要将每一轮的数据求取平均数,求取平均值后,找出每一相差最大和最小的,分别记作2分和-2分,其他为0

    6、

    for(var b=1;b<=num;b++){
    var sum = 0;
    for(var a=1;a<=lun;a++){
    sum += parseInt(score_arr[a][b]);
    }
    res[b] = sum;
    }

    记分循环结束后,统计每个玩家的最终得分,将玩家的得分统计到数组中,通过比较,得出赢家。

    7、游戏网页:http://2.raul272.applinzi.com/software/game.html

    8、游戏界面

    输入玩家人数和轮次,点击虚拟游戏,将随机产生数据,并且判断赢家

    神奇吧,得到了玩家2是赢家。

    下面是真正游戏的时候,想图片一样,当输入一个玩家的数据后,将自动跳到下一个玩家,记者输入即可。

    8、这次结对编程真的学到了很多,队友很有耐心而且编程能力很好。

    html是超文本标记语言,标准通用标记语言下的一个应用。

    超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容,

    下面是我们结对编程照片

    结队成员:蒲建国、孙乐

        蒲建国的博客:http://www.cnblogs.com/pujianguo

        蒲建国的conding:https://coding.net/u/pujiangu

  • 相关阅读:
    CodeForces 347B Fixed Points (水题)
    CodeForces 347A Difference Row (水题)
    CodeForces 346A Alice and Bob (数学最大公约数)
    CodeForces 474C Captain Marmot (数学,旋转,暴力)
    CodeForces 474B Worms (水题,二分)
    CodeForces 474A Keyboard (水题)
    压力测试学习(一)
    算法学习(一)五个常用算法概念了解
    C#语言规范
    异常System.Threading.Thread.AbortInternal
  • 原文地址:https://www.cnblogs.com/sunle/p/5368754.html
Copyright © 2011-2022 走看看