提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
之后的几周,将就之前设计的黄金点游戏进行算法的优化,然后尝试将游戏进行网络化开发
小组成员
姓名 | 学号 |
---|---|
张伯威 | 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,可以通过留言的形式告诉我