<!doctype html>
<head>
<style type= "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);
}
.panel span{
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>
<div id= "panel" class = "panel" >
<div class = "console" >
<div id= "start" class = "start" >开始</div>
<div id= "score" class = "score" >0</div>
<div id= "pause" class = "pause" >暂停</div>
</div>
<div id= "message" class = "message" ></div>
<div id= "ball" class = "ball" ></div>
<div id= "plate" class = "plate" ></div>
</div>
<div class = "promte" >提示:键盘左右箭头控制滑板</div>
<script type= "text/javascript" >
( function (){
document.onkeydown = function (e){
var e = e || window.event;
if (e.keyCode == 37){
plateMove( "left" );
} else if (e.keyCode == 39){
plateMove( "right" );
}
}
})();
var panel = 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;
var startGame, 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);
} else if (window.attachEvent){
start.attachEvent( "onclik" ,startClick);
pause.attachEvent( "onclik" ,pauseClick);
} else {
start.onclik = startClick;
pause.onclik = pauseClick;
}
}
function plateMove(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" ;
}
}
}
function startClick(){
if (!pauseActive){
resetGame();
} else {
pauseActive = !pauseActive;
}
startGame = setInterval( function (){
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);
}
function pauseClick(){
pauseActive = true;
clearInterval(startGame);
}
function resetGame(){
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" ;
}
}
function addDifficulty(){
if (parseInt(score.innerHTML) > 500 && parseInt(score.innerHTML) < 2000){
speed = 1.2;
} else if (parseInt(score.innerHTML) > 2000 && parseInt(score.innerHTML) < 5000){
speed = 1.5;
} else if (parseInt(score.innerHTML) > 5000){
if (typeof secondBall != "undefined" ){
secondBall.style.display= "" ;
} else {
secondBall = document.createElement( 'div' );
}
secondBall.className = 'secondBall' ;
panel.appendChild(secondBall);
secondBallX = secondBall.offsetLeft;
secondBallY = secondBall.offsetTop;
flag = false;
}
}
function setPosition(_x,_y,firstball){
if (_x == minX || _x == maxX){
firstball? x*=-1 : x2*=-1;
}
if (_y == minY || _y == maxY){
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>
|