分享一段小游戏源码,经典的打砖块。
游戏效果:
不支持的音频/视频格式请试试刷新重播播放00:00/00:00正在直播00:00进入全屏50点击按住可拖动视频
源码:
.container{
width: 500px;
height: 500px;
border:0px solid 000;
margin:auto;
position:relative;
border: 5px solid rgb(179, 178, 177);
}
.brickBox{
width: 500px;
height: 300px;
position:absolute;
left: 0;
top: 0;
}
.ball{
width: 15px;
height: 15px;
background-color:purple;
border-radius:50%;
position:absolute;
bottom:30px;
left:235px;
}
.slider{
width: 150px;
height: 30px;
background-color: 00f;
position:absolute;
left:175px;
bottom:0;
}
// 获取当前所有标签
var container = document.querySelector(.container)
var brickBox = container.querySelector(.brickBox)
var ball = container.querySelector(.ball)
var slider = container.querySelector(.slider)
// 动态创建砖块
// 定义砖块大小
var brickWidth = 50;
var brickHeight = 15;
// 计算砖块数量
var brickNum = brickBox.clientWidth * brickBox.clientHeight / (brickWidth * brickHeight)
// console.log(brickNum);
var brickColNum = brickBox.clientWidth / brickWidth
// 根据数量去创建
for(var i=0;i
var div = document.createElement(div)
setStyle(div,{
width:brickWidth + "px",
height:brickHeight + "px",
backgroundColor:getColor(true),
position:absolute,
top:parseInt(i/brickColNum)*brickHeight + px,
left:(i%brickColNum)*brickWidth + px
})
brickBox.appendChild(div)
}
// 点击滑块让小球开始运动
// 定义横向移动的值和纵向移动的值
var speedX = getRandom(1,8);
var speedY = getRandom(1,8);
var timer;
//点击移动
slider.onclick = move;
move();
//回车键开始弹
function move(){
var count=0;
clearInterval(timer)
timer = setInterval(function(){
// 开始移动
// 获取小球的left和top
var left = ball.offsetLeft;
var top = ball.offsetTop;
// 让left和top增加速度
// 小球和滑块相撞
if(boom(slider,ball)){
speedY = -speedY
}
// 小球和大盒子相撞
if(left<=0 || left>=container.clientWidth - ball.offsetWidth){
speedX = -speedX
}
if(top<=0){
speedY = -speedY
}
// 检测所有砖块和小球是否相撞
for(var i=0;i
if(boom(brickBox.children[i],ball)){
speedY = -speedY
brickBox.removeChild(brickBox.children[i]);
count++;
}
}
console.log(count)
// GAME OVER
if(top>=container.clientHeight-ball.offsetHeight){
clearInterval(timer)
location.reload();
}
left += speedX
top += speedY
// 设置给小球的left和top
ball.style.left = left + "px"
ball.style.top = top + "px"
},20)
}
// 让滑块跟着鼠标移动
document.onmousemove = function(e){
var e = e || window.event;
var x = e.pageX;
var l = x - container.offsetLeft - 1 - slider.offsetWidth/2
if(l<0){
l = 0
}
if(l > container.clientWidth - slider.offsetWidth){
l = container.clientWidth - slider.offsetWidth
}
slider.style.left = l + "px"
}
//让滑块跟着左右键盘移动
window.onload= function(){
document.onkeydown = function(){
var e = e || window.event;
var keycode = e.keyCode || e.which;
var keyword = String.fromCharCode(keycode).toLowerCase();
if(keycode==13){
move();
}
if(keyword==a){
console.log("1111")
slider.style.left= slider.offsetLeft-15+"px"
}else if(keyword==d){
console.log("222")
slider.style.left=slider.offsetLeft+15+"px"
}
console.log(slider.offsetLeft)
}
}
// 封装检测相撞的函数
function boom(node1,node2){
// 不撞在一起的只有4种可能
if(node1.offsetLeft+node1.offsetWidth
return false;
}else{
return true;
}
}
// 封装获取随机颜色的函数
function getColor(){
hex=true
if(hex){
var color =
for(var i=0;i<3;i++){
var rgb = getRandom(256).toString(16);
rgb = rgb.length===1?0+rgb:rgb;
color += rgb
}
return color;
}
return "rgb(${getRandom(256)},${getRandom(256)},${getRandom(256)})"
}
// 封装设置样式的函数
function setStyle(ele,styleObj){
for(var attr in styleObj){
ele.style[attr] = styleObj[attr]
}
}
// 封装获取随机数的函数
function getRandom(a,b=0){
var max = Math.max(a,b);
var min = Math.min(a,b)
return Math.floor(Math.random() * (max-min)) + min
}
如要保护游戏源码,比如防止别人分析、复制,或者在微信小游戏提交过审时未通过,可对上面内容中的JS代码进行加密。
在JShaman平台将上面的JS代码加密:
加密后的代码:
.container{
width: 500px;
height: 500px;
border:0px solid 000;
margin:auto;
position:relative;
border: 5px solid rgb(179, 178, 177);
}
.brickBox{
width: 500px;
height: 300px;
position:absolute;
left: 0;
top: 0;
}
.ball{
width: 15px;
height: 15px;
background-color:purple;
border-radius:50%;
position:absolute;
bottom:30px;
left:235px;
}
.slider{
width: 150px;
height: 30px;
background-color: 00f;
position:absolute;
left:175px;
bottom:0;
}
(function(_0x106695,_0x7a9f2){function _0x987279(_0x4ff414,_0x48e66c,_0x16fb1e,_0x627e93,_0x2763d3){return _0x2d98(_0x627e93- -0x282,_0x16fb1e);}function _0x51272a(_0x6f1e82,_0x38dcf6,_0x4d7876,_0x3435c0,_0x304cfc){return _0x2d98(_0x38dcf6-0x225,_0x6f1e82);}function _0x28bb51(_0x514106,_0x50a055,_0x3de395,_0x4a080b,_0x4f5e7f){return _0x2d98(_0x50a055-0x1e4,_0x4a080b);}var _0x15445a=_0x106695();function _0x39c828(_0x16d163,_0x2a5585,_0x506882,_0x16141a,_0x126e55){return _0x2d98(_0x16141a-0x22c,_0x16d163);}function _0x27a334(_0x3a669a,_0x396993,_0x590e7a,_0x31259b,_0x8d8b56){return _0x2d98(_0x8d8b56- -0x25e,_0x3a669a);}while(!![]){try{var _0xaf2ccf=parseInt(_0x51272a(0x23b,0x234,0x24b,0x244,0x222))/0x1+parseInt(_0x28bb51(0x20e,0x200,0x203,0x1e9,0x1f5))/0x2*(-parseInt(_0x987279(-0x285,-0x259,-0x279,-0x27a,-0x299))/0x3)+parseInt(_0x27a334(-0x25c,-0x23b,-0x251,-0x258,-0x253))/0x4*(parseInt(_0x28bb51(0x1d6,0x1ed,0x1df,0x202,0x1d5))/0x5)+parseInt(_0x987279(-0x23b,-0x26a,-0x24a,-0x253,-0x241))/0x6*(parseInt(_0x27a334(-0x243,-0x254,-0x264,-0x252,-0x250))/0x7)+-parseInt(_0x51272a(0x235,0x253,0x269,0x257,0x252))/0x8+parseInt(_0x28bb51(0x203,0x1fd,0x219,0x206,0x1e1))/0x9*(-parseInt(_0x987279(-0x272,-0x248,-0x27f,-0x264,-0x26e))/0xa)+-parseInt(_0x39c828(0x238,0x248,0x24c,0x233,0x247))/0xb*(-parseInt(_0x39c828(0x26a,0x255,0x269,0x25c,0x268))/0xc);if(_0xaf2ccf===_0x7a9f2){break;}else{_0x15445a[push](_0x15445a[shift]());}}catch(_0x2d7379){_0x15445a[push](_0x15445a[shift]());}}}(_0x220a,0xa848a));function _0x5b2c7f(_0x1a3699,_0x15d216,_0x29b9b8,_0x270bfa,_0x215f26){return _0x2d98(_0x270bfa-0x151,_0x215f26);}var _0x96g=0x9+0x8;var container=document[querySelector](_0x3f2dcd(-0x77,-0x7e,-0x5f,-0x8a,-0x55));_0x96g=_0x3f2dcd(-0x49,-0x4b,-0x3a,-0x42,-0x43);var brickBox=container[querySelector](_0x40328e(-0x70,-0x51,-0x3a,-0x53,-0x3b));var _0x;function _0x53ec76(_0x2ca6bd,_0x480c06,_0x3e8184,_0x4f4b93,_0x29bfbb){return _0x2d98(_0x29bfbb-0x3a8,_0x2ca6bd);}var ball=container[querySelector](_0x3f2dcd(-0x45,-0x49,-0x45,-0x3a,-0x32));_0x=0x8;var slider=container[querySelector](_0x3f2dcd(-0x5a,-0x72,-0x6f,-0x72,-0x71));var brickWidth=0xccd4c^0xccd7e;var brickHeight=0xe1991^0xe199e;var brickNum=brickBox[clientWidth]*brickBox[clientHeight]/(brickWidth*brickHeight);var brickColNum=brickBox[clientWidth]/brickWidth;function _0x3f2dcd(_0x515b95,_0x3976d7,_0x2df7f9,_0x3cd0e3,_0x322e9d){return _0x2d98(_0x515b95- -0x83,_0x3976d7);}for(var i=0x557ff^0x557ff;i
JS代码加密后,功能完全不受影响,与加密前一样使用。
特别声明:文章来源用户上传并发布,本站只提供信息存储服务,不拥有所有权,内容仅供参考。