Commits

Karl Bartel committed 4cfe36e

initial checkin

Comments (0)

Files changed (31)

Binary file added.
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+  <head>
+    <title>JSNumbers</title>
+    <style>
+        #playingAreaBackground {
+            position: relative;
+            border: 1px solid black;
+            width: 520;
+            height: 520;
+	    background-image:url('img/back.jpg')
+        }
+        #playingArea {
+		position: absolute;
+		top: 20;
+		left: 20;
+		width: 480;
+		height: 480;
+		z-index: 0;
+        }
+	#wonPic {
+		position: relative;
+		margin: 130px 0;
+		z-index: 1;
+		display: none;
+	}
+
+	#rules {
+		width: 520px;
+	}
+	#rules dt {
+		font-weight: bold;	
+	}
+	body {
+		width: 660px;
+		padding: 0;
+		margin: 0 auto;
+	}
+	#page {
+		position: absolute;
+		top: 0;
+		bottom: 0;
+		margin-left: auto;
+		margin-right: auto;
+		background-color: #dddddd;
+		padding: 10px 70px;
+		width: 520;
+		border-width: 0 1px;
+		border-style: solid;
+		border-color: #bbbbbb;
+	}
+	h1, h2, h3{
+		font-family: fantasy;
+	}
+    </style>
+    <script type="text/javascript" src="../js/MochiKit/MochiKit.js"></script>
+    <script language="JavaScript">
+	var mapSize = 6;
+	var blockSize = 80;
+
+	var map;
+	var mapDisplay;
+	var selected = false;
+	var selectX;
+	var selectY;
+	var moves = []; // for undo
+	
+	function display() {
+		var newArea = DIV({'style':'', 'id':'playingArea'}, null);
+		//mapDisplay = Array(mapSize);
+		for (var x= 0; x<mapSize; x++) {
+			//mapDisplay[x] = new Array(mapSize);
+			for (var y=0; y<mapSize; y++) {
+				if (map[x][y] == 0) {
+				//	continue;
+				}
+				var filename = map[x][y] + '.png'
+				if (selected && x == selectX && y == selectY) {
+					filename = map[x][y] + 'h.png'
+				}
+				else if (map[x][y] < 0) {
+					filename = -map[x][y] + '-moved.png'
+				}
+				if (selected && map[x][y] == 0 && hasDistance(selectX, selectY, x, y, map[selectX][selectY])) {
+					filename = '0-highlight.png';
+				}
+				var newNode = IMG({
+						'style': 'position: absolute; height: '+blockSize+'px; width: '+blockSize+'px; top: '+y*blockSize+'px; left: '+x*blockSize+'px;',
+						'onclick': 'clicked('+x+','+y+')',
+						'src': 'img/' + filename
+						},
+					map[x][y]
+				);
+				/*var newNode = DIV({
+						'style': 'position: absolute; height: '+blockSize+'px; width: '+blockSize+'px; top: '+y*blockSize+'px; left: '+x*blockSize+'px;',
+						'onclick': 'clicked('+x+','+y+')'
+						},
+					map[x][y]
+				);*/
+				//mapDisplay[x][y] = h;
+				newArea.appendChild(newNode);
+			}
+		}
+		swapDOM('playingArea', newArea);
+	}
+
+	function hasDistance(x1, y1, x2, y2, dist) {
+		if(Math.abs(x1 - x2) == dist && y1 == y2) {
+			return true;
+		}
+		else if(Math.abs(y1 - y2) == dist && x1 == x2) {
+			return true;
+		}
+		else if(Math.abs(y1 - y2) == dist && Math.abs(x1 - x2) == dist) {
+			return true;
+		}
+		else {
+			return false;
+		}
+	}
+	
+	function clicked(x, y) {
+		log(x,y);
+		if (map[x][y] > 0) {
+			if (selected && selectX == x && selectY == y) {
+				selected = false;
+			} else {
+				log('select');
+				selectX = x;
+				selectY = y;
+				selected = true;
+			}
+		}
+		else if (selected) {
+			log('move');
+			if ( (! hasDistance(selectX, selectY, x, y, map[selectX][selectY]) || (map[x][y] != 0)) ) {
+				return;
+			}
+			map[x][y] = -map[selectX][selectY];
+			map[selectX][selectY] = 0;
+			selected = false;
+			moves.push([selectX, selectY, x, y]);
+		}
+		display();
+		solvedTest();
+	}
+
+	function undo() {
+		if (moves.length == 0)
+			return;
+		var move = moves.pop();
+		map[move[0]][move[1]] = -map[move[2]][move[3]];
+		map[move[2]][move[3]] = 0;
+		selected = false;
+		display();
+	}
+        
+        function init() {
+		levelSelect = getElement('levelSelect');
+		loadLevel(levelSelect.value);
+        }
+
+	function solvedTest() {
+		var won = true;
+		for (var x= 0; x<mapSize; x++) {
+			for (var y=0; y<mapSize; y++) {
+				if (map[x][y] > 0) {
+					won = false;
+				}
+			}
+		}
+		if (won) {
+			getElement('wonPic').style.display = 'block';
+		}
+	}
+
+	function loadLevel(url) {
+
+		d = loadJSONDoc(url);
+		d.addCallback( function (data) {
+			map = data;
+			log('level loaded');
+			display();
+		});
+		d.addErrback( function (err) {
+			alert('Could not load level: ' + err);
+		});
+		getElement('wonPic').style.display = 'none';
+		selected = false;
+	}
+        
+	</script>
+	<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+	</script>
+	<script type="text/javascript">
+		_uacct = "UA-118161-1";
+		urchinTracker();
+	</script>
+	</head>
+	<body onLoad="init()">
+		<div id="page">
+			<h1>JSNumbers</h1>
+			<form>
+				<select id="levelSelect" size="1" onchange="loadLevel(this.value)">
+					<option value="levels/level1.txt">Level 1</option>
+					<option value="levels/level2.txt">Level 2</option>
+					<option value="levels/level3.txt">Level 3</option>
+					<option value="levels/level4.txt">Level 4</option>
+					<option value="levels/level5.txt">Level 5</option>
+					<option value="levels/level6.txt">Level 6</option>
+					<option value="levels/level7.txt">Level 7</option>
+					<option value="levels/level8.txt">Level 8</option>
+					<option value="levels/level9.txt">Level 9</option>
+					<option value="levels/level10.txt">Level 10</option>
+				</select>
+				<input type="button" value="Restart" onclick="init()"/>
+				<input type="button" value="Undo" onclick="undo()"/>
+			</form>
+			<div id="playingAreaBackground">
+				<img id="wonPic" src="img/solved.png"/>
+				<div id="playingArea">
+				</div>
+			</div>
+			<div id="rules">
+				<h3>Rules</h3>
+				<dl>
+					<dt>Goal:</dt>
+					<dd>Move every block exactly once.</dd>
+					<dt>Movement: </dt>
+					<dd>
+						Every block can be moved horizontally, vertically or diagonally. The number on the block indicates how far the block must be moved. Other blocks between the start and destination don't prevent a movement, but the destination field must be free. All possible destinations are highlighted when you select a block.
+					</dd>
+				</dl>
+			</div>
+		</div>
+	</body>
+</html>

