Skip to content

Commit

Permalink
Merge branch 'better-movement'
Browse files Browse the repository at this point in the history
  • Loading branch information
clarkcutler committed Oct 13, 2011
2 parents 54cf3a7 + 89d93b1 commit 80696f3
Showing 1 changed file with 57 additions and 12 deletions.
69 changes: 57 additions & 12 deletions kenyan-chickens.html
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -37,34 +37,43 @@
var level = 1; var level = 1;
var caughtThisLevel = 0; var caughtThisLevel = 0;


function playableMinY() {
return Math.max(0, $('#game').attr('height') - 450);
}

function playableStartingY(img) { function playableStartingY(img) {
return Math.max(0, $('#game').attr('height') - 450 - img.height) + (Math.min(450, $('#game').attr('height')) - img.height) * Math.random(); return Math.max(0, $('#game').attr('height') - 450 - img.height) + (Math.min(450, $('#game').attr('height')) - img.height) * Math.random();
} }


var chicken = function() { var chicken = function() {
var x = ($('#game').attr('width') - chickenImg.width)*Math.random();
var y =playableStartingY(chickenImg);
var dragging = false; var dragging = false;
var caught = false; var caught = false;


return { return {
x: ($('#game').attr('width') - chickenImg.width)*Math.random(),
y: playableStartingY(chickenImg),
draw: function () { draw: function () {
context.drawImage(chickenImg, x, y); context.drawImage(chickenImg, this.x, this.y);
}, },
move: function () { move: function () {
if (!dragging && !caught) { if (!dragging && !caught) {
x += 2*Math.random() - 1; this.doMove();
y += 2*Math.random() - 1;
} }
}, },
doMove: function () {
this.x += 2*Math.random() - 1;
this.y += 2*Math.random() - 1;
},
startDrag: function(xClick, yClick) { startDrag: function(xClick, yClick) {
if (!caught) { if (!caught) {
var xOffset = xClick - x; var xOffset = xClick - this.x;
var yOffset = yClick - y; var yOffset = yClick - this.y;
dragging = true; dragging = true;

var that = this;
canvas.onmousemove = function(e) { canvas.onmousemove = function(e) {
x = e.x - canvas.offsetLeft - xOffset; that.x = e.x - canvas.offsetLeft - xOffset;
y = e.y - canvas.offsetTop - yOffset + document.body.scrollTop; that.y = e.y - canvas.offsetTop - yOffset + document.body.scrollTop;
} }
} }
}, },
Expand All @@ -73,7 +82,7 @@
dragging = false; dragging = false;
}, },
distanceFrom: function(x2, y2) { distanceFrom: function(x2, y2) {
return Math.sqrt(Math.pow(x + 24 - x2, 2) + Math.pow(y + 28 - y2, 2)); return Math.sqrt(Math.pow(this.x + 24 - x2, 2) + Math.pow(this.y + 28 - y2, 2));
}, },
catch: function() { catch: function() {
if (dragging) { if (dragging) {
Expand All @@ -87,9 +96,45 @@
} }
}; };


var straightLineChicken = function () {
var baseChicken = chicken();
baseChicken.doMove = function () {
baseChicken.x += 1;
}
return baseChicken;
}

var pacingChicken = function (magnitude, changeDirectionsAfterSteps) {
var dx, dy, stepsInThisDirection;

function init() {
stepsInThisDirection = 0;
dx = -1 + 2*Math.random();
dy = -1 + 2*Math.random();
}

init();

var baseChicken = chicken();
baseChicken.doMove = function () {
if (baseChicken.x < 0) { dx = Math.abs(dx); stepsInThisDirection = 0; }
if (baseChicken.x + chickenImg.width > $('#game').attr('width')) { dx = -Math.abs(dx); stepsInThisDirection = 0; }
if (baseChicken.y < playableMinY()) { dy = Math.abs(dy); stepsInThisDirection = 0; }
if (baseChicken.y + chickenImg.height > $('#game').attr('height')) { dy = -Math.abs(dy); stepsInThisDirection = 0; }

baseChicken.x += magnitude*dx;
baseChicken.y += magnitude*dy;
stepsInThisDirection += 1;
if (stepsInThisDirection > changeDirectionsAfterSteps) {
init();
}
}
return baseChicken;
}

levels = [ levels = [
function () { chickens = [chicken(), chicken(), chicken()]; }, function () { chickens = [pacingChicken(3, 20), pacingChicken(4, 15), pacingChicken(5, 25)]; },
function () { chickens = [chicken(), chicken(), chicken(), chicken()]; } function () { chickens = [pacingChicken(4,15), pacingChicken(4,15), pacingChicken(5,20), pacingChicken(5,15), pacingChicken(6,20)]; }
] ]


start = function() { start = function() {
Expand Down

0 comments on commit 80696f3

Please sign in to comment.