php 写一个大富翁游戏,抽奖系列:如何用纯js做一个大富翁游戏
话不多说,先上效果图:
功能点:
礼品的位置
小怪兽位置的变化(走路、转身和回退)
小怪兽的跳跃弧度
确定好功能点,接下来就是逐个击破:
1、渲染奖品
获取奖品数据后,建一个数组存放奖品的位置,通过遍历数据把奖品循环输出到页面上对应的位置。
.gift{position:relative;}
.gift li{position: absolute;}
//获取奖品
(function getPrize(){
$.ajax({
url:'你家的奖品接口',
success:function(res){
if(res.length == 0)return;
let i=0 ;
for(;i
if(i<8){
positionList.push({top:0,left:i*86+258+margin_left,className:'monster-left'});
}else if(i<11){
positionList.push({top:positionList[i-1].top+86,left:positionList[i-1].left,className:'monster'});
}else if(i<13){
positionList.push({top:positionList[i-1].top,left:positionList[i-1].left-86,className:'monster-right'});
}else if(i<17){
positionList.push({top:positionList[i-1].top+86,left:positionList[i-1].left,className:'monster'});
}else if(i<25){
positionList.push({top:positionList[i-1].top,left:positionList[i-1].left-86,className:'monster-right'});
}else if(i<28){
positionList.push({top:positionList[i-1].top-86,left:positionList[i-1].left,className:'monster-back'});
}else if(i<30){
positionList.push({top:positionList[i-1].top,left:positionList[i-1].left+86,className:'monster-left'});
}else{
positionList.push({top:positionList[i-1].top-86,left:positionList[i-1].left,className:'monster-back'});
}
gift_list += `
${i+1}`;
}
$(".gift").append(gift_list);
},
error:function(){
}
})
})()
复制代码
2、小怪兽的位置变化:
摇完骰子后,判断位置的变化是前进还是后退。后台接口需要返回两个位置的数据,一个是第一次的位置,一个是第二次的位置。判断两个位置是否相等。如果相等,则小怪兽只前进,无后退。否则,小怪兽先到达第一个位置之后,函数回调传入第二个位置,小怪兽再跳到第二个位置。
转身动画。把每个位置小怪兽身体方向记录到奖品位置那个数组里面去,到达位置的同时,追加相应的css改变小怪兽身体的方向。
//obj移动的块,i位置一,tips跳到指定位置后要弹出的内容,gift获得的奖品,indet特殊情况再掷一次的标志,goBack位置二
function go(obj, i, tips, gift, ident, goBack) {
let step = parseInt(i);
if (cur_index > step && cur_index == 33) {
cur_index = 0;
}
setTimeout(function () {
$(obj).removeClass(function () {
return $(obj).attr('class').split(' ').slice(1).join(' '); //除了小怪兽的原来样式,其他转身效果的全部去掉
});
if (cur_index == step) {
setTimeout(function () {
$(obj).addClass('active');
if (ident == 'again') {
//恭喜您,可再掷一次
$(obj).data('tips', tips);
return;
}
if (gift != "") {
//抽中xx奖品
} else {
//没有抽中
}
}
}, 500);
if (goBack) { //有第二个位置
setTimeout(function () {
go($(obj), goBack, "", gift, ident);
}, 1000)
playing = true; //禁止点击开始游戏按钮的标志
return;
}
setTimeout(function () {
playing = false;
}, 1000)
return;
} else if (cur_index > step && step > 6) { //后退是不会大于6步的
fly($(obj), positionList[cur_index - 1], positionList[cur_index - 2]);
$(obj).addClass(positionList[cur_index - 1].className);
cur_index--;
go($(obj), step, tips, gift, ident, goBack);
return;
} else { // 前进
fly($(obj), positionList[cur_index - 1], positionList[cur_index]);
$(obj).addClass(positionList[cur_index].className);
cur_index++;
go($(obj), step, tips, gift, ident, goBack);
}
}, 500);
}
function fly(obj, startPosition, endPosition) { //obj运动的小怪兽
if (startPosition == undefined) {
startPosition = {
left: 0
}
}
if (startPosition.left < endPosition.left) {
setTimeout(function () {
$(obj).css({
'top': endPosition.top - 35,
'left': endPosition.left - 33
});
})
} else if (startPosition.left > endPosition.left) {
setTimeout(function () {
$(obj).css({
'top': endPosition.top - 35,
'left': endPosition.left + 33
});
})
} else {
}
setTimeout(function () {
$(obj).css({
'top': endPosition.top,
'left': endPosition.left
});
}, 200);
}
复制代码
3、 小怪兽跳跃的弧度。
可以采用半步半步的跳法,运动轨迹如下可见。可以做到跳跃的效果。(注意:图中第四个坐标写错了,应该是(120,-40))
核心代码大致就是这样了。
掘金这个代码的编辑器缩进太糟糕了,我已经不想一行行改了,各位自行复制去编辑器里看吧。
可以的话,点个赞吧
最后,欢迎交流
请不要再问我要源代码了,上面的代码已经是精简过的,各个人业务需求不一样,我的源代码也不可能满足你的需求,恕我无能为力。
php 写一个大富翁游戏,抽奖系列:如何用纯js做一个大富翁游戏相关推荐
- 如何用纯js做一个大富翁游戏
下面这张是效果图: 先立个flag,一个星期内把这个坑填了 今天7月1号,建党节,在这个伟大的节日,我来填坑了. 这个游戏有以下几个难点: 1.礼品的位置 2.小怪兽位置的变化(走路.转身和回退) 3 ...
- Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的
2019独角兽企业重金招聘Python工程师标准>>> 又是一个愉快的夜晚 还是那张长长的工作桌 哲哲在左边做一个香云纱手包 骨头在这里噼里啪啦的解刨 pad里放着<赢在中国& ...
- 2048小游戏html制作,[ 逻辑锻炼] 用 JavaScript 做一个小游戏 ——2048 (详解版)
前言 这次使用了 vue 来编写 2048,主要目的是温习一下 vue. 但是好像没有用到太多 vue 的东西,==! 估计可能习惯了不用框架吧 之前由于时间关系没有对实现过程详细讲解,本次会详细讲解 ...
- 用 JS 做一个数独游戏(二)
用 JS 做一个数独游戏(二) 在 上一篇博客 中,我们通过 Node 运行了我们的 JavaScript 代码,在控制台中打印出来生成好的数独终盘.为了让我们的数独游戏能有良好的体验,这篇博客将会为 ...
- 如何使用graphpad做柱形图_系列文章 如何使用PaddleDetection做一个完整项目(三)...
系列文章 如何使用PaddleDetection做一个完整项目(三) 该文章是PaddleDetection的完结篇,请参考之前两篇文章 https://zhuanlan.zhihu.com/p/10 ...
- 纯js单页面赛车游戏
纯js单页面赛车游戏 这次就是给大家分享赛车的游戏: 废话不多,直接上代码: <!DOCTYPE html> <html> <head><meta chars ...
- video.min.js php,使用flv.js与video.js做一个视频直播效果
这次给大家带来使用flv.js与video.js做一个视频直播效果,使用flv.js与video.js做出视频直播效果的注意事项有哪些,下面就是实战案例,一起来看一下. 环境配置 首先运行livego ...
- 纯js封装一个多功能弹出框
不借助其它的css代码和图片资源,可直接调用. 原创内容,请勿转载. 注意,不要直接复制文章里的封装代码,因为编辑器的原因,无论怎么编辑,它还是给修改了代码.文末提供了封装代码的下载地址(无需积分) ...
- 如何用 Node.js 实现一个简单的 Websocket 服务?
最近正在研究 Websocket 相关的知识,想着如何能自己实现 Websocket 协议.到网上搜罗了一番资料后用 Node.js 实现该协议,倒也没有想象中那么复杂,除去注释语句和 console ...
最新文章
- Python-OpenCV运动物体检测
- python正则取字符串日期_python 正则表达式获取字符串中所有的日期和时间
- WebApi2 知识点总结
- 标准库中的智能指针shared_ptr
- 【学术相关】为什么吐槽导师的帖子几乎全是理工科类?文科的研究生都在干嘛?...
- matlab的数学函数,matlab中常见数学函数的使用
- STM32线缆综合测试系统
- 浮动和清除(闭合)浮动
- 在vue 中使用Stylus
- TeamTalk UtilPdu详解
- Fluent 全流程求解多孔介质算例
- 计算机word正文样式怎么新建,Word怎么给格式和样式设定快捷键
- 飞行器中传感器测量原理及测量模型
- openstack里给云主机配置vip
- C. Multiples of Length 思维构造
- php永久mediaid,幺蛾子事件之-zabbix配置告警媒介报错mediaid重复
- DSP学习(5)—— Timer的使用
- ZBrush自带笔刷的特性你都知道哪些?
- canvas实现点线动画效果
- 音乐服务器制作教程,分享硬盘中的音乐 DLNA服务搭建教程