img/0-highlight.png

Added
New image
Added
New image

img/1-moved.png

Added
New image
Added
New image
Added
New image

img/2-moved.png

Added
New image
Added
New image
Added
New image

img/3-moved.png

Added
New image
Added
New image
Added
New image

img/4-moved.png

Added
New image
Added
New image
Added
New image
Added
New image

img/solved.png

Added
New image

levels/.DS_Store

Binary file added.

levels/level1.txt

+[
+	[0,3,0,2,0,2],
+	[0,2,0,0,2,3],
+	[0,3,2,2,3,0],
+	[0,2,3,2,0,2],
+	[0,2,2,0,2,0],
+	[0,2,2,0,2,4]
+]

levels/level10.txt

+[ 
+	[3,2,0,1,2,3],
+	[2,3,1,1,2,2],
+	[2,2,3,0,1,1],
+	[0,3,1,0,3,1],
+	[2,2,2,0,3,2],
+	[0,0,2,1,1,2]
+]

levels/level2.txt

+[
+	[0,2,1,1,2,0],
+	[2,0,4,4,0,2],
+	[3,3,3,3,3,3],
+	[3,3,3,3,3,3],
+	[2,0,0,0,0,2],
+	[1,2,1,1,2,1]
+] 

levels/level3.txt

+[ 
+	[0,1,1,1,1,4],
+	[2,1,3,3,1,4],
+	[2,1,0,3,1,0],
+	[2,1,3,3,1,4],
+	[0,1,3,3,1,0],
+	[2,1,1,1,1,1]
+] 

