| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <title>Gamedev Canvas Workshop - lesson 4: paddle and keyboard controls</title> | |
| <style>* { padding: 0; margin: 0; } canvas { background: #eee; display: block; margin: 0 auto; }</style> | |
| </head> | |
| <body> | |
| <canvas id="myCanvas" width="480" height="320"></canvas> | |
| <script> | |
| var canvas = document.getElementById("myCanvas"); | |
| var ctx = canvas.getContext("2d"); | |
| var ballRadius = 10; | |
| var x = canvas.width/2; | |
| var y = canvas.height-30; | |
| var dx = 2; | |
| var dy = -2; | |
| var paddleHeight = 10; (板子的高度) | |
| var paddleWidth = 75; | |
| var paddleX = (canvas.width-paddleWidth)/2; | |
| var rightPressed = false; | |
| var leftPressed = false; | |
| document.addEventListener("keydown", keyDownHandler, false); | |
| document.addEventListener("keyup", keyUpHandler, false); | |
| function keyDownHandler(e) { | |
| if(e.keyCode == 39) { | |
| rightPressed = true; | |
| } | |
| else if(e.keyCode == 37) { | |
| leftPressed = true; | |
| } | |
| } | |
| function keyUpHandler(e) { | |
| if(e.keyCode == 39) { | |
| rightPressed = false; | |
| } | |
| else if(e.keyCode == 37) { | |
| leftPressed = false; | |
| } | |
| } | |
| function drawBall() { | |
| ctx.beginPath(); | |
| ctx.arc(x, y, ballRadius, 0, Math.PI*2); | |
| ctx.fillStyle = "#0095DD"; | |
| ctx.fill(); | |
| ctx.closePath(); | |
| } | |
| function drawPaddle() { | |
| ctx.beginPath(); | |
| ctx.rect(paddleX, canvas.height-paddleHeight, paddleWidth, paddleHeight); | |
| ctx.fillStyle = "#0095DD"; | |
| ctx.fill(); | |
| ctx.closePath(); | |
| } | |
| function draw() { | |
| ctx.clearRect(0, 0, canvas.width, canvas.height); | |
| drawBall(); | |
| drawPaddle(); | |
| if(x + dx > canvas.width-ballRadius || x + dx < ballRadius) { | |
| dx = -dx; | |
| } | |
| if(y + dy > canvas.height-ballRadius || y + dy < ballRadius) { | |
| dy = -dy; | |
| } | |
| if(rightPressed && paddleX < canvas.width-paddleWidth) { | |
| paddleX += 7; (板子碰到框時的變化方向) | |
| } | |
| else if(leftPressed && paddleX > 0) { | |
| paddleX -= 7; | |
| } | |
| x += dx; | |
| y += dy; | |
| } | |
| setInterval(draw, 10); | |
| </script> | |
| </body> | |
| </html> |
2016年5月24日 星期二
打磚塊遊戲-球拍和鍵盤控制-程式碼4
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言