《黄金点游戏》小组开发5

在小组开发4的基础上,修改完善了需求功能
实现了如下功能:

  1. 玩家密文输入数字
  2. 查看历史游戏记录

功能效果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后端代码如下:
CSS:

@charset "utf-8";
body{
	  width:100%;
	  height:60%; 

    background-color:#e0ffff;	   
    background-position:top; 
    background-image;  
    background-repeat:no-repeat;
    }
h{ 
font-size:75;
    color:#000000;

}
#hl{
margin:50px 400px;
font-family:"Times New Roman", Times, serif;
}
tbody{
    border:3px dashed yellow;
}
#container{
    height:1000px;
    margin:1px auto;
}
#create{
	 margin:10px 60px;
}
#div1{
	width:600px;
	margin:120px auto;
	}
 #input{
                display:none;
	margin:0 400px;
                height:100px;
  }
 #res{
    width:80%;
    margin:0 auto;
    border-collapse: collapse;
  }
  #res td{
    border:1px solid black;
  }
  td{
    text-align: center;
	}


JS:

$(function() {
	var num = [];
	num[1]=0;
	var lun = [];
	lun[1]=0;
	var i = 1;
	var j = 1;
	var data = [];
	var createnum = 0;
	var newstr = '';

	$('input').keydown(function(event) {
		if (event.keyCode != 8 && (event.keyCode < 48 || event.keyCode > 57)) {
			return false;
		}
	});
	$('#create').click(function() {
		createnum++;
		num[createnum] = $('#num').val();
		lun[createnum] = $('#lun').val();
		if (num[createnum] == '') {
			alert('请填写玩家的数量!');
			return false;
		} else if (num[createnum] > 50) {
			alert('游戏玩家最多为50人!');
			return false;
		}
		if (lun[createnum] == '') {
			alert('填写游戏轮次!');
			return false;
		}
		//初始化数组
		for (var a = 1; a <= lun[createnum]; a++) {
			data[a] = [];
			for (var b = 1; b <= num[createnum]; b++) {
				data[a][b] = 0;
			}
		}
		$('#createGame').css('display', 'none'); //隐藏css中的元素,
		$('#input').css('display', 'block');
		$('#title').find('.lun').html(lun[createnum]);
		$('#title').find('.num').html(num[createnum]);
	});
	$('#test').click(function() {
		createnum++;
		num[createnum] = $('#num').val();
		lun[createnum] = $('#lun').val();
		if (num[createnum] == '') {
			alert('请填写玩家数量!');
			return false;
		} else if (num[createnum] > 50) {
			alert('玩家最多为50人!');
			return false;
		}
		if (lun[createnum] == '') {
			alert('请填写游戏轮次!');
			return false;
		}
		var array = [];
		for (var a = 1; a <= lun[createnum]; a++) {
			array[a] = [];
			for (var b = 1; b <= num[createnum]; b++) {
				array[a][b] = Math.floor(Math.random() * 100);
			}
		}
		count(array, num[createnum], lun[createnum]);
		var str=count(array, num[createnum], lun[createnum]);
		newstr=history(newstr,str,createnum);
	})
	$('#history').click(function() {
		$('#res').html(newstr);
	})
	$('#submit').click(function() {
		var val = $('input[name=val]').val();
		if (val < 1 || val > 99) {
			alert('请输入0~100之间的有理数,不包括0或100');
			return false;
		}
		data[i][j] = val;
		$('input[name=val]').val('');
		j++;
		if (j > num[createnum]) {
			alert('本轮游戏结束,进入下一轮游戏!');
			j = 1;
			i++;
			if (i > lun[createnum]) {
				alert('本次游戏结束!');
				$('#createGame').css('display', 'block');
				$('#input').css('display', 'none');
				i = 1;
				j = 1;
				count(data, num[createnum], lun[createnum]);
				var str=count(array, num[createnum], lun[createnum]);
				newstr=history(newstr,str,createnum);
			}
			$('#now').find('.lun').html(i);
		}
		//重新设置表单内容
		$('#now').find('.num').html(j);
	});

});

function count(array, num, lun) {
	var data = array;
	var s = [];
	//初始化数组
	for (var a = 1; a <= lun; a++) {
		s[a] = [];
		for (var b = 1; b <= num; b++) {
			s[a][b] = 0;
		}
	}
	var str = '<tr><td>&nbsp;</td>';
	for (var a = 1; a <= num; a++) {
		str += "<td>玩家" + a + "</td>";
	}
	str += "<td>总计</td><td>平均</td><td>G</td></tr>";

	for (var a = 1; a <= lun; a++) {
		var sum = 0;
		str += "<tr><td>第" + a + "轮</td>";
		for (var b = 1; b <= num; b++) {
			sum += parseInt(data[a][b]);
			//str += "<td>"+data[a][b]+"</td>";
		}
		var avg = sum / num;
		var G = 0.618 * avg;
		//获取最大、最小
		var max = Math.abs(data[a][1] - G);
		var min = Math.abs(data[a][1] - G);
		for (var b = 1; b <= num; b++) {
			if (Math.abs(data[a][b] - G) >= max) {
				max = Math.abs(data[a][b] - G);
			}
			if (Math.abs(data[a][b] - G) <= min) {
				min = Math.abs(data[a][b] - G);
			}
		}
		for (var b = 1; b <= num; b++) {
			var score = 0;
			var color = '';
			if (Math.abs(data[a][b] - G) == max) {
				score = -2;
				color = 'red';
			}
			if (Math.abs(data[a][b] - G) == min) {
				score = num;
				color = 'red';
			}

			/*str += "<td>"+data[a][b]+"("+s+")"+score+","+max_index+","+min_index+"</td>";*/
			s[a][b] = score;
			str += "<td style='color:" + color + "'>" + data[a][b] + "(" + score + ")</td>";

		}
		str += "<td>" + sum + "</td><td>" + avg + "</td><td>" + G + "</td></tr>";
	}
	var res = [];
	str += '<tr><td>计分</td>';
	for (var b = 1; b <= num; b++) {
		var sum = 0;
		for (var a = 1; a <= lun; a++) {
			sum += parseInt(s[a][b]);
		}
		res[b] = sum;
	}
	var max_res = res[1];
	var min_res = res[1];
	for (var c = 2; c <= num; c++) {
		if (res[c] > max_res) {
			max_res = res[c];
		}
		if (res[c] < min_res) {
			min_res = res[c];
		}
	}
	var winner = '';
	var loser = '';
	for (var c = 1; c <= num; c++) {
		var res_color = '';
		if (res[c] == max_res) {
			res_color = 'red';
			winner += '玩家' + c + ',';
		}
		if (res[c] == min_res) {
			res_color = 'red';
			loser += '玩家' + c + ',';
		}
		str += "<td style='color:" + res_color + "'>" + res[c] + "</td>";
	}
	winner += '获胜<br>';
	loser += '输了';

	str += "<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>";
	var col = parseInt(num) + 3;
	str += "<tr><td>结果</td><td style='color:red' colspan='" + col + "'>" + winner + loser + "</td></tr>";
	$('#res').html(str);
	return str;
}

function history(newstr,str,createnum){
	newstr += "<tr><td>第"+createnum+"次</td></tr>";
	newstr += "<tr></tr>";
	newstr += str;
	return newstr;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值