levels/level4.txt

+[ 
+	[3,1,0,1,1,3],
+	[4,1,1,3,1,0],
+	[2,1,3,1,1,0],
+	[2,1,0,3,1,4],
+	[0,1,3,1,1,0],
+	[2,1,1,1,1,1]
+] 

levels/level5.txt

+[ 
+	[4,1,1,1,1,4],
+	[2,2,3,1,0,0],
+	[1,1,2,2,1,0],
+	[2,1,2,2,1,4],
+	[1,2,3,3,2,1],
+	[4,1,1,1,1,4]
+] 

levels/level6.txt

+[ 
+	[3,1,2,1,0,3],
+	[2,2,1,2,2,0],
+	[1,1,1,1,1,0],
+	[1,0,1,1,1,4],
+	[2,2,2,2,2,0],
+	[1,2,1,1,4,4]
+] 

levels/level7.txt

+[ 
+	[2,0,2,0,2,0],
+	[0,2,0,2,0,2],
+	[2,1,1,3,1,0],
+	[3,3,3,3,3,3],
+	[0,2,0,2,0,2],
+	[2,1,2,1,2,1]
+] 

levels/level8.txt

+[ 
+	[1,0,3,1,4,2],
+	[3,4,1,2,3,4],
+	[0,0,0,0,1,1],
+	[1,0,0,0,0,1],
+	[1,2,3,1,4,2],
+	[2,3,1,2,3,4]
+] 

levels/level9.txt

+[ 
+	[4,2,0,1,2,3],
+	[1,4,0,1,4,0],
+	[0,2,2,0,1,4],
+	[0,4,0,0,4,1],
+	[2,1,4,4,0,0],
+	[4,0,2,2,1,4]
+] 

source/back.xcf

