<script src="http://spelprogrammering.nu/simple.js">
function start()
{
zombies = [];
deadZombies = [];
clock = 0;
spawn = 30;
bulletsFired = 0;
zombiesKilled = 0;
circle(10, 10, 10, "lightgreen");
zombieColor = getPixel(10, 10);
fill("black");
zombies.push(new Zombie(2, 43));
zombies.push(new Zombie(1, 93));
zombies.push(new Zombie(2, 27));
zombies.push(new Zombie(4, 79));
zombies.push(new Zombie(2, 107));
zombies.push(new Zombie(5, 83));
zombies.push(new Zombie(4, 152));
zombies.push(new Zombie(5, 62));
zombies.push(new Zombie(3, 127));
zombies.push(new Zombie(1, 36));
//zombies.push(new Zombie(1, 34));
//zombies.push(new Zombie(4, 82));
//zombies.push(new Zombie(1, 66));
//zombies.push(new Zombie(3, 163));
//zombies.push(new Zombie(1, 161));
//zombies.push(new Zombie(1, 117));
zombies.push(new Zombie(4, 126));
zombies.push(new Zombie(5, 115));
zombies.push(new Zombie(1, 150));
zombies.push(new Zombie(4, 119));
for (var i = 0; i < 600; i++)
fakeupdate();
}
function fakeupdate()
{
if (! c.running) { return; };
mouse = { x: 655, y: 500 };
fill("white");
rectangle(0, 0, totalWidth, totalHeight/2, "37B6FF");
save();
translate(totalWidth / 2 - 370, totalHeight / 2 - 300);
rectangle(200, 150, 300, 200, "A22416");
circle(510, 100, 40, "white");
circle(550, 100, 50, "white");
circle(600, 100, 30, "white");
circle(640, 120, 30, "white");
circle(620, 90, 30, "white");
circle(150, 100, 40, "white");
circle(200, 100, 40, "white");
circle(100, 100, 30, "white");
circle(250, 90, 30, "white");
triangle(200, 150, 350, 30, 500, 150, "A22416");
triangle(200, 150, 350, 30, 500, 150, "black");
triangle(210, 150, 350, 40, 490, 150, "A22416");
triangle(210, 150, 350, 40, 490, 150, "white");
triangle(215, 150, 350, 45, 485, 150, "A22416");
rectangle(200, 150, 10, 200, "white");
rectangle(490, 150, 10, 200, "white");
rectangle(250, 180, 50, 50, "C2E9FF");
rectangle(400, 180, 50, 50, "C2E9FF");
rectangle(325, 270, 50, 80, "996633");
rectangle(325, 270, 2, 80, "845E3A");
rectangle(330, 270, 2, 80, "845E3A");
rectangle(335, 270, 2, 80, "845E3A");
rectangle(340, 270, 2, 80, "845E3A");
rectangle(345, 270, 2, 80, "845E3A");
rectangle(350, 270, 2, 80, "845E3A");
rectangle(355, 270, 2, 80, "845E3A");
rectangle(360, 270, 2, 80, "845E3A");
rectangle(365, 270, 2, 80, "845E3A");
rectangle(370, 270, 2, 80, "845E3A");
rectangle(375, 270, 2, 80, "845E3A");
rectangle(423, 180, 3, 50, "black");
rectangle(400, 200, 50, 3, "black");
rectangle(274, 180, 3, 50, "black");
rectangle(250, 200, 50, 3, "black");
circle(335, 300, 3, "black");
rectangle(335, 299, 8, 2, "black");
circle(335, 300, 3, "black");
rectangle(600, 200, 40, 150, "280000");
circle(600, 200, 40, "339900");
circle(640, 200, 40, "339900");
circle(620, 150, 40, "339900");
circle(670, 200, 30, "339900");
circle(570, 200, 40, "339900");
circle(590, 160, 40, "339900");
circle(650, 160, 40, "339900");
circle(600, 200, 7, "red");
circle(640, 190, 8, "red");
circle(600, 150, 9, "red");
circle(680, 200, 7, "red");
circle(550, 200, 10, "red");
circle(650, 140, 7, "red");
restore();
rectangle(totalWidth / 2 + 32, totalHeight / 2 - 78, 13, 10, "#996600");
rectangle(totalWidth / 2 + 37, totalHeight / 2 - 83, 2, 7, "black");
circle(totalWidth / 2 + 38, totalHeight / 2 - 72, 3, "black");
for (var i = 0; i < deadZombies.length; i++)
{
var zombie = deadZombies[i];
zombie.update();
}
for (var i = 0; i < zombies.length; i++)
{
var zombie = zombies[i];
if (zombie.dead && !zombie.pushed)
{
zombie.pushed = true;
deadZombies.push(zombie);
}
else
{
zombie.update();
pixel = getPixel(mouse.x, mouse.y);
if (mouse.left &&
pixel.red == zombieColor.red &&
pixel.green == zombieColor.green &&
pixel.blue == zombieColor.blue)
{
circle(mouse.x, mouse.y, 10, "red");
zombie.dead = true;
zombie.x += 50 + random(50);
zombie.deadAngle = random(360);
zombiesKilled++;
deadZombies.push(zombie);
}
if (zombie.x < (zombie.angle) % 150 + 120)
{
zombie.x += 50 + random(50);
zombie.deadAngle = random(360);
zombiesKilled++;
zombie.dead = true;
}
if (zombie.x < 50)
{
blast(totalWidth / 2, totalHeight / 2, 100, 50, "yellow");
blast(totalWidth / 2, totalHeight / 2, 80, 30, "orange");
text(totalWidth / 2 - 200, totalHeight * 0.8, 30,
"BASE SELF DESTRUCT", "black");
stopUpdate();
}
}
}
circle(totalWidth / 2 + 38, totalHeight / 2 - 72, 4, "yellow");
line(totalWidth / 2 + 38, totalHeight / 2 - 70,
mouse.x, mouse.y, 2, "yellow");
ring(mouse.x, mouse.y, 30, 3, "black");
line(mouse.x - 30, mouse.y, mouse.x - 5, mouse.y, 1, "black");
line(mouse.x + 30, mouse.y, mouse.x + 5, mouse.y, 1, "black");
line(mouse.x, mouse.y - 30, mouse.x, mouse.y - 5, 1, "black");
line(mouse.x, mouse.y + 30, mouse.x, mouse.y + 5, 1, "black");
blast(mouse.x, mouse.y, 20, 10, "yellow");
bulletsFired = 47;
clock++;
}
function blast(x, y, radius, fragments, color)
{
save();
translate(x, y);
circle(0, 0, radius/10, color);
for (var i = 0; i < fragments; i++)
{
rotate(radius + fragments * i % 360);
circle((i * fragments + radius) % radius, 0,
(radius + fragments + 2 * i) % radius/5, color);
}
restore();
}
function Zombie(speed, angle, dead)
{
this.x = distance(0, 0, totalWidth / 2, totalHeight / 2) + 100;
this.y = 0;
this.speed = speed;
this.angle = angle;
this.dead = dead;
this.update = function()
{
save();
translate(totalWidth / 2, totalHeight / 2);
rotate(this.angle);
translate(this.x, this.y);
if (this.dead)
{
this.skinColor = "orange";
rotate(this.deadAngle);
}
else
{
this.x -= this.speed;
this.skinColor = "lightgreen";
if (this.angle > 90 && this.angle < 270) { scale(1, -1) };
}
scale(0.5, 0.5);
if (this.dead)
{
save();
for (var i = 0; i < 10; i++)
{
rotate(this.deadAngle % (i * 20));
circle(3 * i, 0, 3 * i, "red");
}
restore();
}
rectangle(3, 30, 23, 65, this.skinColor);
rectangle(3, 15, 23, 65, "gray");
circle(15, 0, 20, this.skinColor);
circle(0, 0, 3, "red");
rectangle(-35, 20, 30, 14, this.skinColor);
rectangle(-20, 20, 30, 14, "gray");
restore();
};
}
</script>