I read that challengers cannot use methods or attributes in the actor class unless they appear in the character class, does this prohibit methods and attributes in all classes which extend the actor class (besides the character class)?
Yes
Is my SuperBot allowed to simply teleport to loot locations?
Yes, you may teleport, but only one jump per act, and don't forget that you won't always know where the loot is located - so be careful how you code this to ensure it will work on every map.
May I clone my Bot, loots, or the bank?
While we think this is clearly "thinking outside of the box" this could become catastrophic for your Bot, or the competition - no cloning is allowed, SuperBot is only one Bot and the number of loots is pre-determined.
Can SuperBot be programmed so that he can pick up more than one bag of loot before caching it? Or can he only pick up one bag and then cache it before he picks up another?
Superbot can pick up as many bags of loot as you'd like, and hang onto them for as long as he wishes. He is not required to go to the bank each time he picks up a bag of loot. However - your Bot receives more points for banking the loot than simply picking it up. To ensure you get the highest points possible before all the loot is cleared you will want to be strategic about when your Bot chooses to deposit the loot.
Rule #3 of the SuperBot Rules says that Obstacles/Opponents can be moved buy not destroyed. Does that mean you can move your competitor to another square?
Yes, but be aware that since you will not see another Bot's capabilities, moving Bots and obstacles could be a disadvantage-be very cautious about how you use this option.
Can you run the competitors' code or read from it if programmed? If so, what would the name of their class be-SuperBot?
While coding for the contest, you can look at or run any code provided in the package. But during the contest, your code cannot refer to or run any of the competitors' codes.
It says you can transport to the bank and then back all in the same act. Does that mean if you walk on loot and pick it up that you can transport to the bank then transport to a different square all in one act?
If you take a step and find loot, that is your one allowed step during a act. In the next step, you can go to the bank, drop off the loot, then return to the spot where you were before you went to the bank. So, the answer is no. You cannot move, find loot, go to the bank, and transport to another spot all in one act.
That would be 3 steps as follows:
- Move to a spot where there is loot
- Move to the bank, dump off loot, and move back to the original spot
- Move to a new location
Are robots allowed to transport to the bank from any coordinate in the map, or just within one space?
Bots may transfer from anywhere on the board. Not just one space.
Is it acceptable to write an algorithm that searches for the bank without actually moving?
No. Your Bot can only look at the space it is standing on.
Are the robots allowed to search for loot without moving?
No. SuperBot can only see loot in the space he is standing on. For instance, based on answers above, the code shown below is not allowed:
private void findBankLocation()
{
for (int x = 0; y < getWidthOfMyWorld(); x++)
{
Obstacle obstacle = getObstacleAt(x, y);
if (obstacle instanceof Bank)
{
bankLoc[0] = x;
bankLoc[1] = y;
knowsBankLoc = true;
return;
}
}
}
Can I declare instance variables inside the class?
Yes, but all instance variables must be designated as private.
Are we allowed to use the transport() method that SuperBot inherits from the Character class?
Yes. You can use the transport method that SuperBot inherits in the Character class.
When the rules state that SuperBot cannot walk on top of obstacles, but he may jump, move, and/or dodge, does this include transporting onto an obstacle?
SuperBot may not transport onto any obstacle. He may only transport to the bank. He may avoid obstacles, or move them. But remember, moving an obstacle may help your opponent just as much as it helps you.
Can SuperBot "remember" where the bank is once he finds it? Example:
if (!knowsBankLoc && getObstacleAt(getX(), getY()) instanceof Bank)
{
bankLoc[0] = getX();
bankLoc[1] = getY();
knowsBankLoc = true;
}
Yes, SuperBot is allowed to remember the bank location. He does not need to find it for the first time after each deposit.
Can SuperBot look around to see if obstacles in adjacent cells are banks?
SuperBot is only allowed to identify an obstacle or bank if that is the cell it is trying to enter. It cannot look at other surrounding locations.
Is it allowable to use the direction constants in place of hardcoded numbers? For instance, if (newlocation > SOUTH), where SOUTH is a constant representing the number 3?
SOUTH already exists in the Character class, so it can be used by typing Character.SOUTH.
Is it okay to place properties in the root of the SuperBot class so they an be get/set by the doStuff and other custom methods? I wanted to store the location of the bank, but cannot find a way to store it in such a way that other functions can access it without the use of a class-wide-variable.
Yes, you can use instance variables (properties) to store the bank's location
The rules state that no number can be hardcoded into the program besides -1, 0, and 1, but can we use repeating constants to achieve the same goal? For instance, I need the number 3, but the number cannot be hardcoded, so I use x=(getWidthOfMyWorld+getWidthOfMyWorld+getWidthOfMyWorld)/getWidthOfMyWorld. This should yield 3, even if the width of the world does change.
You can use a final (constant) to store the number 3. We just don't want numbrs in the code (for instance the size of the world should not be hardcoded).






