Bonus Clue-style Game


Kiko Escapes (engine only)

This game takes my chamber-objects concept to the next ultimate step. The code builds a “Clue-style board game” in which the gamer attempts to find the correct combination of room color, monster-guardian and pixie clothing. This game is a “search and rescue” of poor lost Kiko (from the Winx Club cartoon series) and any pixies in the dreaded Ruins of Able-Wyvern™. Simply add your artwork; the game is in the download files /BonusGames/Kiko Escapes.
Kiko does not perform "combat" in duel rooms; instead he attempts to run to the exit (left to right across room using platform game mechanics) without being "tagged" (Avoider game).

See Book Chapter 11: for more details and game rules.

//translated from Flash 10 AS3  
	var RoomA:Array = new Array("red   ","orange","yellow","green ","blue  ","purple","brown ","red   ","orange","yellow","
green ","blue  ","purple","brown ");  
	var Mnstr:Array = new Array("goblin  ","skeleton","zombie  ","mummy   ","goblin  ","skeleton","goblin  ","troll   ","go
blin  ","skeleton","zombie  ","troll   ","goblin  ","skeleton");  
	var Pixie:Array = new Array("red   ","orange","yellow","green ","blue  ","purple","brown ","red   ","orange","yellow","
green ","orange","yellow","green ");  
  
	var MT = new Array();	//from Soldier's Text (ARST)
	var RRD = new Array();	//from Soldier's Text (ARST) 
	var clueA:Array = new Array("P = Red","B = Orange","M = Yellow","C = Green","U = Blue","B = Orange","E = Purple","");  
	clueA[8] = "The queen is guarded by a  monster.";  
	clueA[9] = "The queen was taken to the  room.";  
	clueA[10] = "The queen was dressed in  pixie clothes.";  
	clueA[11] = "";  
	clueA[12] = "";  
	clueA[13] = "";  
	  
	var DungA:Array = new Array();  
	DungA[0] = {id:" 0",room:"",monstr:"",pixie:"", clue:""};  
	DungA[1] = {id:" 1",room:"",monstr:"",pixie:"", clue:""};  
	DungA[2] = {id:" 2",room:"",monstr:"",pixie:"", clue:""};  
	DungA[3] = {id:" 3",room:"",monstr:"",pixie:"", clue:""};  
	DungA[4] = {id:" 4",room:"",monstr:"",pixie:"", clue:""};  
	DungA[5] = {id:" 5",room:"",monstr:"",pixie:"", clue:""};  
	DungA[6] = {id:" 6",room:"",monstr:"",pixie:"", clue:""};  
	DungA[7] = {id:" 7",room:"",monstr:"",pixie:"", clue:""};  
	DungA[8] = {id:" 8",room:"",monstr:"",pixie:"", clue:""};  
	DungA[9] = {id:" 9",room:"",monstr:"",pixie:"", clue:""};  
	DungA[10] = {id:"10",room:"",monstr:"",pixie:"", clue:""};  
	DungA[11] = {id:"11",room:"",monstr:"",pixie:"", clue:""};  
	DungA[12] = {id:"12",room:"",monstr:"",pixie:"", clue:""};  
	DungA[13] = {id:"13",room:"",monstr:"",pixie:"", clue:""};  
	  
	for (var i=0; i<= DungA.length; i++) {  
		// get a random room color
		var r:uint = Math.floor(Math.random() * RoomA.length); 
		// get a random monster color		
		var m:uint = Math.floor(Math.random() * Mnstr.length);  
		// get a random pixie color 
		var p:uint = Math.floor(Math.random() * Pixie.length); 
		  
		switch (i) {  
		case 0 :  
			DungA[0].room = RoomA[r];  
			// remove from room list 
			RoomA.splice(r,1); 
			DungA[0].monstr = Mnstr[m];  
			// remove from monster list 
			Mnstr.splice(m,1); 
			DungA[0].pixie = Pixie[p];  
			// remove from pixie list 
			Pixie.splice(p,1); 
			RRD[0] = "The " +  RoomA[r] +" Room";  
			MT[0] = {RmID:0, North:0, East:15, South:0, West:0, Up:100, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
		break;  
  
		case 1 :  
			DungA[1].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[1].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[1].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[1] = "The " +  RoomA[r] +" Room";  
			MT[1] = {RmID:1, North:0, East:17, South:0, West:14, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
		case 2 :  
			DungA[2].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[2].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[2].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[2] = "The " +  RoomA[r] +" Room";  
			MT[2] = {RmID:2, North:0, East:18, South:0, West:15, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
		case 3 :  
			DungA[3].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[3].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[3].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[3] = "The " +  RoomA[r] +" Room";  
			MT[3] = {RmID:3, North:0, East:19, South:0, West:16, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
		case 4 :  
			DungA[4].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[4].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[4].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[4] = "The " +  RoomA[r] +" Room";  
			MT[4] = {RmID:4, North:0, East:20, South:0, West:17, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
		case 5 :  
			DungA[5].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[5].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[5].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[5] = "The " +  RoomA[r] +" Room";  
			MT[5] = {RmID:5, North:0, East:22, South:0, West:18, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
		case 6 :  
			DungA[6].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[6].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[6].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[6] = "The " +  RoomA[r] +" Room";  
			MT[6] = {RmID:6, North:0, East:23, South:0, West:19, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
		case 7:  
			DungA[7].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[7].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[7].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[7] = "The " +  RoomA[r] +" Room";  
			MT[7] = {RmID:7, North:0, East:24, South:0, West:20, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
		case 8:
			DungA[8].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[8].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[8].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[8] = "The " +  RoomA[r] +" Room";  
			MT[8] = {RmID:8, North:0, East:25, South:0, West:22, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
		case 9:  
			DungA[9].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[9].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[9].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[9] = "The " +  RoomA[r] +" Room";  
			MT[9] = {RmID:9, North:0, East:26, South:0, West:23, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
		case 10:  
			DungA[10].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[10].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[10].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[10] = "The " +  RoomA[r] +" Room";  
			MT[10] = {RmID:10, North:0, East:27, South:0, West:24, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
		case 11:  
			DungA[11].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[11].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[11].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[11] = "The " +  RoomA[r] +" Room";  
			MT[11] = {RmID:11, North:0, East:28, South:0, West:25, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
		case 12:  
			DungA[12].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[12].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[12].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[12] = "The " +  RoomA[r] +" Room";  
			MT[12] = {RmID:12, North:0, East:29, South:0, West:26, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
		case 13:  
			DungA[13].room = RoomA[r];  
			RoomA.splice(r,1);// remove from room list  
			DungA[13].monstr = Mnstr[m];  
			Mnstr.splice(m,1);// remove from monster list  
			DungA[13].pixie = Pixie[p];  
			Pixie.splice(p,1);// remove from pixie list  
			RRD[13] = "The " +  RoomA[r] +" Room";  
			MT[13] = {RmID:13, North:0, East:Exit, South:0, West:28, Up:0, Dn:0, Tres:0, Mnstr:m, Discovr:1};  
			break;  
	  
		case DungA.length :  
				var d:uint = Math.floor(Math.random() * DungA.length);// get a random room color  
				console.log("===================================================");  
				clueA[8] = "The queen is guarded by a "+ DungA[d].monstr + " monster.";  
				clueA[9] = "The queen was taken to the "+ DungA[d].room + " room.";  
				clueA[10] = "The queen was dressed in "+ DungA[d].pixie +" pixie clothes.";  
				console.log("Room Answer: "+d);  
				console.log("\n Answer: "+DungA[d].id + ") Room: "+ DungA[d].room + ";\t\t Monster: "+ DungA[d].monstr + ";\t\t Pixie: "+ DungA[d].pixie +"\t\t Clue: "+ DungA[d].clue +"\n")  
				break;  
	  
		}  
	}  
		for (var ii=0; ii<= DungA.length; ii++) {  
		var c:uint = Math.floor(Math.random() * clueA.length);// get a random clue  
		  
		switch (ii) {  
			case 0 :  
				DungA[0].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
	  
			case 1 :  
				DungA[1].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
			case 2 :  
				DungA[2].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
			case 3 :  
				DungA[3].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
			case 4 :  
				DungA[4].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
			case 5 :  
				DungA[5].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
			case 6 :  
				DungA[6].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
			case 7:  
				DungA[7].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
			case 8:  
				DungA[8].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
			case 9:  
				DungA[9].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
			case 10:  
				DungA[10].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
			case 11:  
				DungA[11].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
			case 12:  
				DungA[12].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
			case 13:  
				DungA[13].clue = clueA[c];  
				clueA.splice(c,1);// remove from clue list  
				break;  
	  
		case DungA.length :  
				console.log("==================================================");  
				console.log("Room Answer: "+d);  
				console.log("\n Answer: "+DungA[d].id + ") Room: "+ DungA[d].room + ";\t\t Monster: "+ DungA[d].monstr + ";\t\t Pixie: "+ DungA[d].pixie +"\t\t Clue: "+ DungA[d].clue +"\n")  
				break;  
	  
		}  
	  
		if (ii!=DungA.length){  
			if(ii>9){  
				console.log(DungA[ii].id + ") Room: "+ DungA[ii].room + "; \t \t Monster: "+ DungA[ii].monstr + "; \t \t Pixie: "+ DungA[ii].pixie +" \t \t Clue: "+DungA[ii].clue);  
			}else{  
				console.log(DungA[ii].id + ") Room: "+ DungA[ii].room + "; \t \t Monster: "+ DungA[ii].monstr + "; \t \t Pixie: "+ DungA[ii].pixie +" \t \t Clue: "+DungA[ii].clue);  
			}  
		}  
	}  
	console.log("==================================================");  
	  
	//ARST - Preload Movement Table  
	//  
	// -------------------------------------------  
	// Movement Table  
	// -------------------------------------------  
		//MT = new Array();  
		//ARST Dungeon Framework & infrastructure; converted for Kiko Escape 20130529  
	/* Fixed assignments above  
		MT[0] = {RmID:0, North:0, East:15, South:0, West:0, Up:100, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[1] = {RmID:1, North:0, East:17, South:0, West:14, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[2] = {RmID:2, North:0, East:18, South:0, West:15, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[3] = {RmID:3, North:0, East:19, South:0, West:16, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[4] = {RmID:4, North:0, East:20, South:0, West:17, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[5] = {RmID:5, North:0, East:22, South:0, West:18, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[6] = {RmID:6, North:0, East:23, South:0, West:19, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[7] = {RmID:7, North:0, East:24, South:0, West:20, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[8] = {RmID:8, North:0, East:25, South:0, West:22, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[9] = {RmID:9, North:0, East:26, South:0, West:23, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[10] = {RmID:10, North:0, East:27, South:0, West:24, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[11] = {RmID:11, North:0, East:28, South:0, West:25, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[12] = {RmID:12, North:0, East:29, South:0, West:26, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[13] = {RmID:13, North:0, East:Exit, South:0, West:28, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
	*/  
		//Randomized Corridor Content from here down.  
		MT[14] = {RmID:14, North:0, East:1, South:15, West:0, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[15] = {RmID:15, North:14, East:2, South:16, West:Start, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[16] = {RmID:16, North:15, East:3, South:0, West:0, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[17] = {RmID:17, North:0, East:4, South:18, West:1, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[18] = {RmID:18, North:17, East:5, South:19, West:2, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[19] = {RmID:19, North:18, East:6, South:0, West:3, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[20] = {RmID:20, North:0, East:7, South:21, West:4, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[21] = {RmID:21, North:20, East:0, South:23, West:0, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[22] = {RmID:22, North:0, East:8, South:0, West:5, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[23] = {RmID:23, North:21, East:9, South:0, West:6, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[24] = {RmID:24, North:0, East:10, South:0, West:7, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[25] = {RmID:25, North:24, East:11, South:26, West:8, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[26] = {RmID:26, North:25, East:12, South:0, West:9, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[27] = {RmID:27, North:0, East:0, South:28, West:10, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[28] = {RmID:27, North:27, East:13, South:29, West:11, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[29] = {RmID:27, North:28, East:0, South:0, West:12, Up:0, Dn:0, Tres:0, Mnstr:0, Discovr:1};  
		MT[30] = {RmID:27, North:100, East:100, South:13, West:13, Up:100, Dn:13, Tres:0, Mnstr:0, Discovr:1};  
	//  
	//  

See Flash game in your Book Downloads

Copyright © 2017, Stephen Gose LLC.
All rights reserved.