结对编程--黄金分割点游戏

 

 

一、题目

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

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

 

posted @ 2016-04-08 16:40  sun-le  阅读(634)  评论(1编辑  收藏  举报