package com.droidquest.levels; import java.awt.Color; import com.droidquest.Room; import com.droidquest.RoomDisplay; import com.droidquest.Wire; import com.droidquest.avatars.HelpCam; import com.droidquest.avatars.LabCursor; import com.droidquest.avatars.PaintBrush; import com.droidquest.avatars.Remote; import com.droidquest.avatars.SolderingPen; import com.droidquest.chipstuff.Port; import com.droidquest.decorations.Arrow; import com.droidquest.devices.Antenna; import com.droidquest.devices.ContactSensor; import com.droidquest.devices.DirectionalSensor; import com.droidquest.devices.NOTGate; import com.droidquest.devices.Node; import com.droidquest.devices.PortDevice; import com.droidquest.devices.PrototypeChip; import com.droidquest.devices.RoomSensor; import com.droidquest.devices.SmallChip; import com.droidquest.items.AutoWire; import com.droidquest.items.BlueRobot; import com.droidquest.items.Burner; import com.droidquest.items.Crystal; import com.droidquest.items.Factory; import com.droidquest.items.Hexagon; import com.droidquest.items.MazeControl; import com.droidquest.items.MazeCreator; import com.droidquest.items.MazeLock; import com.droidquest.items.OrangeRobot; import com.droidquest.items.Square; import com.droidquest.items.ToolBox; import com.droidquest.items.Triangle; import com.droidquest.items.WhiteRobot; import com.droidquest.items.WireTester; import com.droidquest.materials.ChipTester; import com.droidquest.materials.ChipTrash; import com.droidquest.materials.CrystalRecharger; import com.droidquest.materials.Material; import com.droidquest.materials.Portal; import com.droidquest.materials.ShapeEditor; class ROTut3 extends Level { public ROTut3(RoomDisplay rd) { super(rd); // Material 0, Blank materials.addElement(new Material(true, false)); // Material 1, Green Wall materials.addElement(new Material(new Color(0,255,0),false, true)); // Material 2, Light Blue Wall materials.addElement(new Material(new Color(190,190,255),false,true)); // Material 3, Blue Wall materials.addElement(new Material(new Color(0,0,255),false, true)); // Material 4, LightOrange Wall materials.addElement(new Material(new Color(255,224,192),false, true)); // Material 5, Red Wall materials.addElement(new Material(new Color(255,0,0),false, true)); // Material 6, Recharger materials.addElement(new CrystalRecharger()); // Material 7, Crystal Shape Editor materials.addElement(new ShapeEditor(new Crystal(0,0,null,0))); // Material 8, Hexagon Shape Editor materials.addElement(new ShapeEditor(new Hexagon(0,0,null,Color.blue))); // Material 9, Square Shape Editor materials.addElement(new ShapeEditor(new Square(0,0,null,Color.white))); // Material 10, Triangle Shape Editor materials.addElement(new ShapeEditor(new Triangle(0,0,null,new Color(255,128,0)))); // Material 11, Portal to Innovation Lab; materials.addElement(new Portal("ROLab.lvl",false, true)); // Material 12, Portal to Main Menu; materials.addElement(new Portal("MainMenu.lvl",false, true)); // Material 13, Trash materials.addElement(new ChipTrash()); // Material 14, ChipTester materials.addElement(new ChipTester()); // Material 15, MazeLock materials.addElement(new MazeLock()); for (int a=0; a<42; a++) rooms.addElement(new Room()); { // Room 0, Help Screen Room room = (Room) rooms.elementAt(0); int[][] table = { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} }; room.RoomArray = table; room.AddTextBox("INNOVATION LAB Chip Functions",3*28, 2*32, 500); room.AddTextBox("BURN:", 2*28, 4*32, 500); room.AddTextBox("Wire prototype. Position chips in Burner Room. Activate burn button.", 6*28, 4*32, 400); room.AddTextBox("SAVE:", 2*28, 6*32, 500); room.AddTextBox("Pick up Chip. Press S", 6*28, 6*32, 500); room.AddTextBox("LOAD:", 2*28, 7*32, 500); room.AddTextBox("Pick up chip. Press L", 6*28, 7*32, 500); room.AddTextBox("RECORD:", 2*28, 8*32, 500); room.AddTextBox("Pick up chip. Press ?", 6*28, 8*32, 500); room.AddTextBox("To continue, press RETURN.", 4*28, 11*32, 500); } { // Room 1, Title Screen Room room = (Room) rooms.elementAt(1); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("{BIG} Chip Design", 4*28+16, 2*32, 500); room.AddTextBox("Welcome! Here you will learn about things you can do in the INNOVATION LAB. You'll learn how to use the:", 2*28, 3*32, 500); room.AddTextBox("- Chips", 6*28, 5*32, 500); room.AddTextBox("- Paintbrush", 6*28, 6*32, 500); room.AddTextBox("- Factories", 6*28, 7*32, 500); room.AddTextBox("- Shape Editor", 6*28, 8*32, 500); room.AddTextBox("If you don't know about ROBOT ANATOMY and TOOLKIT, return to the Main Menu by using the menubar.", 2*28, 9*32, 500); room.AddArrow(559,7*32+16, Arrow.DIR_RIGHT, 28, Color.white) ; } { // Room 2, Crossroads Room room = (Room) rooms.elementAt(2); int[][] table = { {2,0,0,0,0,2,2,2,0,0,0,0,2,2,2,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,2}, {2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("{BIG} CROSSROADS", 5*28, 5*32, 500); room.AddTextBox("PAINTBRUSH", 28+14, 2*32, 500); room.AddTextBox("FACTORY", 8*28+14, 2*32, 100); room.AddTextBox("SHAPE EDITOR", 16*28, 2*32, 100); room.AddTextBox("CHIPS", 16*28, 8*32-8, 500); room.AddTextBox("When you have learned about the Paintbrush, shape editor, and chips, go this way.", 5*28, 9*32, 400); room.AddArrow(3*28,0, Arrow.DIR_UP, 28, Color.white); room.AddArrow(10*28,0, Arrow.DIR_UP, 28, Color.white); room.AddArrow(17*28,0, Arrow.DIR_UP, 28, Color.white); room.AddArrow(559,7*32+16, Arrow.DIR_RIGHT, 28, Color.white); room.AddArrow(10*28,383, Arrow.DIR_DOWN, 28, Color.white); toolbox = new ToolBox(28,10*32,room); items.addElement(toolbox); } { // Room 3, Paths to Paintbrush & Shape Editor Room room = (Room) rooms.elementAt(3); int[][] table = { {2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2}, {2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2}, {2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2}, {2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2}, {2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2}, {0,0,0,0,0,2,2,2,0,0,0,0,2,2,2,0,0,0,0,0}, {0,0,0,0,0,2,2,2,0,0,0,0,2,2,2,0,0,0,0,0}, {0,0,0,0,0,2,2,2,0,0,0,0,2,2,2,0,0,0,0,0}, {2,0,0,0,0,2,2,2,0,0,0,0,2,2,2,0,0,0,0,2}, {2,0,0,0,0,2,2,2,0,0,0,0,2,2,2,0,0,0,0,2}, {2,0,0,0,0,2,2,2,0,0,0,0,2,2,2,0,0,0,0,2}, {2,0,0,0,0,2,2,2,0,0,0,0,2,2,2,0,0,0,0,2} }; room.RoomArray = table; room.AddArrow(0,6*32+16, Arrow.DIR_LEFT, 28, Color.white); room.AddArrow(10*28,0, Arrow.DIR_UP, 28, Color.white); room.AddArrow(559,6*32+16, Arrow.DIR_RIGHT, 28, Color.white); } { // Room 4, Paintbrush intro Room room = (Room) rooms.elementAt(4); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("This is a PAINTBRUSH.", 2*28, 2*32, 300); room.AddTextBox("Use it in special rooms in the INNOVATION LAB to design mazes.", 2*28, 3*32, 400); room.AddTextBox("Press P to become the Paintbrush.", 2*28, 8*32, 500); room.AddTextBox("Press C to become the Cursor.", 2*28, 10*32, 500); // PaintBrush pb = new PaintBrush(); // pb.x = 17*28+10; // pb.y = 44; // pb.room = room; // items.addElement(pb); room.AddArrow(0,6*32+16, Arrow.DIR_LEFT, 28, Color.white); } { // Room 5, Paintbrush intro 2 Room room = (Room) rooms.elementAt(5); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("Try painting and erasing walls in the maze rooms below.", 2*28, 2*32, 500); room.AddTextBox("To paint, press the SPACEBAR and move the paintbrush.", 2*28, 4*32, 500); room.AddTextBox("To erase, sit on a wall and press SPACEBAR as you move.", 2*28, 6*32, 500); room.AddTextBox("Paintable Maze Rooms", 1*28, 9*32, 100); room.AddTextBox("Return to the Cross- roads when you have finished your maze.", 9*28, 9*32, 300); room.AddArrow(3*28,383, Arrow.DIR_DOWN, 28, Color.white); } { // Room 6, Maze Top Left Room room = (Room) rooms.elementAt(6); int[][] table = { {5,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0}, {5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5} }; room.RoomArray = table; room.editable=true; } { // Room 7, Maze Top Right Room room = (Room) rooms.elementAt(7); int[][] table = { {5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,5}, {5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5} }; room.RoomArray = table; room.editable=true; } { // Room 8, Maze Bottom Left Room room = (Room) rooms.elementAt(8); int[][] table = { {5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5} }; room.RoomArray = table; room.editable=true; } { // Room 9, Maze Bottom Right Room room = (Room) rooms.elementAt(9); int[][] table = { {5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5}, {5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5} }; room.RoomArray = table; room.editable=true; } { // Room 10, Shape Editor intro Room room = (Room) rooms.elementAt(10); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("The INNOVATION LAB contains a SHAPE EDITOR like the one next door.", 2*28, 2*32, 500); room.AddTextBox("You can use the shape editor to change the shapes of the sensors and the objects they detect.", 2*28, 5*32, 500); room.AddTextBox("Go try the shape editor. Take the crystal or sensor with you.", 2*28, 10*32, 500); room.AddArrow(559,6*32+16, Arrow.DIR_RIGHT, 28, Color.white); items.addElement(new Crystal(5*28, 8*32, room, 100000)); items.addElement(new DirectionalSensor(11*28, 6*32, room, new Crystal(0,0,null,0))); } { // Room 11, Shape Editor room Room room = (Room) rooms.elementAt(11); int[][] table = { {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}, {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, {4, 0, 7, 0, 0, 0, 0, 8, 0, 0, 0, 0, 9, 0, 0, 0, 0,10, 0, 4}, {4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4} }; room.RoomArray = table; room.AddTextBox("Shape Editor", 7*28, 2*32, 200); room.AddTextBox("Shape Icons", 7*28, 8*32, 200); room.AddTextBox("Pass a sensor or item over one of the shape icons to change it to that shape.", 2*28, 3*32, 500); room.AddArrow(559,6*32+16, Arrow.DIR_RIGHT, 28, Color.white); } { // Room 12, Shape Editor workshop Room room = (Room) rooms.elementAt(12); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("This robot will beep when it touches an energy crystal. Try it.", 2*28, 2*32, 400); room.AddTextBox("Now, unwire the sensor in the robot and change its shape to a triangle.", 2*28, 5*32, 400); room.AddTextBox("Wire it up again and make it beep when it touches the triangle.", 2*28, 8*32, 500); room.AddTextBox("Then return to the Crossroads.", 2*28, 10*32, 500); BlueRobot robot = new BlueRobot(16*28, 2*32, room); items.addElement(robot); ContactSensor sensor = new ContactSensor(4*28, 6*32, robot.InternalRoom, new Crystal(0,0,null,0)); items.addElement(sensor); Wire wire = new Wire(robot.devices[8].ports[0], sensor.ports[0]); items.addElement(new Triangle(15*28, 4*32, room, new Color(255,128,0))); items.addElement(new Crystal(17*28, 4*32, room, 100000)); } { // Room 13, Prototype Intro Room room = (Room) rooms.elementAt(13); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("This is a PROTOTYPE CHIP. It has 8 pins that can be soldered to wires.", 2*28, 2*32, 250); room.AddTextBox("Notice how the pins are numbered.", 2*28, 5*32, 250); room.AddTextBox("CROSSROADS", 36, 7*32+24, 300); room.AddTextBox("The pins on this chip are neither outputs nor inputs because the chip isn't wired.", 2*28, 10*32, 550); room.AddTextBox("1 2 3 4", 13*28, 2*32, 30); room.AddTextBox("8 7 6 5", 18*28, 2*32, 30); room.AddArrow(0,7*32+16, Arrow.DIR_LEFT, 28, Color.white); room.AddArrow(559,9*32+16, Arrow.DIR_RIGHT, 28, Color.white); items.addElement(new PrototypeChip(14*28, 2*32-8,room)); } { // Room 14, Prototype Intro 2 Room room = (Room) rooms.elementAt(14); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("But chips can be wired inside!", 2*28, 2*32, 500); room.AddTextBox("You can create circuits inside a prototype chip (using nodes, fliplflops, and logic gates) and connect them to the pins inside.", 2*28, 4*32, 480); room.AddTextBox("When a chip is wired, pins change to outputs or inputs, depending on how they are wired. Unwired pins remain neutral.", 2*28, 8*32, 480); room.AddArrow(559,9*32+16, Arrow.DIR_RIGHT, 28, Color.white); } { // Room 15, Prototype Chip Room room = (Room) rooms.elementAt(15); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("This prototype chip has a circuit inside.", 2*28, 2*32, 400); room.AddTextBox("This circuit sends out pulses of electricity. Go inside the chip and see.", 2*28, 5*32, 400); room.AddTextBox("Because of the circuit wiring, pin 1 is now an input on the inside and an output on the outside.", 2*28, 8*32, 500); room.AddTextBox("Take the chip with you.", 2*28, 11*32, 500); room.AddArrow(559,9*32+16, Arrow.DIR_RIGHT, 28, Color.white); PrototypeChip pc = new PrototypeChip(14*28, 2*32-8,room); items.addElement(pc); Node node = new Node(4*28, 2*32, pc.InternalRoom, Node.TYPE_STRAIGHT); items.addElement(node); NOTGate ng = new NOTGate(6*28, 3*32, pc.InternalRoom); items.addElement(ng); Wire wire = new Wire(node.ports[0], ng.ports[1]); wire = new Wire(ng.ports[0], node.ports[2]); wire = new Wire(pc.portdevices[0].ports[0], node.ports[1]); } { // Room 16, Antenna Room room = (Room) rooms.elementAt(16); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2} }; room.RoomArray = table; room.AddTextBox("You can use a chip with a circuit inside to activate a robot part.", 5*28, 2*32, 350); room.AddTextBox("Solder pin 1 to the INPUT of this antenna. Notice how the antenna pulses on and off.", 5*28, 9*32, 300); room.AddArrow(559,6*32+16, Arrow.DIR_RIGHT, 28, Color.white); items.addElement(new Antenna(2*28, 2*32, room, Color.white)); } { // Room 17, Antenna & SmallChip Room room = (Room) rooms.elementAt(17); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,2} }; room.RoomArray = table; room.AddTextBox("This SMALL CHIP was created by 'burning' into it a copy of the prototype chip's circuit.", 6*28, 2*32, 400); room.AddTextBox("It work's just like a prototype chip, but you can't go inside.", 6*28, 5*32, 400); room.AddTextBox("Solder pin 1 (upper left pin) to the antenna INPUT. Does it work like the prototype chip?", 2*28, 9*32, 450); room.AddArrow(17*28+14,383, Arrow.DIR_DOWN, 28, Color.white); items.addElement(new Antenna(2*28, 2*32, room, Color.white)); SmallChip sc = new SmallChip(4*28, 4*32, room, "1"); items.addElement(sc); sc.LoadChip("chips/oscillator.chip"); } { // Room 18, Burner Intro Room room = (Room) rooms.elementAt(18); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("Small chips are 'burned' in the Burner Room of the INNOVATION LAB.", 2*28, 2*32, 400); room.AddTextBox("Go look at the burner room at the left.", 2*28, 5*32, 400); room.AddTextBox("Look here", 0, 6*32, 100); room.AddTextBox("To burn a chip, become the cursor and sit on the burn button. Then press SPACEBAR. Try it now and see what happens.", 5*28, 9*32, 400); room.AddArrow(0,7*32, Arrow.DIR_LEFT, 28, Color.white); room.AddArrow(2*28+14,383, Arrow.DIR_DOWN, 28, Color.white); } { // Room 19, Burner Room Room room = (Room) rooms.elementAt(19); int[][] table = { {4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}, {4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4}, {4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4}, {4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4}, {4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4}, {4,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,4,0,0,0}, {4,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,4,0,0,0}, {4,0,4,0,0,0,0,4,0,0,0,4,0,0,4,0,4,0,0,0}, {4,0,4,4,4,4,4,4,0,0,0,4,0,0,4,0,4,0,0,0}, {4,0,0,0,4,4,0,0,0,0,0,4,4,4,4,0,4,0,0,4}, {4,0,0,0,4,4,0,0,0,0,0,0,4,4,0,0,4,0,0,4}, {4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4} }; room.RoomArray = table; room.AddTextBox("Burner Room", 2*28, 2*32, 400); room.AddTextBox("Prototype chip goes here.", 2*28, 4*32, 250); room.AddTextBox("Small chip goes here.", 11*28, 6*32, 170); room.AddTextBox("BURN BUTTON", 17*28, 8*32, 100); room.AddArrow(5*28,5*32+16, Arrow.DIR_DOWN, 28, Color.white); room.AddArrow(13*28,7*32+16, Arrow.DIR_DOWN, 28, Color.white); room.AddArrow(18*28+14,9*32+16, Arrow.DIR_DOWN, 28, Color.white); PrototypeChip pc = new PrototypeChip(3*28+4, 5*32+12, room); items.addElement(pc); pc.inBurner = true; SmallChip sc = new SmallChip(13*28-13, 8*32-15, room, "1"); items.addElement(sc); sc.inBurner = true; items.addElement(new Burner(18*28, 10*32+2, room)); } { // Room 20, Nesting Room room = (Room) rooms.elementAt(20); int[][] table = { {2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("You can use small chips as part of a circuit inside the prototype chip. This is called 'nesting'.", 4*28, 2*32, 400); room.AddArrow(0,6*32+16, Arrow.DIR_LEFT, 28, Color.white); } { // Room 21, Nesting II Room room = (Room) rooms.elementAt(21); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("Take the shortcut up. Bring back the prototype chip and the small chip.", 2*28, 3*32, 400); room.AddTextBox("Disconnect the wires in the prototype chip.", 2*28, 6*32, 400); room.AddTextBox("Take both chips next door to try nesting the small chip inside the prototype chip.", 2*28, 9*32, 500); room.AddTextBox("SHORTCUT", 14*28, 32-8, 100); room.AddArrow(18*28+14,0, Arrow.DIR_UP, 28, Color.white); room.AddArrow(0,6*32+16, Arrow.DIR_LEFT, 28, Color.white); } { // Room 22, Nesting III Room room = (Room) rooms.elementAt(22); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("Take the small chip inside the prototype chip. Solder it's pin 1 to the prototype's pin 1.", 2*28, 2*32, 500); room.AddTextBox("Next, solder a NOT-gate's OUTPUT to the prototype's pin 3.", 2*28, 5*32, 500); room.AddTextBox("Come outside and take the chip into the next room.", 2*28, 9*32, 500); room.AddArrow(0,6*32+16, Arrow.DIR_LEFT, 28, Color.white); } { // Room 23, Nesting workshop Room room = (Room) rooms.elementAt(23); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("Put the prototype chip in the robot and solder the pins as shown:", 2*28, 2*32, 500); room.AddTextBox("Pin 1 to the antenna INPUT Pin 2 to the left thruster", 3*28, 4*32, 350); room.AddTextBox("Close the robot's thruster switch.", 5*28, 8*32, 400); room.AddTextBox("Now you have a robot that moves right and beeps.", 5*28, 10*32, 400); room.AddArrow(2*28+14,383, Arrow.DIR_DOWN, 28, Color.white); OrangeRobot robot = new OrangeRobot(16*28, 3*32, room); items.addElement(robot); items.addElement(new RoomSensor(8*28, 3*32, robot.InternalRoom, new Square(0,0,null,Color.white))); items.addElement(new ContactSensor(10*28, 5*32, robot.InternalRoom, new Hexagon(0,0,null,Color.white))); } { // Room 24, Wallhugger intro Room room = (Room) rooms.elementAt(24); int[][] table = { {2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("By nesting chips inside chips, you can create very complex circuits.", 6*28, 2*32, 400); room.AddTextBox("This WALLHUGGER chip is an example of a complex circuit. It is wired with 16 logic gates and one nested chip.", 6*28, 5*32, 400); room.AddTextBox("Take the chip with you.", 6*28, 10*32, 500); room.AddArrow(0,9*32+16, Arrow.DIR_LEFT, 28, Color.white); SmallChip sc = new SmallChip(4*28, 5*32, room, "3"); items.addElement(sc); sc.LoadChip("chips/WallHugger.chip"); } { // Room 25, Wallhugger wiring Room room = (Room) rooms.elementAt(25); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("You can use chips inside robots.", 2*28, 2*32, 400); room.AddTextBox("Take the WALLHUGGER chip inside this robot.", 2*28, 3*32, 400); room.AddTextBox("Solder the pins as shown.", 2*28, 5*32, 400); room.AddTextBox("PIN TO PIN TO", 2*28, 6*32, 400); room.AddTextBox("1 top thruster 2 left bumper 3 left thruster 4 bottom bumper", 3*28, 6*32+16, 250); room.AddTextBox("8 top bumper 7 right thruster 6 right bumper 5 bottom thruster", 11*28, 6*32+16, 240); room.AddArrow(0,9*32+16, Arrow.DIR_LEFT, 28, Color.white); WhiteRobot robot = new WhiteRobot(16*28, 3*32, room); items.addElement(robot); items.addElement(new DirectionalSensor(8*28, 3*32, robot.InternalRoom, new Crystal(0,0,null,0))); items.addElement(new ContactSensor(10*28, 5*32, robot.InternalRoom, new Crystal(0,0,null,0))); } { // Room 26, Wallhugger intro II Room room = (Room) rooms.elementAt(26); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2} }; room.RoomArray = table; room.AddTextBox("Take the robot to the maze below. Close the thruster switch.", 2*28, 2*32, 400); room.AddTextBox("How does the WALLHUGGER chip work in this kind of maze?", 2*28, 5*32, 400); room.AddTextBox("Maze", 16*28, 11*32, 400); room.AddArrow(17*28,383, Arrow.DIR_DOWN, 28, Color.white); room.AddArrow(0,9*32+16, Arrow.DIR_LEFT, 28, Color.white); } { // Room 27, Wallhugger maze Room room = (Room) rooms.elementAt(27); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2}, {2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,2,2,2,2}, {2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,0,0,0,0,2,0,0,0,0,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; } { // Room 28, Chip speed Room room = (Room) rooms.elementAt(28); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("Chips can also be set to run faster than normal circuits.", 2*28, 2*32, 500); room.AddTextBox("The Burner Room in the INNOVATION LAB has a SPEED SETTING that can be changed by using the Up and Down arrows in the Burner Room. A chip receives this speed setting when it's burned.", 2*28, 4*32, 500); room.AddTextBox("A chip's speed sets the number of times the chip will be processed in one INSTANT. One instant is the time it takes for a gate (outside a chip) to process its inputs and send an output.", 2*28, 8*32, 500); room.AddArrow(0,9*32+16, Arrow.DIR_LEFT, 28, Color.white); } { // Room 29, Chip talk Room room = (Room) rooms.elementAt(29); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("Here are some special uses of chips.", 2*28, 2*32, 500); room.AddTextBox("Chips can be wired inside other chips to create very complex chips.", 3*28, 3*32, 450); room.AddTextBox("Chips can be transferred to ROBOTROPOLIS where you can use them to help you escape.", 3*28, 5*32, 450); room.AddTextBox("Chips can be used to save space in a robot.", 3*28, 7*32, 450); room.AddTextBox("Chips can be used to make complex circuits run as fast as a single gate.", 3*28, 9*32, 450); room.AddArrow(0,9*32+16, Arrow.DIR_LEFT, 28, Color.white); } { // Room 30, Chip Record Room room = (Room) rooms.elementAt(30); int[][] table = { {3,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3} }; room.RoomArray = table; room.AddTextBox("You can make a RECORD of a chip's circuit. You can then review the chip's record whenever you want.", 4*28, 2*32, 400); room.AddTextBox("Pick up this chip and press ? to see and edit its record.", 4*28, 5*32, 400); room.AddTextBox("You can also use the record to change the label on the small chip. Just change the letter in the top right field and press Save.", 4*28, 7*32, 400); room.AddArrow(2*28+14,0, Arrow.DIR_UP, 28, Color.white); SmallChip sc = new SmallChip(2*28, 5*32, room, "5"); items.addElement(sc); sc.LoadChip("chips/gates.chip"); } { // Room 31, Chip Save Room room = (Room) rooms.elementAt(31); int[][] table = { {3,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3} }; room.RoomArray = table; room.AddTextBox("You can also save a chip's circuit for later use.", 4*28, 2*32, 400); room.AddTextBox("To save a chip's circuit, pick up a chip in the INNOVATION LAB and press S.", 4*28, 4*32+16, 400); room.AddTextBox("You can recycle small chips. First save the old version of the chip. Then burn in a new circuit.", 4*28, 8*32, 400); room.AddArrow(2*28+14,0, Arrow.DIR_UP, 28, Color.white); } { // Room 32, Chip Load Room room = (Room) rooms.elementAt(32); int[][] table = { {3,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3} }; room.RoomArray = table; room.AddTextBox("You can LOAD circuits you have saved into small chips.", 4*28, 3*32, 400); room.AddTextBox("To load a chip, pick up a chip and press L. A dialog box of circuit names will appear. Select the one you want.", 4*28, 5*32, 400); room.AddTextBox("Chips can be loaded in the INNOVATION LAB or in ROBOTROPOLIS where you can use them to help you escape.", 4*28, 8*32, 400); room.AddArrow(2*28+14,0, Arrow.DIR_UP, 28, Color.white); } { // Room 33, Exit Room room = (Room) rooms.elementAt(33); int[][] table = { {2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2} }; room.RoomArray = table; room.AddTextBox("You have learned how to use many features of the INNOVATION LAB.", 2*28, 3*32, 500); room.AddTextBox("Go to the INNOVATION LAB.", 6*28, 7*32, 500); room.AddTextBox("Return to the MAIN MENU.", 6*28, 9*32, 500); room.AddTextBox("Press ? for help or hints.", 2*28, 11*32, 500); } { // Room 34, Paintbrush colors Room room = (Room) rooms.elementAt(34); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("The Paintbrush can also paint walls of different colors and properties. Press P to change colors.", 2*28, 2*32, 500); room.AddTextBox("{255,000,000} RED {128,128,128} walls block all robots and are detectable.", 3*28, 5*32, 500); room.AddTextBox("{000,255,000} GREEN {128,128,128} walls block all robots and are not detectable.", 3*28, 7*32, 450); room.AddTextBox("{255,128,000} ORANGE, {255,255,255} WHITE, {128,128,128} and {000,000,255} BLUE {128,128,128} walls block their respectivly colored robots, and are not detectable.", 3*28, 9*32, 500); } { // Room 35, Factory Intro Room room = (Room) rooms.elementAt(35); int[][] table = { {2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("The INNOVATION LAB has two FACTORIES for creating chips, shapes, and sensors.", 2*28, 2*32, 500); room.AddTextBox("Factories also have TRASH containers, which you can use to dispose of items that you no longer need.", 2*28, 5*32, 500); room.AddTextBox("Go try the factory in the next room.", 2*28, 8*32, 500); room.AddArrow(11*28,0, Arrow.DIR_UP, 28, Color.white); } { // Room 36, Factory Room room = (Room) rooms.elementAt(36); int[][] table = { {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2,13,13,13,13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2,13,13,13,13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2,13,13,13,13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2,13,13,13,13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2} }; room.RoomArray = table; room.AddTextBox("FACTORY", 8*28+14, 2*32, 500); room.AddTextBox("Press to summon an Energy Crystal", 5*28, 3*32+24, 500); items.addElement(new Factory(2*28,3*32,room,new Crystal(0,0,null,100000))); room.AddArrow(3*28+14, 4*28, Arrow.DIR_LEFT, 28, Color.white); room.AddTextBox("Drag crystal into Trash to dispose.", 2*28, 6*32-8, 500); room.AddTextBox("TRASH", 2*28, 9*32, 500); room.AddArrow(3*28, 7*32, Arrow.DIR_DOWN, 28, Color.white); room.AddTextBox("Return to the Crossroads.", 12*28, 10*32, 200); } { // Room 37, Unburning Room room = (Room) rooms.elementAt(37); int[][] table = { {2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("Chips can also be unburned.", 2*28, 2*32, 500); room.AddTextBox("To unburn a chip, place a burned or loaded chip into the right holder, and an empty Prototype chip in the left. Then press the UNBURN button.", 2*28, 4*32, 500); room.AddTextBox("The Prototype chip will automatically be wired to match the small chip's circutry.", 2*28, 8*32, 500); room.AddArrow(2*28+14,559, Arrow.DIR_DOWN, 28, Color.white); } { // Room 38, ChipTest intro Room room = (Room) rooms.elementAt(38); int[][] table = { {3,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {3,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3} }; room.RoomArray = table; room.AddTextBox("To the Crossroads", 28, 32+16, 500); room.AddTextBox("The Innovation Lab also has a CHIP TESTER for testing prototype chips and small chips.", 4*28, 3*32, 450); room.AddTextBox("Place a chip in the holder and then press the AUTOWIRE button. The chip will be wired to the tester, and the buttons can be used to set or display port values.", 4*28, 6*32, 450); room.AddTextBox("Press the autowire button again to unwire the chip.", 4*28, 10*32, 450); room.AddArrow(28+14,0, Arrow.DIR_UP, 28, Color.white); } { // Room 39, Chip Testing Room room = (Room) rooms.elementAt(39); int[][] table = { {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 2,14,14,14,14,14,14, 2, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 2,14,14,14,14,14,14, 2, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 2,14,14,14,14,14,14, 2, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 2,14,14,14,14,14,14, 2, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2} }; room.RoomArray = table; room.AddTextBox("Chip Tester", 2*28, 32+24, 500); PortDevice[] portdevices = new PortDevice[8]; portdevices[0] = new PortDevice(6*28,3*32+8,room,28,Port.TYPE_UNDEFINED); portdevices[1] = new PortDevice(6*28,4*32+8,room,28,Port.TYPE_UNDEFINED); portdevices[2] = new PortDevice(6*28,5*32+8,room,28,Port.TYPE_UNDEFINED); portdevices[3] = new PortDevice(6*28,6*32+8,room,28,Port.TYPE_UNDEFINED); portdevices[4] = new PortDevice(12*28+8,6*32+8,room,28,Port.TYPE_UNDEFINED); portdevices[5] = new PortDevice(12*28+8,5*32+8,room,28,Port.TYPE_UNDEFINED); portdevices[6] = new PortDevice(12*28+8,4*32+8,room,28,Port.TYPE_UNDEFINED); portdevices[7] = new PortDevice(12*28+8,3*32+8,room,28,Port.TYPE_UNDEFINED); portdevices[0].rotate(1); portdevices[1].rotate(1); portdevices[2].rotate(1); portdevices[3].rotate(1); portdevices[4].rotate(-1); portdevices[5].rotate(-1); portdevices[6].rotate(-1); portdevices[7].rotate(-1); for (int a=0; a<8; a++) items.addElement(portdevices[a]); items.addElement(new AutoWire(2*28,10*32,room)); items.addElement(new WireTester(5*28,3*32,room,portdevices[0])); items.addElement(new WireTester(5*28,4*32,room,portdevices[1])); items.addElement(new WireTester(5*28,5*32,room,portdevices[2])); items.addElement(new WireTester(5*28,6*32,room,portdevices[3])); items.addElement(new WireTester(14*28+2,6*32,room,portdevices[4])); items.addElement(new WireTester(14*28+2,5*32,room,portdevices[5])); items.addElement(new WireTester(14*28+2,4*32,room,portdevices[6])); items.addElement(new WireTester(14*28+2,3*32,room,portdevices[7])); room.AddArrow(3*28,10*32+16,Arrow.DIR_LEFT,28,Color.white); room.AddTextBox("Autowirer",4*28,11*32-8,200); } { // Room 40, Maze Control Room room = (Room) rooms.elementAt(40); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; room.AddTextBox("The Maze can also be changed to whatever size you want.", 2*28, 2*32, 500); room.AddTextBox("The Innovation Lab's MAZE CONTROL ROOM has five buttons that allow you to set the size the maze, and a sixth button that locks the maze by preventing the cursor from becoming the paintbrush.", 2*28, 4*32, 500); room.AddTextBox("You can use this to create your own puzzles and share them with your friends.", 2*28, 8*32, 500); room.AddTextBox("Try it in the next room.", 2*28, 11*32, 500); } { // Room 41, Maze Control Room room = (Room) rooms.elementAt(41); int[][] table = { {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2} }; room.RoomArray = table; // room.AddTextBox("", // 2*28, 2*32, 500); room.AddTextBox("Maze Control Room", 178, 2*32, 300); room.AddTextBox("4x2", 262, 5*32+24, 500); items.addElement(new MazeControl(9*28+14,3*32+6,room,MazeControl.DIR_UP)); items.addElement(new MazeControl(9*28+14,7*32,room,MazeControl.DIR_DOWN)); items.addElement(new MazeControl(7*28+2,5*32+4,room,MazeControl.DIR_LEFT)); items.addElement(new MazeControl(12*28,5*32+4,room,MazeControl.DIR_RIGHT)); items.addElement(new MazeCreator(2*28, 10*32, room)); room.AddArrow(3*28+14,10*32+12, Arrow.DIR_LEFT, 28, Color.white); room.AddTextBox("Press to resize Maze", 5*28, 10*32+18, 500); room.AddArrow(18*28+14,10*32, Arrow.DIR_DOWN, 28, Color.white); room.AddTextBox("Lock", 17*28+4, 9*32-4, 100); room.AddTextBox("These arrows change the size of the maze.", 2*28, 4*32, 150); } int[] list1 = {1,2,13,14,15,16,17}; LinkRoomsHorizontally(list1); int[] list2 = {36,35,3,2,33}; LinkRoomsVertically(list2); int[] list3 = {17,18,37,20}; LinkRoomsVertically(list3); LinkRoomsUpDown(16,21); LinkRoomsLeftRight(19,18); int[] list4 = {23,22,21,20}; LinkRoomsHorizontally(list4); int[] list5 = {30,29,28,26,25,24}; LinkRoomsHorizontally(list5); LinkRoomsUpDown(23,24); LinkRoomsUpDown(26,27); int[] list6 = {13,38,32,31,30}; LinkRoomsVertically(list6); LinkRoomsLeftRight(38,39); int[] list7 = {41,40,34,5,4,3,10,11,12}; LinkRoomsHorizontally(list7); int[][] grid = { {6,7}, {8,9} }; LinkRoomsGrid(grid); LinkRoomsUpDown(5,6); { // Paintbrush code comes after Robots are constructed Room room = (Room) rooms.elementAt(4); PaintBrush pb = new PaintBrush(); pb.x = 17*28+10; pb.y = 44; pb.room = room; items.addElement(pb); } gameCursor = new LabCursor(16*28+14,5*32+16,(Room) rooms.elementAt(1)); helpCam = new HelpCam( (Room) rooms.elementAt(0)); solderingPen = new SolderingPen(); remote = new Remote(); paintbrush = new PaintBrush(); items.addElement(gameCursor); items.addElement(helpCam); items.addElement(solderingPen); items.addElement(remote); items.addElement(paintbrush); player = gameCursor; currentViewer = player; } }