DroidQuest/src/com/droidquest/levels/ROTut3.java

1312 lines
57 KiB
Java

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;
}
}