// main.js var draw = use('draw2d') var input = use('controller') var config = use('config') var color = use('color') prosperon.camera.transform.pos = [0,0] var paddleW = 10, paddleH = 80 var p1 = {x: 30, y: config.height*0.5, speed: 300} var p2 = {x: config.width-30, y: config.height*0.5, speed: 300} var ball = {x: 0, y: 0, vx: 220, vy: 150, size: 10} var score1 = 0, score2 = 0 function resetBall() { ball.x = config.width*0.5 ball.y = config.height*0.5 // give it a random vertical bounce ball.vy = (Math.random()<0.5 ? -1:1)*150 // keep horizontal speed to the same magnitude ball.vx = ball.vx>0 ? 220 : -220 } resetBall() this.update = function(dt) { // Move paddles: positive Y is up, so W/↑ means p.y += speed if (input.keyboard.down('w')) p1.y += p1.speed*dt if (input.keyboard.down('s')) p1.y -= p1.speed*dt // Paddle 2 movement (ArrowUp = up, ArrowDown = down) if (input.keyboard.down('i')) p2.y += p2.speed*dt if (input.keyboard.down('k')) p2.y -= p2.speed*dt // Clamp paddles to screen if (p1.y < paddleH*0.5) p1.y = paddleH*0.5 if (p1.y > config.height - paddleH*0.5) p1.y = config.height - paddleH*0.5 if (p2.y < paddleH*0.5) p2.y = paddleH*0.5 if (p2.y > config.height - paddleH*0.5) p2.y = config.height - paddleH*0.5 // Move ball ball.x += ball.vx*dt ball.y += ball.vy*dt // Bounce top/bottom if (ball.y+ball.size*0.5>config.height || ball.y-ball.size*0.5<0) ball.vy = -ball.vy // Check paddle collisions // p1 bounding box var left1 = p1.x - paddleW*0.5, right1 = p1.x + paddleW*0.5 var top1 = p1.y + paddleH*0.5, bottom1 = p1.y - paddleH*0.5 // p2 bounding box var left2 = p2.x - paddleW*0.5, right2 = p2.x + paddleW*0.5 var top2 = p2.y + paddleH*0.5, bottom2 = p2.y - paddleH*0.5 // ball half-edges var l = ball.x - ball.size*0.5, r = ball.x + ball.size*0.5 var b = ball.y - ball.size*0.5, t = ball.y + ball.size*0.5 // Collide with paddle 1? if (r>left1 && lbottom1 && bleft2 && lbottom2 && bconfig.width) { score1++; resetBall() } } this.hud = function() { // Clear screen black draw.rectangle({x:0, y:0, width:config.width, height:config.height}, [0,0,0,1]) // Draw paddles draw.rectangle({x:p1.x - paddleW*0.5, y:p1.y - paddleH*0.5, width:paddleW, height:paddleH}, color.white) draw.rectangle({x:p2.x - paddleW*0.5, y:p2.y - paddleH*0.5, width:paddleW, height:paddleH}, color.white) // Draw ball draw.rectangle({x:ball.x - ball.size*0.5, y:ball.y - ball.size*0.5, width:ball.size, height:ball.size}, color.white) // Simple score display var msg = score1 + " " + score2 draw.text(msg, {x:0, y:10, width:config.width, height:40}, undefined, 0, color.white, 0) }