1.1 --- a/script.js Fri Jan 06 00:02:26 2012 +0100
1.2 +++ b/script.js Fri Jan 06 01:23:40 2012 +0100
1.3 @@ -5,7 +5,7 @@
1.4
1.5 $(document).ready(function() {
1.6 simulation = new Simulation(document.getElementById("sim"),
1.7 - 670, 50, 4, green, background);
1.8 + 670, 50, 8, green, background);
1.9 var image = new Image();
1.10 image.onload = init_logo;
1.11 image.src = "images/logobase.png";
1.12 @@ -36,10 +36,10 @@
1.13 window.onEachFrame(update);
1.14 var pos = document.location.href.lastIndexOf("/") + 1;
1.15 var page = document.location.href.substr(pos);
1.16 - if (page == "experiments.html") {
1.17 + if (page == "mandelbrot.html") {
1.18 draw(0, 0, 0, 0, 0);
1.19 } else if (page == "gameoflife.html") {
1.20 - init_gameoflife();
1.21 + init_gameoflife("text");
1.22 }
1.23 });
1.24
1.25 @@ -296,15 +296,66 @@
1.26 context.putImageData(image, 0, 0);
1.27 }
1.28
1.29 -function init_gameoflife() {
1.30 +var char_map = new Array();
1.31 +char_map["A"] = new Array(new Array(0, 4), new Array(1, 3),
1.32 + new Array(2, 2), new Array(3, 1),
1.33 + new Array(4, 0), new Array(5, 1),
1.34 + new Array(6, 2), new Array(7, 3),
1.35 + new Array(8, 4), new Array(2, 3),
1.36 + new Array(3, 3), new Array(4, 3),
1.37 + new Array(5, 3), new Array(6, 3));
1.38 +char_map["M"] = new Array(new Array(0, 4), new Array(0, 3),
1.39 + new Array(0, 2), new Array(0, 1),
1.40 + new Array(0, 0), new Array(0, 5),
1.41 + new Array(5, 4), new Array(5, 3),
1.42 + new Array(5, 2), new Array(5, 1),
1.43 + new Array(5, 0), new Array(5, 5),
1.44 + new Array(1, 1), new Array(2, 2),
1.45 + new Array(4, 2), new Array(5, 1),
1.46 + new Array(3, 3));
1.47 +char_map["E"] = new Array(new Array(0, 4), new Array(0, 3),
1.48 + new Array(0, 2), new Array(0, 1),
1.49 + new Array(0, 0), new Array(0, 5),
1.50 + new Array(1, 0), new Array(2, 0),
1.51 + new Array(3, 0),
1.52 + new Array(1, 3), new Array(2, 3),
1.53 + new Array(1, 5), new Array(2, 5),
1.54 + new Array(3, 5))
1.55 +char_map["7"] = new Array(new Array(0, 0), new Array(1, 0),
1.56 + new Array(2, 0),
1.57 + new Array(0, 5), new Array(0, 4),
1.58 + new Array(1, 3), new Array(2, 2));
1.59 +char_map["3"] = new Array(new Array(2, 4), new Array(2, 3),
1.60 + new Array(2, 2), new Array(2, 1),
1.61 + new Array(0, 0), new Array(0, 5),
1.62 + new Array(1, 0), new Array(2, 0),
1.63 + new Array(1, 3), new Array(2, 3),
1.64 + new Array(1, 5), new Array(2, 5))
1.65 +
1.66 +function init_gameoflife(text) {
1.67 var canvas = document.getElementById("gameoflife");
1.68 + var cell_size = 16;
1.69 if (canvas) {
1.70 - gameoflife = new Simulation(canvas, 670, 670, 16,
1.71 + gameoflife = new Simulation(canvas, 670, 670, cell_size,
1.72 green, black);
1.73 $("#gameoflife").mousemove(function(event) {
1.74 gameoflife.mouse_moved(mouse_pos(event, "#gameoflife"));
1.75 - });
1.76 - }
1.77 + });
1.78 + text = "ME73";
1.79 + var offset = new Array(13, 17);
1.80 + for (var c in text) {
1.81 + var w = 0;
1.82 + for (p in char_map[text[c]]) {
1.83 + var x = char_map[text[c]][p][0];
1.84 + var y = char_map[text[c]][p][1];
1.85 + w = Math.max(w, x);
1.86 + var pos = new Array((x + offset[0]) * cell_size,
1.87 + (y + offset[1]) * cell_size);
1.88 + gameoflife.activate_cell(pos);
1.89 + }
1.90 + offset[0] += w + 2;
1.91 + }
1.92 + }
1.93 }
1.94
1.95 function Colour(r, g, b, a) {
1.96 @@ -638,7 +689,7 @@
1.97 }
1.98
1.99 function Simulation(canvas, w, h, cell_size, life_colour, dead_colour) {
1.100 - this.last_update = 0;
1.101 + this.last_update = $.now() + 3000;
1.102 this.last_draw = 0;
1.103 this.last_mouse_moved = 0;
1.104 this.redraw = new Array();
1.105 @@ -668,7 +719,7 @@
1.106 }
1.107 Simulation.prototype.update = function() {
1.108 var now = $.now();
1.109 - if (this.pos_queue.length) {
1.110 + while (this.pos_queue.length) {
1.111 var pos = this.pos_queue.pop();
1.112 if (pos[0] < this.canvas.width
1.113 && pos[1] < this.canvas.height) {
1.114 @@ -708,10 +759,13 @@
1.115 this.cell_queue = next_cell_queue;
1.116 this.last_update = now;
1.117 }
1.118 +Simulation.prototype.activate_cell = function(pos) {
1.119 + this.pos_queue.push(pos);
1.120 +}
1.121 Simulation.prototype.mouse_moved = function(pos) {
1.122 var now = $.now();
1.123 - if (this.last_mouse_moved + 50 < now) {
1.124 - this.pos_queue.push(pos);
1.125 + if (this.last_mouse_moved + 50 < now) {
1.126 + this.pos_queue.push(pos);
1.127 this.last_mouse_moved = now;
1.128 }
1.129 }