使用html+css+js实现弹球游戏
17969075ca2705a31a16ae54b880bb9.png
代码如下,复制即可使用:
<!doctypehtml>
<head>
<styletype="text/css">
.panel{
position:relative;
z-index:0;
top:0px;
left:400px;
width:300px;
height:500px;
}
.console{
position:absolute;
z-index:1;
top:0;
left:0;
width:100%;
height:40px;
background-color:#bbb;
}
.message{
position:absolute;
z-index:1;
top:40px;
left:0;
width:100%;
height:460px;
color:white;
font-size:50px;
text-align:center;
line-height:460px;
background-color:#999;
}
.start,.score,.pause{
position:absolute;
z-index:2;
top:0;
width:100px;
height:100%;
font-size:large;
color:white;
text-align:center;
line-height:40px;
background:-webkit-linear-gradient(top,#4ca8ff,yellow);
}
.start{
left:0px;
}
.score{
left:100px;
background-color:red;
}
.pause{
left:200px;
}
.start:after,.pause:before{
content:"";
position:absolute;
z-index:2;
top:0;
width:3px;
height:100%;
background:-webkit-linear-gradient(top,#666,#999);
}
.start:after{
left:97px;
}
.pause:before{
left:0px;
}
.start:hover,.pause:hover{
cursor:pointer;
background:-webkit-linear-gradient(top,#4ca8ff,red);
}
.panelspan{
position:absolute;
z-index:0;
top:50%;
left:50%;
font-size:50px;
color:blue;
}
.ball,.secondBall{
position:absolute;
z-index:2;
border-radius:50%;
width:20px;
height:20px;
}
.ball{
top:460px;
left:140px;
background-color:red;
}
.secondBall{
top:40px;
left:140px;
background-color:red;
}
.plate{
position:absolute;
top:480px;
left:100px;
z-index:2;
width:100px;
height:20px;
background-color:#e5e5e5;
}
.promte{
margin-top:20px;
text-align:center;
}
</style>
</head>
<body>
<divid="panel"class="panel">
<divclass="console">
<divid="start"class="start">开始</div>
<divid="score"class="score">0</div>
<divid="pause"class="pause">暂停</div>
</div>
<divid="message"class="message"></div>
<divid="ball"class="ball"></div>
<divid="plate"class="plate"></div>
</div>
<divclass="promte">提示:键盘左右箭头控制滑板</div>
<scripttype="text/javascript">
(function(){
document.onkeydown=function(e){
vare=e||window.event;
if(e.keyCode==37){
//键盘向左键
plateMove("left");
}elseif(e.keyCode==39){
//键盘向右键
plateMove("right");
}
}
})();
varpanel=document.getElementById("panel"),
message=document.getElementById("message"),
plate=document.getElementById("plate"),
ball=document.getElementById("ball"),
start=document.getElementById("start"),
score=document.getElementById("score"),
pause=document.getElementById("pause"),
secondBall;
varstartGame,x=x2=-1,y=y2=-1,speed=1,positionArr=[],pauseActive=false,
//一个标志:表示难度是否还能增加
flag=true,
//球的起始位置
ballX,ballY,secondBallX,secondBallY,
//边界
minX=0,
maxX=panel.offsetWidth-ball.offsetWidth,
minY=40;
maxY=panel.offsetHeight-ball.offsetHeight-plate.offsetHeight;
window.onload=function(){
if(window.addEventListener){
start.addEventListener("click",startClick,false);
pause.addEventListener("click",pauseClick,false);
}elseif(window.attachEvent){
start.attachEvent("onclik",startClick);
pause.attachEvent("onclik",pauseClick);
}else{
start.onclik=startClick;
pause.onclik=pauseClick;
}
}
functionplateMove(direction){
if(direction=="left"){
if(plate.offsetLeft>0){
plate.style.left=(plate.offsetLeft-30<0?0:plate.offsetLeft-30)+"px";
}
}
if(direction=="right"){
if(plate.offsetLeft<200){
plate.style.left=(plate.offsetLeft+30>200?200:plate.offsetLeft+30)+"px";
}
}
}
functionstartClick(){
if(!pauseActive){
resetGame();
}else{
pauseActive=!pauseActive;
}
startGame=setInterval(function(){
//console.log(ballX+"======"+ballY);
positionArr=setPosition(ballX,ballY,true);
if(positionArr=="GAMEOVER"){
return;
}
ballX=positionArr[0];
ballY=positionArr[1];
//设置球的位置
ball.style.left=ballX+"px";
ball.style.top=ballY+"px";
if(!flag){
positionArr=setPosition(secondBallX,secondBallY,false);
secondBallX=positionArr[0];
secondBallY=positionArr[1];
secondBall.style.left=secondBallX+"px";
secondBall.style.top=secondBallY+"px";
}else{
addDifficulty();
}
},30);
}
functionpauseClick(){
pauseActive=true;
clearInterval(startGame);
}
functionresetGame(){
clearInterval(startGame);
message.innerHTML="";
score.innerHTML="0";
ball.style.left="140px";
ball.style.top="460px";
plate.style.left="100px";
plate.style.top="480px";
ballX=ball.offsetLeft;
ballY=ball.offsetTop;
speed=1;
flag=true;
//第二个球设置隐藏
if(secondBall){
secondBall.style.display="none";
secondBall.style.left="140px";
secondBall.style.top="40px";
}
}
functionaddDifficulty(){
if(parseInt(score.innerHTML)>500&&parseInt(score.innerHTML)<2000){
speed=1.2;
}elseif(parseInt(score.innerHTML)>2000&&parseInt(score.innerHTML)<5000){
speed=1.5;
}elseif(parseInt(score.innerHTML)>5000){
if(typeofsecondBall!="undefined"){
secondBall.style.display="";
}else{
secondBall=document.createElement('div');
}
secondBall.className='secondBall';
panel.appendChild(secondBall);
secondBallX=secondBall.offsetLeft;
secondBallY=secondBall.offsetTop;
flag=false;
}
}
functionsetPosition(_x,_y,firstball){
if(_x==minX||_x==maxX){
//x*=-1;
firstball?x*=-1:x2*=-1;
}
if(_y==minY||_y==maxY){
//y*=-1;
firstball?y*=-1:y2*=-1;
}
if(_y==maxY){
//判断挡板的位置是不是在球的范围内
if(plate.offsetLeft>_x||(plate.offsetLeft+plate.offsetWidth)<_x){
clearInterval(startGame);
message.innerHTML="GAMEOVER";
return"GAMEOVER";
}
}
if(firstball){
_x+=4*x*speed;
_y+=5*y*speed;
}else{
_x+=4*x2*speed;
_y+=5*y2*speed;
}
//边界处理
_x=_x<minX?minX:_x;
_x=_x>maxX?maxX:_x;
_y=_y<minY?minY:_y;
_y=_y>maxY?maxY:_y;
//设置分数
score.innerHTML=parseInt(score.innerHTML)+10*speed;
return[_x,_y];
}
</script>
</body>
</html>
如果您有更好的方法或更多的功能,可以和我们大家一起分享哦,如有错误,欢迎联系我改正,非常感谢!!!
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/w3c/w56056.shtml