Binary file added.
Added
New image
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.42"
+   sodipodi:docbase="/Users/karl/Sites/linux-games.com/numbered"
+   sodipodi:docname="numbers.svg"
+   inkscape:export-filename="/Users/karl/Sites/linux-games.com/numbered/0-highlight.png"
+   inkscape:export-xdpi="30.379253"
+   inkscape:export-ydpi="30.379253">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.40664591"
+     inkscape:cx="390.39120"
+     inkscape:cy="56.036760"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="995"
+     inkscape:window-height="891"
+     inkscape:window-x="74"
+     inkscape:window-y="36" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g3146"
+       transform="translate(290.0077,160.0000)"
+       inkscape:export-filename="/Users/karl/Desktop/Downloads/12120/3.png"
+       inkscape:export-xdpi="30.379251"
+       inkscape:export-ydpi="30.379251">
+      <rect
+         style="opacity:1.0000000;fill:#a6964b;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#2c2c2c;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+         id="use2316"
+         width="224.25386"
+         height="224.25386"
+         x="153.17137"
+         y="458.61584"
+         ry="30.304577"
+         rx="30.304577" />
+      <text
+         xml:space="preserve"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         x="207.71962"
+         y="632.36212"
+         id="use2318"
+         sodipodi:linespacing="125.00000%"><tspan
+           sodipodi:role="line"
+           id="tspan2387"
+           x="207.71962"
+           y="632.36212">1</tspan></text>
+      <rect
+         rx="30.304577"
+         ry="30.304577"
+         y="458.61584"
+         x="153.17137"
+         height="224.25386"
+         width="224.25386"
+         id="rect2391"
+         style="opacity:1.0000000;fill:#7bc07e;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#2c2c2c;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+      <text
+         sodipodi:linespacing="125.00000%"
+         id="text2393"
+         y="644.36212"
+         x="207.71962"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         xml:space="preserve"><tspan
+           y="644.36212"
+           x="207.71962"
+           id="tspan2395"
+           sodipodi:role="line">3</tspan></text>
+    </g>
+    <g
+       id="g3159"
+       transform="translate(453.0116,-138.0000)"
+       inkscape:export-filename="/Users/karl/Desktop/Downloads/12120/4.png"
+       inkscape:export-xdpi="30.379251"
+       inkscape:export-ydpi="30.379251">
+      <rect
+         style="opacity:1.0000000;fill:#b1a7e1;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#2c2c2c;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+         id="rect2397"
+         width="224.25386"
+         height="224.25386"
+         x="227.17137"
+         y="756.61584"
+         ry="30.304577"
+         rx="30.304577" />
+      <text
+         xml:space="preserve"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         x="281.7196"
+         y="936.36212"
+         id="text2399"
+         sodipodi:linespacing="125.00000%"><tspan
+           sodipodi:role="line"
+           id="tspan2401"
+           x="281.71960"
+           y="936.36212">4</tspan></text>
+    </g>
+    <g
+       id="g3141"
+       transform="translate(232.0000,172.0000)"
+       inkscape:export-filename="/Users/karl/Desktop/Downloads/12120/1.png"
+       inkscape:export-xdpi="30.379251"
+       inkscape:export-ydpi="30.379251">
+      <rect
+         rx="30.304577"
+         ry="30.304577"
+         y="446.61584"
+         x="-262.82861"
+         height="224.25386"
+         width="224.25386"
+         id="rect2403"
+         style="opacity:1.0000000;fill:#cd9544;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#2c2c2c;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+      <text
+         sodipodi:linespacing="125.00000%"
+         id="text2405"
+         y="626.36212"
+         x="-212.2804"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         xml:space="preserve"><tspan
+           y="626.36212"
+           x="-212.28040"
+           id="tspan2407"
+           sodipodi:role="line">1</tspan></text>
+    </g>
+    <g
+       id="g3154"
+       transform="translate(339.0039,-172.0000)"
+       inkscape:export-filename="/Users/karl/Desktop/Downloads/12120/2.png"
+       inkscape:export-xdpi="30.379251"
+       inkscape:export-ydpi="30.379251">
+      <rect
+         style="opacity:1.0000000;fill:#c9757d;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#2c2c2c;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+         id="rect2409"
+         width="224.25386"
+         height="224.25386"
+         x="-132.82861"
+         y="790.61584"
+         ry="30.304577"
+         rx="30.304577" />
+      <text
+         xml:space="preserve"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         x="-78.280396"
+         y="970.36212"
+         id="text2411"
+         sodipodi:linespacing="125.00000%"><tspan
+           sodipodi:role="line"
+           id="tspan2413"
+           x="-78.280396"
+           y="970.36212">2</tspan></text>
+    </g>
+    <rect
+       rx="30.304577"
+       ry="30.304577"
+       y="1236.2352"
+       x="37.873070"
+       height="224.25386"
+       width="224.25386"
+       id="rect3184"
+       style="opacity:1.0000000;fill:#b1a7e1;fill-opacity:0.0000000;fill-rule:evenodd;stroke:#2c2c2c;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:0.32484075"
+       inkscape:export-filename="/Users/karl/Desktop/Downloads/12120/0.png"
+       inkscape:export-xdpi="30.379253"
+       inkscape:export-ydpi="30.379253" />
+    <rect
+       rx="30.304577"
+       ry="30.304577"
+       y="860.23523"
+       x="442.37497"
+       height="224.25386"
+       width="224.25386"
+       id="rect3921"
+       style="opacity:1.0000000;fill:#a6964b;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#2c2c2c;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+    <text
+       sodipodi:linespacing="125.00000%"
+       id="text3923"
+       y="1033.9816"
+       x="496.92322"
+       style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+       xml:space="preserve"><tspan
+         y="1033.9816"
+         x="496.92322"
+         id="tspan3925"
+         sodipodi:role="line">1</tspan></text>
+    <g
+       id="g3982"
+       inkscape:export-filename="/Users/karl/Desktop/Downloads/12120/3h.png"
+       inkscape:export-xdpi="30.379250"
+       inkscape:export-ydpi="30.379250">
+      <rect
+         rx="30.304577"
+         ry="30.304577"
+         y="860.23523"
+         x="442.37497"
+         height="224.25386"
+         width="224.25386"
+         id="rect3927"
+         style="opacity:1.0000000;fill:#5df260;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+      <text
+         sodipodi:linespacing="125.00000%"
+         id="text3929"
+         y="1045.9816"
+         x="496.92322"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         xml:space="preserve"><tspan
+           y="1045.9816"
+           x="496.92322"
+           id="tspan3931"
+           sodipodi:role="line">3</tspan></text>
+    </g>
+    <g
+       id="g3987"
+       inkscape:export-filename="/Users/karl/Desktop/Downloads/12120/4h.png"
+       inkscape:export-xdpi="30.379250"
+       inkscape:export-ydpi="30.379250">
+      <rect
+         style="opacity:1.0000000;fill:#5432ff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+         id="rect3935"
+         width="224.25386"
+         height="224.25386"
+         x="679.37836"
+         y="860.23523"
+         ry="30.304577"
+         rx="30.304577" />
+      <text
+         xml:space="preserve"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         x="733.92657"
+         y="1039.9816"
+         id="text3937"
+         sodipodi:linespacing="125.00000%"><tspan
+           sodipodi:role="line"
+           id="tspan3939"
+           x="733.92657"
+           y="1039.9816">4</tspan></text>
+    </g>
+    <g
+       id="g3972"
+       inkscape:export-filename="/Users/karl/Desktop/Downloads/12120/1h.png"
+       inkscape:export-xdpi="30.379250"
+       inkscape:export-ydpi="30.379250">
+      <rect
+         rx="30.304577"
+         ry="30.304577"
+         y="860.23523"
+         x="-31.632713"
+         height="224.25386"
+         width="224.25386"
+         id="rect3943"
+         style="opacity:1.0000000;fill:#ffa82c;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+      <text
+         sodipodi:linespacing="125.00000%"
+         id="text3945"
+         y="1039.9816"
+         x="18.915504"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         xml:space="preserve"><tspan
+           y="1039.9816"
+           x="18.915504"
+           id="tspan3947"
+           sodipodi:role="line">1</tspan></text>
+    </g>
+    <g
+       id="g3977"
+       inkscape:export-filename="/Users/karl/Desktop/Downloads/12120/2h.png"
+       inkscape:export-xdpi="30.379250"
+       inkscape:export-ydpi="30.379250">
+      <rect
+         style="opacity:1.0000000;fill:#ff5666;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+         id="rect3951"
+         width="224.25386"
+         height="224.25386"
+         x="205.37138"
+         y="860.23523"
+         ry="30.304577"
+         rx="30.304577" />
+      <text
+         xml:space="preserve"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         x="259.91962"
+         y="1039.9816"
+         id="text3953"
+         sodipodi:linespacing="125.00000%"><tspan
+           sodipodi:role="line"
+           id="tspan3955"
+           x="259.91962"
+           y="1039.9816">2</tspan></text>
+    </g>
+    <g
+       id="g2240"
+       inkscape:export-filename="/Users/karl/Sites/linux-games.com/numbered/3-moved.png"
+       inkscape:export-xdpi="30.379253"
+       inkscape:export-ydpi="30.379253">
+      <rect
+         rx="30.304577"
+         ry="30.304577"
+         y="374.23523"
+         x="440.37497"
+         height="224.25386"
+         width="224.25386"
+         id="rect4000"
+         style="opacity:1.0000000;fill:#9f9f9f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#2c2c2c;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+      <text
+         sodipodi:linespacing="125.00000%"
+         id="text4002"
+         y="559.98151"
+         x="494.92322"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         xml:space="preserve"><tspan
+           y="559.98151"
+           x="494.92322"
+           id="tspan4004"
+           sodipodi:role="line">3</tspan></text>
+    </g>
+    <g
+       id="g2245"
+       inkscape:export-filename="/Users/karl/Sites/linux-games.com/numbered/4-moved.png"
+       inkscape:export-xdpi="30.379253"
+       inkscape:export-ydpi="30.379253">
+      <rect
+         style="opacity:1.0000000;fill:#9f9f9f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#2c2c2c;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+         id="rect4008"
+         width="224.25386"
+         height="224.25386"
+         x="679.37885"
+         y="374.23523"
+         ry="30.304577"
+         rx="30.304577" />
+      <text
+         xml:space="preserve"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         x="733.92712"
+         y="553.98151"
+         id="text4010"
+         sodipodi:linespacing="125.00000%"><tspan
+           sodipodi:role="line"
+           id="tspan4012"
+           x="733.92712"
+           y="553.98151">4</tspan></text>
+    </g>
+    <g
+       id="g2230"
+       inkscape:export-filename="/Users/karl/Sites/linux-games.com/numbered/1-moved.png"
+       inkscape:export-xdpi="30.379253"
+       inkscape:export-ydpi="30.379253">
+      <rect
+         rx="30.304577"
+         ry="30.304577"
+         y="374.23523"
+         x="-31.632713"
+         height="224.25386"
+         width="224.25386"
+         id="rect4016"
+         style="opacity:1.0000000;fill:#9f9f9f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#2c2c2c;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+      <text
+         sodipodi:linespacing="125.00000%"
+         id="text4018"
+         y="553.98151"
+         x="18.915504"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         xml:space="preserve"><tspan
+           y="553.98151"
+           x="18.915504"
+           id="tspan4020"
+           sodipodi:role="line">1</tspan></text>
+    </g>
+    <g
+       id="g2235"
+       inkscape:export-filename="/Users/karl/Sites/linux-games.com/numbered/2-moved.png"
+       inkscape:export-xdpi="30.379253"
+       inkscape:export-ydpi="30.379253">
+      <rect
+         style="opacity:1.0000000;fill:#9f9f9f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#2c2c2c;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+         id="rect4024"
+         width="224.25386"
+         height="224.25386"
+         x="205.37119"
+         y="374.23523"
+         ry="30.304577"
+         rx="30.304577" />
+      <text
+         xml:space="preserve"
+         style="font-size:260.00000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Raanana"
+         x="259.9194"
+         y="553.98151"
+         id="text4026"
+         sodipodi:linespacing="125.00000%"><tspan
+           sodipodi:role="line"
+           id="tspan4028"
+           x="259.91940"
+           y="553.98151">2</tspan></text>
+    </g>
+    <rect
+       rx="30.304577"
+       ry="30.304577"
+       y="1230.2352"
+       x="335.87308"
+       height="224.25386"
+       width="224.25386"
+       id="rect1457"
+       style="opacity:1.0000000;fill:#faffab;fill-opacity:0.45222929;fill-rule:evenodd;stroke:#2c2c2c;stroke-width:12.750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:0.32484075"
+       inkscape:export-filename="/Users/karl/Sites/linux-games.com/numbered/0-highlight.png"
+       inkscape:export-xdpi="30.379253"
+       inkscape:export-ydpi="30.379253" />
+    <path
+       style="fill:#d6d6f2;fill-opacity:0.94267517;fill-rule:evenodd;stroke:#000000;stroke-width:22.951000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;stroke-dasharray:none"
+       d="M -155.04725,1642.6451 L 1212.5310,1642.6451 L 1212.5310,2141.8334 L -155.04725,2141.8334 L -155.04725,1642.6451 z "
+       id="rect2214" />
+    <text
+       xml:space="preserve"
+       style="font-size:253.41711px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:89.999998%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Princetown LET"
+       x="505.93759"
+       y="1861.9608"
+       id="text2186"
+       sodipodi:linespacing="89.999998%"
+       inkscape:export-filename="/Users/karl/Sites/linux-games.com/numbered/solved.png"
+       inkscape:export-xdpi="38.934986"
+       inkscape:export-ydpi="38.934986"><tspan
+         sodipodi:role="line"
+         id="tspan2190"
+         x="505.93759"
+         y="1861.9608">Level</tspan><tspan
+         sodipodi:role="line"
+         id="tspan2192"
+         x="505.93760"
+         y="2090.0362">Solved!</tspan></text>
+    <rect
+       style="opacity:1.0000000;fill:none;fill-opacity:0.96815288;fill-rule:evenodd;stroke:none;stroke-width:14.008000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+       id="rect2219"
+       width="1197.6022"
+       height="585.27582"
+       x="-81.151680"
+       y="1598.2917"
+       ry="2.4591420"
+       inkscape:export-filename="/Users/karl/Sites/linux-games.com/numbered/solved.png"
+       inkscape:export-xdpi="39.078087"
+       inkscape:export-ydpi="39.078087" />
+  </g>
+</svg>