1223 lines
75 KiB
Java
1223 lines
75 KiB
Java
package com.droidquest.levels;
|
|
|
|
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.Remote;
|
|
import com.droidquest.avatars.SolderingPen;
|
|
import com.droidquest.chipstuff.Port;
|
|
import com.droidquest.decorations.Arrow;
|
|
import com.droidquest.devices.*;
|
|
import com.droidquest.items.*;
|
|
import com.droidquest.items.Button;
|
|
import com.droidquest.materials.CrystalRecharger;
|
|
import com.droidquest.materials.Material;
|
|
import com.droidquest.materials.Portal;
|
|
|
|
import java.awt.*;
|
|
|
|
class ROTut2 extends Level {
|
|
|
|
public ROTut2(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, Blue Wall
|
|
materials.addElement(new Material(new Color(0, 0, 255), false, true));
|
|
// Material 3, Light Blue Wall
|
|
materials.addElement(new Material(new Color(190, 190, 255), false, true));
|
|
// Material 4, Dark Blue Wall
|
|
materials.addElement(new Material(new Color(0, 0, 128), false, true));
|
|
// Material 5, Recharger
|
|
materials.addElement(new CrystalRecharger());
|
|
// Material 6, Portal to Tutorial 3;
|
|
materials.addElement(new Portal("ROTut3.lvl", false, true));
|
|
// Material 7, Portal to Main Menu;
|
|
materials.addElement(new Portal("MainMenu.lvl", false, true));
|
|
|
|
for (int a = 0; a < 42; a++) {
|
|
rooms.addElement(new Room());
|
|
}
|
|
|
|
{ // Room 0, Help Screen
|
|
Room room = rooms.elementAt(0);
|
|
room.RoomArray = new int[][]{
|
|
{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.AddTextBox("Special Keys", 6 * 28, 2 * 32, 500);
|
|
room.AddTextBox("R Become the Remote Control. SPACEBAR toggles on/off.",
|
|
2 * 28, 3 * 32, 500);
|
|
room.AddTextBox("S Become the Solderpen. SPACEBAR toggles on/off.",
|
|
2 * 28, 5 * 32, 500);
|
|
room.AddTextBox("C Become the Cursor. SPACEBAR toggles on/off.",
|
|
2 * 28, 7 * 32, 500);
|
|
room.AddTextBox("T Summons Toolkit to your room. Open/close Toolkit in room.",
|
|
2 * 28, 9 * 32, 500);
|
|
room.AddTextBox("To continue, press RETURN.", 4 * 28, 11 * 32, 500);
|
|
}
|
|
{ // Room 1, Title Screen
|
|
Room room = rooms.elementAt(1);
|
|
room.RoomArray = new int[][]{
|
|
{2, 0, 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.AddTextBox("{BIG} TOOLKIT", 6 * 28, 2 * 32, 500);
|
|
room.AddTextBox("Here you will learn to use the",
|
|
2 * 28, 3 * 32, 500);
|
|
room.AddTextBox("- Remote Control", 6 * 28, 5 * 32, 500);
|
|
room.AddTextBox("- Solderpen", 6 * 28, 6 * 32, 500);
|
|
room.AddTextBox("- Toolkit", 6 * 28, 7 * 32, 500);
|
|
room.AddTextBox("If you don't know about ROBOT ANATOMY, 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, Remote
|
|
Room room = rooms.elementAt(2);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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, 3, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 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, 3},
|
|
{3, 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, 3}
|
|
};
|
|
room.AddTextBox("This is the REMOTE CONTROL. It 'freezes' the flow of electricity.",
|
|
2 * 28, 2 * 32, 400);
|
|
room.AddTextBox("Press R to become the Remote Control.",
|
|
2 * 28, 6 * 32, 300);
|
|
room.AddArrow(559, 7 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
Remote remote = new Remote();
|
|
remote.x = 17 * 28 + 14;
|
|
remote.y = 48;
|
|
remote.room = room;
|
|
items.addElement(remote);
|
|
}
|
|
{ // Room 3, Freeze Electricity
|
|
Room room = rooms.elementAt(3);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 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, 3},
|
|
{3, 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, 3}
|
|
};
|
|
room.AddTextBox("Press SPACEBAR to 'freeze' the electricity. The Remote Control turns white.",
|
|
2 * 28, 2 * 32, 500);
|
|
room.AddTextBox("Press SPACEBAR again to let electricity flow. The Remote Control turns orange.",
|
|
2 * 28, 10 * 32, 500);
|
|
room.AddArrow(559, 7 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
Node node = new Node(10 * 28, 4 * 32, room, Node.TYPE_STRAIGHT);
|
|
NOTGate notgate = new NOTGate(15 * 28, 6 * 32, room);
|
|
items.addElement(node);
|
|
items.addElement(notgate);
|
|
Wire wire = new Wire(node.ports[0], notgate.ports[1]);
|
|
wire = new Wire(notgate.ports[0], node.ports[2]);
|
|
}
|
|
{ // Room 4, Freeze Robot
|
|
Room room = rooms.elementAt(4);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3},
|
|
{3, 3, 3, 3, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 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, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3}
|
|
};
|
|
room.AddTextBox("Freeze the electricity to stop the robot.",
|
|
9 * 28, 2 * 32, 300);
|
|
room.AddTextBox("Turn on the elec- tricity and the robot moves.",
|
|
9 * 28, 5 * 32, 300);
|
|
room.AddTextBox("When the Remote Control is on, it drains electricity from the Robot's battery.",
|
|
9 * 28, 8 * 32, 300);
|
|
room.AddArrow(559, 6 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
items.addElement(new Crystal(3 * 28, 10 * 32, room, 100000));
|
|
OrangeRobot robot = new OrangeRobot(28, 32, room);
|
|
items.addElement(robot);
|
|
RoomSensor sensor = new RoomSensor(6 * 28, 6 * 32, robot.InternalRoom,
|
|
new Crystal(0, 0, null, 0));
|
|
items.addElement(sensor);
|
|
sensor.rotate(1);
|
|
sensor.rotate(1);
|
|
Wire wire = new Wire(sensor.ports[0], robot.devices[8].ports[0]);
|
|
wire = new Wire(robot.devices[5].ports[0], robot.devices[2].ports[0]);
|
|
wire = new Wire(robot.devices[3].ports[0], robot.devices[6].ports[0]);
|
|
wire = new Wire(robot.devices[7].ports[0], robot.devices[0].ports[0]);
|
|
wire = new Wire(robot.devices[1].ports[0], robot.devices[4].ports[0]);
|
|
robot.thrusterPower = true;
|
|
}
|
|
{ // Room 5, Freeze Sensors
|
|
Room room = rooms.elementAt(5);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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},
|
|
{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, 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.AddTextBox("Freeze the electricity again. Press C to become the cursor. Pick up the sensor and move it around the crystal.",
|
|
2 * 28, 2 * 32, 450);
|
|
room.AddTextBox("Did the outputs change color?",
|
|
2 * 28, 5 * 32, 200);
|
|
room.AddTextBox("Sensors don't work when the remote control is off.",
|
|
2 * 28, 8 * 32, 350);
|
|
room.AddTextBox("Turn the remote contol on.",
|
|
2 * 28, 11 * 32, 500);
|
|
room.AddArrow(559, 9 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
items.addElement(new Crystal(12 * 28, 4 * 32, room, 100000));
|
|
items.addElement(new DirectionalSensor(15 * 28, 6 * 32, room,
|
|
new Crystal(0, 0, null, 0)));
|
|
}
|
|
{ // Room 6, Solderpen
|
|
Room room = rooms.elementAt(6);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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, 3, 0, 0, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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},
|
|
{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, 0, 0, 0, 0, 3}
|
|
};
|
|
room.AddTextBox("The SOLDERPEN is used to wire OUTPUTS to INPUTS.",
|
|
2 * 28, 2 * 32, 350);
|
|
room.AddTextBox("Press S to become the Solderpen.",
|
|
2 * 28, 5 * 32, 400);
|
|
room.AddTextBox("Tip",
|
|
14 * 28 + 8, 3 * 32 - 12, 50);
|
|
room.AddArrow(16 * 28 + 24, 2 * 32 + 14, Arrow.DIR_RIGHT, 28, Color.white);
|
|
room.AddArrow(17 * 28, 383, Arrow.DIR_DOWN, 28, Color.white);
|
|
SolderingPen sp = new SolderingPen();
|
|
items.addElement(sp);
|
|
sp.x = 17 * 28;
|
|
sp.y = 2 * 32 - 8;
|
|
sp.room = room;
|
|
}
|
|
{ // Room 7, Attach wires
|
|
Room room = rooms.elementAt(7);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 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},
|
|
{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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3},
|
|
{3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0},
|
|
{3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0},
|
|
{3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0},
|
|
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0}
|
|
};
|
|
room.AddTextBox("Move the Solderpen to the INPUT (circle) until the Solderpen tip glows orange. Press SPACEBAR.",
|
|
2 * 28, 2 * 32, 400);
|
|
room.AddTextBox("Move the Solderpen to the OUTPUT (arrow). When the tip glows orange, press SPACEBAR. The INPUT is now wired to the OUTPUT and electricity flows between them.",
|
|
2 * 28, 7 * 32, 400);
|
|
room.AddArrow(0, 5 * 32 + 16, Arrow.DIR_LEFT, 28, Color.white);
|
|
items.addElement(new Thruster(17 * 28, 9 * 32, room, Port.ROT_RIGHT, Color.white));
|
|
PortDevice pd = new PortDevice(15 * 28, 10 * 32, room, 28, Port.TYPE_OUTPUT);
|
|
pd.value = true;
|
|
items.addElement(pd);
|
|
}
|
|
{ // Room 8, Detatch wires
|
|
Room room = rooms.elementAt(8);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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, 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, 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, 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, 3, 0, 0},
|
|
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0}
|
|
};
|
|
room.AddTextBox("To disconnect the wire, move near the INPUT or OUTPUT. Press the SPACEBAR when the tip glows green.",
|
|
2 * 28, 2 * 32, 400);
|
|
room.AddArrow(0, 9 * 32 + 16, Arrow.DIR_LEFT, 28, Color.white);
|
|
Thruster thruster = new Thruster(17 * 28, 9 * 32, room, Port.ROT_RIGHT, Color.white);
|
|
items.addElement(thruster);
|
|
PortDevice pd = new PortDevice(15 * 28, 10 * 32, room, 28, Port.TYPE_OUTPUT);
|
|
pd.value = true;
|
|
items.addElement(pd);
|
|
Wire wire = new Wire(thruster.ports[0], pd.ports[0]);
|
|
}
|
|
{ // Room 9, Stretch Wires
|
|
Room room = rooms.elementAt(9);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 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.AddTextBox("When you connect inputs to outputs, you create CIRCUITS.",
|
|
2 * 28, 2 * 32, 500);
|
|
room.AddTextBox("Change to the cursor and pick up part of this circuit.",
|
|
2 * 28, 4 * 32, 500);
|
|
room.AddTextBox("The wire will stretch as you move, but break if you leave the room.",
|
|
2 * 28, 6 * 32, 500);
|
|
room.AddArrow(0, 9 * 32 + 16, Arrow.DIR_LEFT, 28, Color.white);
|
|
NOTGate ng = new NOTGate(15 * 28, 7 * 32, room);
|
|
ORGate og = new ORGate(10 * 28, 7 * 32, room);
|
|
og.rotate(1);
|
|
og.rotate(1);
|
|
items.addElement(ng);
|
|
items.addElement(og);
|
|
Wire wire = new Wire(ng.ports[1], og.ports[0]);
|
|
wire = new Wire(og.ports[2], ng.ports[0]);
|
|
}
|
|
{ // Room 10, Stretch Wires
|
|
Room room = rooms.elementAt(10);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 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},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 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.AddTextBox("Practice wiring circuits in the orange robot above. (Don't forget to come back!)",
|
|
2 * 28, 2 * 32, 400);
|
|
room.AddTextBox("Go inside the robot and rewire the bumpers to the thrusters in any way you like.",
|
|
2 * 28, 5 * 32, 400);
|
|
room.AddTextBox("To start the robot moving, put it against a wall.",
|
|
2 * 28, 8 * 32, 400);
|
|
room.AddArrow(0, 9 * 32 + 16, Arrow.DIR_LEFT, 28, Color.white);
|
|
}
|
|
{ // Room 11, Toolkit is here
|
|
Room room = rooms.elementAt(11);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}
|
|
};
|
|
room.AddTextBox("This is the TOOLKIT. Inside are parts you need to wire circuits.",
|
|
2 * 28, 2 * 32, 400);
|
|
room.AddTextBox("Press C to become the cursor and pick up the Toolkit.",
|
|
2 * 28, 5 * 32, 400);
|
|
room.AddTextBox("Carry it into the next room.",
|
|
2 * 28, 8 * 32, 400);
|
|
room.AddArrow(3 * 28, 383, Arrow.DIR_DOWN, 28, Color.white);
|
|
toolbox = new ToolBox(15 * 28, 2 * 32, room);
|
|
items.addElement(toolbox);
|
|
}
|
|
{ // Room 12, Open and Close Toolkit
|
|
Room room = rooms.elementAt(12);
|
|
room.RoomArray = new int[][]{
|
|
{3, 0, 0, 0, 0, 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.AddTextBox("Drop Toolkit here.",
|
|
4 * 28, 4 * 32, 100);
|
|
room.AddTextBox("You can open and close the Toolkit by pressing T. Try it a few times.",
|
|
2 * 28, 7 * 32, 300);
|
|
room.AddTextBox("Leave the Toolkit here.",
|
|
2 * 28, 10 * 32, 400);
|
|
room.AddArrow(9 * 28, 5 * 32, Arrow.DIR_RIGHT, 28, Color.white);
|
|
room.AddArrow(559, 9 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
}
|
|
{ // Room 13, Toolkit Sentry
|
|
Room room = rooms.elementAt(13);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 3},
|
|
{3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0},
|
|
{3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 0},
|
|
{3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 0},
|
|
{3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 0},
|
|
{0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 3},
|
|
{0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 3},
|
|
{0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 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, 3}
|
|
};
|
|
room.AddTextBox("NO TOOLKITS ALLOWED!",
|
|
2 * 28, 2 * 32, 150);
|
|
room.AddArrow(559, 6 * 32, Arrow.DIR_RIGHT, 28, Color.white);
|
|
items.add(new SentryT2(2 * 28, 2 * 32, room));
|
|
}
|
|
{ // Room 14, Summon Toolkit
|
|
Room room = rooms.elementAt(14);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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},
|
|
{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, 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.AddTextBox("Do you want the Toolkit? Press T to summon it. Drop the Toolkit and press T to open and close it.",
|
|
2 * 28, 2 * 32, 500);
|
|
room.AddArrow(559, 9 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
}
|
|
{ // Room 15, Objects in Toolkit
|
|
Room room = rooms.elementAt(15);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 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.AddTextBox("You can take parts in and out of the Toolkit with the cursor.",
|
|
2 * 28, 2 * 32, 500);
|
|
room.AddTextBox("To take a part out, move on top of it and press the SPACEBAR. To put it back, drop it anywhere in the Toolkit.",
|
|
2 * 28, 5 * 32, 500);
|
|
room.AddTextBox("Open Toolkit here.",
|
|
3 * 28, 9 * 32, 100);
|
|
room.AddArrow(7 * 28, 10 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
room.AddArrow(559, 9 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
}
|
|
{ // Room 16, Rotating Objects
|
|
Room room = rooms.elementAt(16);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 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.AddTextBox("You can rotate parts left and right by holding a part and pressing the [ and ] keys.",
|
|
2 * 28, 2 * 32, 450);
|
|
room.AddTextBox("There is no limit to the number of parts you can take out of the Toolkit.",
|
|
2 * 28, 5 * 32, 450);
|
|
room.AddTextBox("Open Toolkit here.",
|
|
3 * 28, 9 * 32, 100);
|
|
room.AddArrow(7 * 28, 10 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
room.AddArrow(559, 9 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
}
|
|
{ // Room 17, Hot Cursor
|
|
Room room = rooms.elementAt(17);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 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.AddTextBox("You can make the cursor HOT with elctricity. Press H.",
|
|
6 * 28, 2 * 32, 300);
|
|
room.AddTextBox("Pass the hot cursor over the antenna INPUT to turn the antenna on.",
|
|
6 * 28, 5 * 32, 300);
|
|
room.AddTextBox("Press H again to make the cursor cold.",
|
|
6 * 28, 8 * 32, 300);
|
|
room.AddArrow(559, 9 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
items.addElement(new Antenna(2 * 28, 2 * 32, room, Color.white));
|
|
}
|
|
{ // Room 18 Crossroads
|
|
Room room = rooms.elementAt(18);
|
|
room.RoomArray = new int[][]{
|
|
{4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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},
|
|
{4, 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, 0},
|
|
{4, 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, 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, 0, 4},
|
|
{0, 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, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4}
|
|
};
|
|
room.AddTextBox("{BIG} CROSSROADS",
|
|
3 * 28, 4 * 32, 500);
|
|
room.AddTextBox("(Turn the Remote Control on.)",
|
|
4 * 28, 5 * 32, 250);
|
|
room.AddTextBox("NODES",
|
|
2 * 28, 32 + 16, 300);
|
|
room.AddTextBox("FLIPFLOPS",
|
|
15 * 28, 32 + 16, 300);
|
|
room.AddTextBox("LOGIC GATES",
|
|
16 * 28, 6 * 32, 100);
|
|
room.AddTextBox("When you have learned all about the Toolkit, go this way.",
|
|
4 * 28, 9 * 32, 300);
|
|
room.AddArrow(3 * 28, 0, Arrow.DIR_UP, 28, Color.white);
|
|
room.AddArrow(17 * 28, 0, Arrow.DIR_UP, 28, Color.white);
|
|
room.AddArrow(559, 6 * 32, Arrow.DIR_RIGHT, 28, Color.white);
|
|
room.AddArrow(10 * 28, 383, Arrow.DIR_DOWN, 28, Color.white);
|
|
}
|
|
{ // Room 19, Paths to Nodes & FlipFlops
|
|
Room room = rooms.elementAt(19);
|
|
room.RoomArray = new int[][]{
|
|
{4, 0, 0, 0, 0, 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, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4},
|
|
{0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4},
|
|
{0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4},
|
|
{0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4},
|
|
{4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4},
|
|
{4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4},
|
|
{4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4},
|
|
{4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4}
|
|
};
|
|
room.AddArrow(3 * 28, 0, Arrow.DIR_UP, 28, Color.white);
|
|
room.AddArrow(0, 6 * 32 + 16, Arrow.DIR_LEFT, 28, Color.white);
|
|
}
|
|
{ // Room 20, Nodes Intro
|
|
Room room = rooms.elementAt(20);
|
|
room.RoomArray = new int[][]{
|
|
{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, 2, 0, 0, 0, 0, 0, 0, 2},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2},
|
|
{2, 0, 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, 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.AddTextBox("Nodes make electricity branch to two or three places.",
|
|
2 * 28, 2 * 32, 350);
|
|
room.AddTextBox("Take a node from the Toolkit and carry it to the next room.",
|
|
2 * 28, 9 * 32, 500);
|
|
room.AddArrow(0, 6 * 32 + 16, Arrow.DIR_LEFT, 28, Color.white);
|
|
items.addElement(new Node(13 * 28, 32 + 16, room, Node.TYPE_STRAIGHT));
|
|
items.addElement(new Node(15 * 28, 32 + 16, room, Node.TYPE_RIGHT));
|
|
items.addElement(new Node(17 * 28, 32 + 16, room, Node.TYPE_THREE));
|
|
}
|
|
{ // Room 21, Nodes Workshop
|
|
Room room = rooms.elementAt(21);
|
|
room.RoomArray = new int[][]{
|
|
{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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.AddTextBox("Wire the INPUT (circle) of the node to the OUTPUT of the CONTACT sensor. Wire the node outputs to the thrusters.",
|
|
2 * 28, 2 * 32, 275);
|
|
room.AddTextBox("Drop the blue key so that it touches the sensor. Electricity flows to both thrusters.",
|
|
2 * 28, 9 * 32, 500);
|
|
items.addElement(new Key(11 * 28, 2 * 32, room, Color.white));
|
|
items.addElement(new ContactSensor(11 * 28, 4 * 32, room, new Key(0, 0, null, Color.white)));
|
|
items.addElement(new Thruster(15 * 28, 32 + 16, room, Port.ROT_UP, Color.white));
|
|
items.addElement(new Thruster(16 * 28, 3 * 32, room, Port.ROT_RIGHT, Color.white));
|
|
}
|
|
{ // Room 22, Flipflop intro
|
|
Room room = rooms.elementAt(22);
|
|
room.RoomArray = new int[][]{
|
|
{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, 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},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
|
|
};
|
|
room.AddTextBox("A flipflop is like a light switch. It 'flips' electricity from one output to the other.",
|
|
5 * 28, 2 * 32, 300);
|
|
room.AddTextBox("Take a flipflop from the Toolkit. Put the hot cursor on one input at a time to make the electricity 'flip' or 'flop'.",
|
|
5 * 28, 6 * 32, 300);
|
|
items.addElement(new FlipFlop(17 * 28 + 7, 32 + 16, room));
|
|
room.AddArrow(3 * 28, 0, Arrow.DIR_UP, 28, Color.white);
|
|
}
|
|
{ // Room 23, Flipflop workshop
|
|
Room room = rooms.elementAt(23);
|
|
room.RoomArray = new int[][]{
|
|
{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},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
|
|
};
|
|
room.AddTextBox("Go inside the robot and wire the orange OUTPUT of the flipflop to the thruster on the right. Sit on the eye to see what you did.",
|
|
5 * 28, 8 * 32, 420);
|
|
BlueRobot robot = new BlueRobot(9 * 28, 4 * 32, room);
|
|
items.addElement(robot);
|
|
FlipFlop ff = new FlipFlop(10 * 28, 5 * 32, robot.InternalRoom);
|
|
items.addElement(ff);
|
|
Wire wire = new Wire(ff.ports[0], robot.devices[7].ports[0]);
|
|
wire = new Wire(ff.ports[2], robot.devices[3].ports[0]);
|
|
wire = new Wire(robot.devices[5].ports[0], ff.ports[1]);
|
|
robot.thrusterPower = true;
|
|
}
|
|
{ // Room 24, Crossroads II
|
|
Room room = rooms.elementAt(24);
|
|
room.RoomArray = new int[][]{
|
|
{4, 0, 0, 0, 0, 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, 0},
|
|
{4, 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, 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, 0, 4},
|
|
{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, 0, 4},
|
|
{4, 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, 0},
|
|
{4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}
|
|
};
|
|
room.AddTextBox("Crossroads",
|
|
2 * 28, 6 * 32 + 8, 500);
|
|
room.AddTextBox("NOT-gate",
|
|
2 * 28, 32 + 16, 500);
|
|
room.AddTextBox("AND-gate",
|
|
15 * 28, 2 * 32 + 16, 500);
|
|
room.AddTextBox("XOR-gate",
|
|
15 * 28, 10 * 32, 500);
|
|
room.AddTextBox("OR-gate",
|
|
2 * 28, 10 * 32 + 16, 500);
|
|
room.AddArrow(3 * 28, 0, Arrow.DIR_UP, 28, Color.white);
|
|
room.AddArrow(559, 2 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
room.AddArrow(559, 9 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
room.AddArrow(3 * 28, 383, Arrow.DIR_DOWN, 28, Color.white);
|
|
room.AddArrow(0, 6 * 32, Arrow.DIR_LEFT, 28, Color.white);
|
|
}
|
|
{ // Room 25, NOT gate intro
|
|
Room room = rooms.elementAt(25);
|
|
room.RoomArray = new int[][]{
|
|
{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, 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},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
|
|
};
|
|
room.AddTextBox("A NOT-gate inverts electricity flow. It turns on when its INPUT is NOT on.",
|
|
5 * 28, 2 * 32, 300);
|
|
room.AddTextBox("Take a NOT-gate from the Toolkit and use the hot cursor to see how it works.",
|
|
5 * 28, 6 * 32, 400);
|
|
items.addElement(new NOTGate(17 * 28 + 10, 32 + 12, room));
|
|
room.AddArrow(3 * 28, 0, Arrow.DIR_UP, 28, Color.white);
|
|
}
|
|
{ // Room 26, NOT gate workshop
|
|
Room room = rooms.elementAt(26);
|
|
room.RoomArray = new int[][]{
|
|
{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},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
|
|
};
|
|
room.AddTextBox("Wire the NOT-gate output to the Antenna INPUT.",
|
|
5 * 28, 2 * 32, 400);
|
|
room.AddTextBox("The antenna beeps when the crystal is NOT touching the CONTACT sensor.",
|
|
5 * 28, 8 * 32, 400);
|
|
items.addElement(new Crystal(3 * 28, 7 * 32, room, 100000));
|
|
ContactSensor sensor = new ContactSensor(2 * 28, 6 * 32, room, new Crystal(0, 0, null, 0));
|
|
items.addElement(sensor);
|
|
NOTGate ng = new NOTGate(4 * 28, 4 * 32, room);
|
|
items.addElement(ng);
|
|
items.addElement(new Antenna(2 * 28, 2 * 32, room, Color.white));
|
|
Wire wire = new Wire(sensor.ports[0], ng.ports[0]);
|
|
}
|
|
{ // Room 27, OR gate intro
|
|
Room room = rooms.elementAt(27);
|
|
room.RoomArray = new int[][]{
|
|
{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, 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},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2}
|
|
};
|
|
room.AddTextBox("An OR-gate turns on when one OR the other INPUT is on, or both.",
|
|
5 * 28, 2 * 32, 300);
|
|
room.AddTextBox("Take an OR-gate from the Toolkit and use the hot cursor to see how it works.",
|
|
2 * 28, 8 * 32, 400);
|
|
items.addElement(new ORGate(17 * 28 + 10, 32 + 12, room));
|
|
room.AddArrow(17 * 28, 0, Arrow.DIR_DOWN, 28, Color.white);
|
|
}
|
|
{ // Room 28, OR workshop
|
|
Room room = rooms.elementAt(28);
|
|
room.RoomArray = new int[][]{
|
|
{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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
|
|
};
|
|
room.AddTextBox("Wire the OR-gate output to the Antenna INPUT.",
|
|
5 * 28, 2 * 32, 400);
|
|
room.AddTextBox("The antenna beeps when the key is above OR left of the sensor.",
|
|
5 * 28, 10 * 32, 400);
|
|
items.addElement(new Key(3 * 28, 7 * 32, room, Color.blue));
|
|
DirectionalSensor sensor = new DirectionalSensor(8 * 28, 6 * 32, room,
|
|
new Key(0, 0, null, Color.white));
|
|
items.addElement(sensor);
|
|
ORGate og = new ORGate(4 * 28, 4 * 32, room);
|
|
items.addElement(og);
|
|
items.addElement(new Antenna(2 * 28, 2 * 32, room, Color.white));
|
|
Wire wire = new Wire(sensor.ports[0], og.ports[1]);
|
|
wire = new Wire(sensor.ports[3], og.ports[0]);
|
|
}
|
|
{ // Room 29, Paths to AND & XOR
|
|
Room room = rooms.elementAt(29);
|
|
room.RoomArray = new int[][]{
|
|
{4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
|
{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, 4, 4, 4, 4, 4, 4, 4, 4},
|
|
{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
|
{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
|
|
{4, 4, 4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}
|
|
};
|
|
room.AddArrow(9 * 28, 0, Arrow.DIR_UP, 28, Color.white);
|
|
room.AddArrow(5 * 28, 0, Arrow.DIR_DOWN, 28, Color.white);
|
|
}
|
|
{ // Room 30, AND gate intro
|
|
Room room = rooms.elementAt(30);
|
|
room.RoomArray = new int[][]{
|
|
{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, 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},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2}
|
|
};
|
|
room.AddTextBox("An AND-gate turns on when its left AND right INPUTS are on.",
|
|
5 * 28, 2 * 32, 300);
|
|
room.AddTextBox("Take a AND-gate from the Toolkit and test it with the hot cursor.",
|
|
5 * 28, 6 * 32, 400);
|
|
items.addElement(new ANDGate(17 * 28 + 10, 32 + 12, room));
|
|
room.AddArrow(3 * 28, 0, Arrow.DIR_UP, 28, Color.white);
|
|
}
|
|
{ // Room 31, AND gate workshop
|
|
Room room = rooms.elementAt(31);
|
|
room.RoomArray = new int[][]{
|
|
{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},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
|
|
};
|
|
room.AddTextBox("Wire the AND-gate output to the Antenna INPUT.",
|
|
5 * 28, 2 * 32, 400);
|
|
room.AddTextBox("The antenna beeps when the key is left AND up from this DIRECTIONAL sensor.",
|
|
5 * 28, 9 * 32, 400);
|
|
items.addElement(new Key(3 * 28, 7 * 32, room, Color.blue));
|
|
DirectionalSensor sensor = new DirectionalSensor(5 * 28, 6 * 32, room,
|
|
new Key(0, 0, null, Color.white));
|
|
items.addElement(sensor);
|
|
ANDGate ag = new ANDGate(4 * 28, 4 * 32, room);
|
|
items.addElement(ag);
|
|
items.addElement(new Antenna(2 * 28, 2 * 32, room, Color.white));
|
|
Wire wire = new Wire(sensor.ports[0], ag.ports[1]);
|
|
wire = new Wire(sensor.ports[3], ag.ports[0]);
|
|
}
|
|
{ // Room 32, XOR gate intro
|
|
Room room = rooms.elementAt(32);
|
|
room.RoomArray = new int[][]{
|
|
{2, 2, 2, 0, 0, 0, 0, 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},
|
|
{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2}
|
|
};
|
|
room.AddTextBox("An EXCLUSIVE-OR- gate (XOR-gate) turns on when one OR the other INPUT is on, NOT both.",
|
|
7 * 28, 2 * 32, 250);
|
|
room.AddTextBox("Take an XOR-gate from the Toolkit and test it with the hot cursor.",
|
|
2 * 28, 9 * 32, 400);
|
|
items.addElement(new XORGate(17 * 28 + 10, 32 + 12, room));
|
|
room.AddArrow(17 * 28, 0, Arrow.DIR_DOWN, 28, Color.white);
|
|
}
|
|
{ // Room 33, XOR workshop
|
|
Room room = rooms.elementAt(33);
|
|
room.RoomArray = new int[][]{
|
|
{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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
|
|
};
|
|
room.AddTextBox("Wire the XOR-gate output to the Antenna INPUT.",
|
|
5 * 28, 2 * 32, 400);
|
|
room.AddTextBox("The antenna beeps when either the key or the crystal is in the room, but not both.",
|
|
5 * 28, 9 * 32, 400);
|
|
items.addElement(new Key(2 * 28, 9 * 32, room, Color.blue));
|
|
items.addElement(new Crystal(2 * 28, 7 * 32, room, 100000));
|
|
RoomSensor sensor1 = new RoomSensor(8 * 28, 6 * 32, room, new Key(0, 0, null, Color.white));
|
|
RoomSensor sensor2 = new RoomSensor(8 * 28, 7 * 32, room, new Crystal(0, 0, null, 0));
|
|
sensor1.rotate(1);
|
|
sensor1.rotate(1);
|
|
sensor2.rotate(1);
|
|
sensor2.rotate(1);
|
|
items.addElement(sensor1);
|
|
items.addElement(sensor2);
|
|
XORGate xg = new XORGate(4 * 28, 4 * 32, room);
|
|
items.addElement(xg);
|
|
items.addElement(new Antenna(2 * 28, 2 * 32, room, Color.white));
|
|
Wire wire = new Wire(sensor1.ports[0], xg.ports[1]);
|
|
wire = new Wire(sensor2.ports[0], xg.ports[0]);
|
|
}
|
|
{ // Room 34, Circuit Ideas I
|
|
Room room = rooms.elementAt(34);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 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},
|
|
{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, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3}
|
|
};
|
|
room.AddTextBox("Try these robot circuits in the robot below.",
|
|
2 * 28, 2 * 32, 500);
|
|
room.AddTextBox("LEFT WALL CRAWLER",
|
|
3 * 28, 4 * 32, 500);
|
|
room.AddTextBox("Rewire the NOT gate to the thruster on the right.",
|
|
4 * 28, 4 * 32 + 16, 400);
|
|
room.AddTextBox("PING-PONG",
|
|
3 * 28, 7 * 32, 500);
|
|
room.AddTextBox("Unwire the NOT-gate. Use a second flipflop wired the same way as the robot in the flipflop example above.",
|
|
4 * 28, 7 * 32 + 16, 400);
|
|
room.AddTextBox("MORE CIRCUIT IDEAS",
|
|
0, 9 * 32, 100);
|
|
room.AddTextBox("ROBOT",
|
|
9 * 28, 11 * 32, 400);
|
|
room.AddArrow(10 * 28, 383, Arrow.DIR_DOWN, 28, Color.white);
|
|
}
|
|
{ // Room 35, Circuit Ideas II
|
|
Room room = rooms.elementAt(35);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}
|
|
};
|
|
room.AddTextBox("KEY-PHOBE",
|
|
2 * 28, 2 * 32, 450);
|
|
room.AddTextBox("Wire a key DIRECTIONAL sensor's outputs to the thrusters they point toward.",
|
|
3 * 28, 2 * 32 + 16, 450);
|
|
room.AddTextBox("NON-KEY-GRABBER",
|
|
2 * 28, 5 * 32, 450);
|
|
room.AddTextBox("Wire a key CONTACT sensor to a NOT-gate. Wire the NOT-gate to the grabber input.",
|
|
3 * 28, 5 * 32 + 16, 450);
|
|
room.AddTextBox("CRYSTAL-SIGNALER",
|
|
2 * 28, 8 * 32, 450);
|
|
room.AddTextBox("Wire the crystal IN-SAME-ROOM sensor to the antenna.",
|
|
3 * 28, 8 * 32 + 16, 450);
|
|
}
|
|
{ // Room 36, Robot Play area 1
|
|
Room room = rooms.elementAt(36);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 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},
|
|
{0, 0, 5, 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, 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, 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, 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, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3}
|
|
};
|
|
WhiteRobot robot = new WhiteRobot(0, 6 * 32, room);
|
|
items.addElement(robot);
|
|
NOTGate ng = new NOTGate(3 * 28, 5 * 32, robot.InternalRoom);
|
|
items.addElement(ng);
|
|
ng.rotate(1);
|
|
ng.rotate(1);
|
|
FlipFlop ff = new FlipFlop(10 * 28, 4 * 32, robot.InternalRoom);
|
|
items.addElement(ff);
|
|
Wire wire = new Wire(robot.devices[3].ports[0], ng.ports[1]);
|
|
wire = new Wire(robot.devices[6].ports[0], ff.ports[0]);
|
|
wire = new Wire(ff.ports[1], robot.devices[4].ports[0]);
|
|
wire = new Wire(ff.ports[2], robot.devices[2].ports[0]);
|
|
wire = new Wire(ff.ports[3], robot.devices[0].ports[0]);
|
|
ContactSensor sensor = new ContactSensor(15 * 28, 6 * 32, robot.InternalRoom,
|
|
new Button(0, 0, null, Color.white));
|
|
items.addElement(sensor);
|
|
robot.thrusterPower = true;
|
|
items.addElement(new Key(2 * 28, 9 * 32, room, Color.blue));
|
|
items.addElement(new Crystal(4 * 28, 9 * 32, room, 100000));
|
|
}
|
|
{ // Room 37, Robot Play area 2
|
|
Room room = rooms.elementAt(37);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
|
|
{3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0},
|
|
{3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0},
|
|
{3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0},
|
|
{3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0},
|
|
{3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0},
|
|
{3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0},
|
|
{3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3},
|
|
{3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}
|
|
};
|
|
items.addElement(new Button(16 * 28, 32 + 16, room, new Color(255, 128, 0)));
|
|
}
|
|
{ // Room 38, Robot Play area 3
|
|
Room room = rooms.elementAt(38);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
|
|
{3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3},
|
|
{3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 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, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}
|
|
};
|
|
items.addElement(new Button(12 * 28, 5 * 32, room, new Color(0, 0, 255)));
|
|
}
|
|
{ // Room 39, End
|
|
Room room = rooms.elementAt(39);
|
|
room.RoomArray = new int[][]{
|
|
{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, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 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.AddTextBox("Now you know how to use the Solderpen, Remote Control, and Toolkit.",
|
|
2 * 28, 2 * 32, 500);
|
|
room.AddTextBox("You also know how nodes, flipflops, and logic gates work.",
|
|
2 * 28, 3 * 32 + 16, 500);
|
|
room.AddTextBox("You can use these to design and build robots in ROBOTROPOLIS and the INNOVATION LAB.",
|
|
2 * 28, 6 * 32, 500);
|
|
room.AddTextBox("Go to CHIP DESIGN.",
|
|
6 * 28, 9 * 32, 500);
|
|
room.AddTextBox("Return to MAIN MENU.",
|
|
6 * 28, 11 * 32, 500);
|
|
}
|
|
{ // Room 40, Wire Flipping
|
|
Room room = rooms.elementAt(40);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 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.AddTextBox("Wires are normally drawn as a horizontal line and a vertical line attached to the 1st and 2nd ports. But these can be 'flipped' without having to remove the wire.",
|
|
2 * 28, 2 * 32, 500);
|
|
room.AddTextBox("Become the Soldering Pen and move the tip over any wired port until the tip turns green and then press F.",
|
|
2 * 28, 6 * 32, 500);
|
|
room.AddArrow(559, 9 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
NOTGate ng1 = new NOTGate(6 * 28, 10 * 32, room);
|
|
items.addElement(ng1);
|
|
ng1.rotate(1);
|
|
NOTGate ng2 = new NOTGate(12 * 28, 8 * 32, room);
|
|
items.addElement(ng2);
|
|
Wire wire = new Wire(ng1.ports[1], ng2.ports[0]);
|
|
}
|
|
{ // Room 41, Gate Flipping
|
|
Room room = rooms.elementAt(41);
|
|
room.RoomArray = new int[][]{
|
|
{3, 3, 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},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 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.AddTextBox("AND, OR, XOR, and FlipFlops can also be flipped so their inputs (and outputs) can switch connections without having to rewire them.",
|
|
2 * 28, 2 * 32, 500);
|
|
room.AddTextBox("Become the cursor and pick up a gate, and then press F.",
|
|
2 * 28, 5 * 32, 500);
|
|
room.AddArrow(559, 9 * 32 + 16, Arrow.DIR_RIGHT, 28, Color.white);
|
|
NOTGate ng1 = new NOTGate(4 * 28, 10 * 32, room);
|
|
ng1.rotate(1);
|
|
items.addElement(ng1);
|
|
NOTGate ng2 = new NOTGate(8 * 28, 10 * 32, room);
|
|
ng2.rotate(-1);
|
|
items.addElement(ng2);
|
|
NOTGate ng3 = new NOTGate(10 * 28, 10 * 32, room);
|
|
ng3.rotate(1);
|
|
items.addElement(ng3);
|
|
NOTGate ng4 = new NOTGate(14 * 28, 10 * 32, room);
|
|
ng4.rotate(-1);
|
|
items.addElement(ng4);
|
|
ANDGate ag = new ANDGate(6 * 28, 8 * 32, room);
|
|
ag.rotate(1);
|
|
items.addElement(ag);
|
|
XORGate xg = new XORGate(12 * 28, 8 * 32, room);
|
|
xg.rotate(-1);
|
|
items.addElement(xg);
|
|
FlipFlop ff = new FlipFlop(9 * 28, 7 * 32, room);
|
|
items.addElement(ff);
|
|
ORGate og = new ORGate(12 * 28, 6 * 32, room);
|
|
og.rotate(1);
|
|
items.addElement(og);
|
|
new Wire(ag.ports[0], ng1.ports[1]);
|
|
new Wire(ng2.ports[1], ag.ports[1]);
|
|
new Wire(ng3.ports[1], xg.ports[0]);
|
|
new Wire(xg.ports[1], ng4.ports[1]);
|
|
new Wire(ag.ports[2], ff.ports[0]);
|
|
new Wire(xg.ports[2], ff.ports[1]);
|
|
new Wire(og.ports[0], ff.ports[2]);
|
|
new Wire(og.ports[1], ff.ports[3]);
|
|
}
|
|
|
|
|
|
int[] list1 = {1, 2, 3, 4, 5, 6};
|
|
LinkRoomsHorizontally(list1);
|
|
int[] list2 = {11, 10, 9, 8, 7};
|
|
LinkRoomsHorizontally(list2);
|
|
int[] list3 = {12, 13, 14, 15, 16, 40, 41, 17, 18, 24, 29};
|
|
LinkRoomsHorizontally(list3);
|
|
int[] list4 = {23, 22, 19, 18, 34, 36, 39, 1};
|
|
LinkRoomsVertically(list4);
|
|
int[] list5 = {26, 25, 24, 27, 28};
|
|
LinkRoomsVertically(list5);
|
|
int[] list6 = {31, 30, 29, 32, 33};
|
|
LinkRoomsVertically(list6);
|
|
LinkRoomsLeftRight(21, 20);
|
|
LinkRoomsLeftRight(20, 19);
|
|
LinkRoomsLeftRight(35, 34);
|
|
LinkRoomsLeftRight(37, 36);
|
|
LinkRoomsUpDown(4, 10);
|
|
LinkRoomsUpDown(6, 7);
|
|
LinkRoomsUpDown(11, 12);
|
|
LinkRoomsUpDown(37, 38);
|
|
|
|
gameCursor = new LabCursor(16 * 28 + 14, 5 * 32 + 16, rooms.elementAt(1));
|
|
helpCam = new HelpCam(rooms.elementAt(0));
|
|
solderingPen = new SolderingPen();
|
|
remote = new Remote();
|
|
items.addElement(gameCursor);
|
|
items.addElement(helpCam);
|
|
items.addElement(solderingPen);
|
|
items.addElement(remote);
|
|
player = gameCursor;
|
|
currentViewer = player;
|
|
}
|
|
|
|
}
|