软件工程课程设计_第十二周

小组已完成单人黄金点游戏的开发,包括游戏逻辑、界面处理、数据提交和结果保存。游戏逻辑基于0.618黄金比例计算胜负。使用Jquery处理界面,通过Ajax提交数据并保存结果。未来目标是实现Websocket即时通信,开发多人在线游戏功能,包括创建房间、实时点数输入和广播、多人结果保存。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

之后的几周,将就之前设计的黄金点游戏进行算法的优化,然后尝试将游戏进行网络化开发


小组成员

姓名学号
张伯威2018141461065
罗正2018141461092

一、已经完成的工作

首先尝试进行单人游戏的部署,目前可以完成的功能是单人游戏,游戏结果的查看与保存,可以尝试访问此链接来进行游戏的测试,可以直接查看网页的源代码

二、主要模块

1.游戏逻辑

这部分还是沿用前几周的算法:

var average = 0
var closestNumber = 0
var fartherNumber = 0
var closestSub = 100
var fartherSub = 0
for(let k=0;k<numberList.length;k++){
    average += parseFloat(numberList[k])
}
average = average / 10 * 0.618
console.log(average)
for (var k=0;k<numberList.length;k++){
	var playerSub = Math.abs(parseFloat(numberList[k]) - average)
	if (k == 0){
		closestSub = playerSub
		fartherSub = playerSub
		closestNumber = 0
		fartherNumber = 0
	}
	else {
		if (playerSub < closestSub){
    		closestNumber = k
		}
		if (playerSub > fartherSub){
	    	fartherNumber = k
		}
	}
}
$('.gameHolder .result').html("Win:" + (closestNumber+1) + " Lose:" + (fartherNumber+1))
player[parseInt(closestNumber)] += 10
player[parseInt(fartherNumber)] -= 2

2.界面的处理

通过Jquery来实现div的显示与隐藏,游戏的重新开始则是通过部分变量的清除与重建,这里是主要的部分:

$('.gameHolder').on('click','#reBegin',function () {
	$('.gameHolder').css('display','none')
	$('.beginBtn').css('display','block')
	$('#PNumber').val('')
	$('#TNumber').val('')
	$('.inputP').remove()
	$('#playerHolder div label').remove()
	$('.last1').css('display','none')
	$('.last2 p').remove()
	$('.result').html('')
	$('#upload').remove()
	$('#reBegin').remove()
	$('#upShow').remove()
	isClick = false
	loadFlag = false
	loadScore = ''
})

3.数据的提交

通过ajax进行数据的提交,其中score是游戏结果的html形式

$.ajaxSetup({
headers: {
	'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
	}
});
$.ajax({
	type:'post',
	url: '/goldgame',
	datatype: 'json',
	data:{
		"score": loadScore,
		"ajaxId": '2',
	},
	success:function (data) {
	loadFlag = true;
		$('#upShow').show()
	},
	error: function(request, status, error){
	alert(error);
	},
})

4.结果的保存

对发送的数据进行检测,检测到登录状态。登录之前没有数据则建立新的数据,有则进行数据的更新

if($request['ajaxId'] == '2' && session('nameLogin') != null){
	$ifHasUser = DB::table('gg_score')->where('userName','=',session('nameLogin'))->first();
	if ($ifHasUser == null){
		DB::insert('insert into gg_score(scoreId,userName,scores) values (?,?,?)',[null,
		session('nameLogin'),"<p>".date('Y-m-d h:i:s', time())."</p>".$request['score']]);
	}else{
		$score = DB::table('gg_score')->where('userName','=',session('nameLogin'))->first()->scores;
		$score = "<p>".date('Y-m-d h:i:s', time())."</p>".$request['score'].$score;
		DB::update('update gg_score set scores=? where userName=?',[$score,session('nameLogin')]);
	}
	return response()->json(['userName'=>session('nameLogin')]);
}

三、之后的目标

通过Websocket的方式实现即时通信,实现多人同时在线游玩此游戏。
预计功能:
1.创建游戏房间
2.实时的点数输入与广播
3.多人游戏结果的保存

如果发现了什么问题或者BUG,可以通过留言的形式告诉我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值