打砖块小游戏(打砖块小游戏在线玩)

抒情君 12

分享一段小游戏源码,经典的打砖块。

游戏效果:

不支持的音频/视频格式请试试刷新重播播放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代码加密后,功能完全不受影响,与加密前一样使用。

上一篇:

下一篇:

  推荐阅读

分享