持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
游戏玩法
玩家通过鼠标点击的方式打开灯光,假如运气好找到yoyo的藏身地,那么游戏会直接结束,假如运气不好,那么yoyo会更新藏身的位置,游戏难度地狱级,假如你找到了yoyo,那么抓紧下楼买彩票吧,今天你的运气一定爆表了
游戏机制
当点击开始运行后,游戏计时开始,玩家通过鼠标点击的方式打开一个50x50的区域,假如在区域内发现yoyo,则游戏结束,否则yoyo将会更新他的位置。
游戏实现
- 背景 背景采用了简单的背景图的方式,整体css盒模型采用了border-box
* {
margin: 0;
padding: 0;
list-style: none;
box-sizing: border-box;
}
html,
body {
width: 100%;
height: 100%;
overflow: auto;
/* background-image: url('https://pic.qy566.com/snake/bg.jpeg'); */
background-size: cover;
overflow: hidden;
}
- yoyo 哟哟采用的是背景图的形式,图片来源于掘金的登录页
#yoyo{
width: 50px;
height: 50px;
background-image: url('https://pic.qy566.com/snake/bg.jpeg');
background: #666;
background-size: cover;
position: absolute;
}
<div id="yoyo"></div>
- 幕布 为了将yoyo藏起来,我们还需要一张幕布,这里采用纯色背景来实现
.cover{
width: 100%;
height: 100%;
background: #333;
position: absolute;
top: 0;
left: 0;
}
<div class="cover"></div>
- 计时器 计时器采用了setInterval定时器来实现,页面加载完成就开始及时
#time{
width: 350px;
height: 40px;
position: fixed;
top: 0;
left: 0;
right: 0;
margin: auto;
color: #fff;
font-size: 20px;
line-height: 40px;
text-align: center;
z-index: 999;
}
<div id="time"></div>
let time = new Date().getTime()
let timer = setInterval(() => {
let t = (new Date().getTime() - time) / 1000
$('#time').text(t+'秒')
}, 10)
- 捕获灯光 捕获灯光默认是隐藏状态,通过鼠标点击激活,并进行处理
#light{
width: 50px;
height: 50px;
background: transparent;
border-radius: 50%;
box-shadow: 0 0 1000px 10000px #333;
position: absolute;
display: none;
}
<div id="light"></div>
- yoyo 位置更新的实现 通过获取容器宽高,赋予随机的位置
let w = document.body.clientWidth - 100
let h = document.body.clientHeight - 100
let YTop = null
lrandomPos()
function randomPos () {
YTop = Math.random() * h
YLeft = Math.random() * w
$('#yoyo').css('top',YTop + 'px')
$('#yoyo').css('left', YLeft + 'px')
}et YLeft = null
- 捕获yoyo的判断实现: 判断鼠标点击坐标-yoyo坐标的绝对值是否小于50,小于50则表示命中
document.body.onmousedown = function (e) {
let top = e.pageY - 25
let left = e.pageX - 25
$('#light').css('top', top+'px')
$('#light').css('left', left+'px')
$('#light').show()
$('.cover').hide()
if(Math.abs(left-YLeft)<=50 && Math.abs(top-YTop)<=50){
clearInterval(timer)
document.body.onmousedown = null
document.body.onmouseup = null
$('#time').text('恭喜你,成功解救YOYO,用时:'+$('#time').text())
return false
}
document.body.onmouseup = function () {
randomPos()
$('#light').hide()
$('.cover').show()
}
}
码上掘金
代码通过码上掘金的形式发布,欢迎试玩,游戏难度爆高!可以说是比羊了个羊还狗的游戏~