Skip to content

Instantly share code, notes, and snippets.

@ynonp
Created September 16, 2012 10:52
Show Gist options
  • Save ynonp/3731966 to your computer and use it in GitHub Desktop.
Save ynonp/3731966 to your computer and use it in GitHub Desktop.
Pong Game
<!DOCTYPE html>
<html>
<head>
<title>Pong</title>
<style>
canvas {
border: 2px solid #a7a7a7;
}
</style>
<meta name="viewport" content="user-scalable=0,initial-scale=1,maximum-scale=1,minimum-scale=1" />
</head>
<body>
<button>Start</button>
<canvas width='300' height="300"></canvas>
<script src="game_starter.js"></script>
</body>
</html>
/**
* Created with JetBrains WebStorm.
* User: ynonperek
* Date: 9/16/12
* Time: 12:03 PM
* To change this template use File | Settings | File Templates.
*/
(function() {
var Ball = function(x, y) {
var self = {};
// Insert Code Here
return self;
};
var Player = function() {
var self = {};
// Insert Code Here
return self;
};
var GameRules = function( loop, ball, player ) {
var self = {};
self.update = function() {
if ( ( ball.y() >= player.y() ) ) {
if ( Math.abs( ball.x() - player.x() ) < 45 ) {
ball.flip_y();
} else {
loop.stop();
}
}
};
return self;
};
var GameLoop = function( ctx ) {
var self = { objects: [], ctx: ctx };
var timer_id;
self.addObject = function(o) {
self.objects.push(o);
return self.objects.length - 1;
};
self.removeObject = function(object_id) {
// sets the element to undefined so
// all other indices remain the same
delete self.objects[object_id];
};
self.update = function() {
for ( var i= 0, len = self.objects.length;
i < len;
i++ ) {
if ( self.objects[i] &&
typeof self.objects[i].update === 'function') {
self.ctx.save();
self.objects[i].update( self.ctx );
self.ctx.restore();
}
}
};
self.start = function() {
self.stop();
timer_id = setInterval( function() {
self.update();
}, 1000/33);
};
self.stop = function() {
if ( timer_id ) {
clearInterval(timer_id);
}
};
return self;
};
var can = document.querySelector('canvas');
var ctx = can.getContext('2d');
var b = new Ball(50, 40);
var p = new Player();
var g = new GameLoop(ctx);
var rules = new GameRules( g, b, p );
var prev_x = null;
can.addEventListener('touchmove', function(e) {
e.preventDefault();
var t = e.touches.item(0);
// Insert code here
prev_x = t.clientX;
});
g.addObject(p);
g.addObject(b);
g.addObject(rules);
g.start();
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment