/*
* File: StoneMasonKarel.java
* --------------------------
* The StoneMasonKarel subclass as it appears here does nothing.
* When you finish writing it, it should solve the "repair the quad"
* problem from Assignment 1. In addition to editing the program,
* you should be sure to edit this comment so that it no longer
* indicates that the program does nothing.
*/
package contest2010;
import stanford.karel.*;
public class CourtneyKarelCompetition extends SuperKarel {
// You fill in this part
public void run () {
letterO();
turnLeft();
move();
letterI();
move();
letterO();
turnRight();
turnRight();
turnLeft();
clearFirstRow();
turnRight();
move();
turnRight();
repairSecondRow();
for (int i=0;i<3;i++){
turnLeft();
}
turnRight();
for(int i=0;i<4;i++){
move();
}
letterS();
turnAround();
for (int i=0;i<3;i++){
move();
}
turnLeft();
move();
turnRight();
turnAround();
letterZVertical();
turnRight();
while(frontIsClear()){
move();
}
turnRight();
move();
turnRight();
letterJOpposite();
turnRight();
move();
turnRight();
letterT();
letterSVertical();
turnLeft();
for(int i=0;i<4;i++){
move();
}
turnLeft();
for(int i=0;i<6;i++){
move();
}
turnRight();
turnRight();
move();
turnLeft();
move();
letterLSitting();
turnRight();
move();
letterI();
secondClear();
repairFromSecondClear();
turnLeft();
move();
turnLeft();
move();
move();
turnRight();
letterLSitting();
turnLeft();
move();
turnLeft();
letterIStanding();
turnRight();
move();
move();
turnRight();
letterSSecondVertical();
turnRight();
move();
turnAround();
turnRight();
letterTDown();
turnLeft();
move();
turnLeft();
turnRight();
endingBlock();
failSign();
}
private void failSign(){
turnAround();
turnRight();
for(int i=0;i<2;i++){
paintCorner(BLACK);
move();
}
paintCorner(BLACK);
turnLeft();
for(int i=0;i<3;i++){
paintCorner(BLACK);
move();
}
paintCorner(BLACK);
turnAround();
move();
turnRight();
for(int i=0;i<2;i++){
move();
paintCorner(BLACK);
}
move();
turnRight();
move();
turnLeft();
move();
paintCorner(BLACK);
turnLeft();
for(int i=0;i<2;i++){
move();
paintCorner(BLACK);
}
move();
paintCorner(BLACK);
turnRight();
for(int i=0;i<2;i++){
move();
paintCorner(BLACK);
}
turnRight();
for(int i=0;i<3;i++){
move();
paintCorner(BLACK);
}
turnAround();
move();
turnLeft();
move();
paintCorner(BLACK);
for(int i=0;i<2;i++){
move();
move();
turnLeft();
}
turnAround();
move();
turnLeft();
for(int i=0;i<3;i++){
paintCorner(BLACK);
move();
}
paintCorner(BLACK);
turnLeft();
for(int i=0;i<3;i++){
move();
}
turnLeft();
for(int i=0;i<3;i++){
paintCorner(BLACK);
move();
}
paintCorner(BLACK);
turnAround();
for(int i=0;i<3;i++){
move();
}
turnLeft();
for(int i=0;i<2;i++){
move();
paintCorner(BLACK);
}
}
private void endingBlock(){
paintCorner(CYAN);
move();
paintCorner(CYAN);
}
private void letterTDown(){
paintCorner(MAGENTA);
move();
turnLeft();
move();
paintCorner(MAGENTA);
turnAround();
move();
paintCorner(MAGENTA);
move();
paintCorner(MAGENTA);
}
private void letterSSecondVertical(){
paintCorner(GREEN);
move();
paintCorner(GREEN);
turnLeft();
move();
paintCorner(GREEN);
turnRight();
move();
paintCorner(GREEN);
}
private void letterIStanding(){
for (int i=0;i<3;i++){
paintCorner(CYAN);
move();
}
paintCorner(CYAN);
}
private void secondClear(){
paintCorner(null);
for (int i=0;i<3;i++){
move();
paintCorner(null);
}
turnAround();
for(int i=0;i<3;i++){
move();
}
paintCorner(null);
for(int i=0;i<4;i++){
move();
paintCorner(null);
}
}
private void repairFromSecondClear(){
turnRight();
move();
turnRight();
for (int i=0;i<5;i++){
move();
}
for(int i=0;i<2;i++){
move();
paintCorner(null);
}
for(int i=0;i<2;i++){
turnLeft();
move();
paintCorner(null);
}
turnRight();
move();
paintCorner(null);
turnRight();
turnRight();
for(int i=0;i<3;i++){
move();
}
turnLeft();
paintCorner(MAGENTA);
move();
paintCorner(GREEN);
turnLeft();
move();
paintCorner(GREEN);
turnLeft();
move();
paintCorner(GREEN);
turnRight();
move();
paintCorner(GREEN);
}
private void repairSecondRow(){
for (int i=0;i<2;i++){
paintCorner (YELLOW);
move();
}
for (int i=0;i<4;i++){
move();
}
paintCorner (YELLOW);
move();
paintCorner (YELLOW);
}
private void clearFirstRow(){
for (int i=0;i<7;i++){
paintCorner (null);
move();
}
paintCorner (null);
turnAround();
turnLeft();
move();
turnRight();
while(frontIsClear()){
paintCorner (null);
move();
}
paintCorner (null);
}
private void letterO(){
paintCorner(YELLOW);
turnLeft();
move();
for (int i=0;i<2;i++){
paintCorner(YELLOW);
turnRight();
move();
}
paintCorner(YELLOW);
}
private void letterI(){
for (int i=0;i<3;i++){
paintCorner(CYAN);
move();
}
paintCorner(CYAN);
}
private void letterJ(){
for (int i=0;i<2;i++){
paintCorner(BLUE);
move();
}
paintCorner(BLUE);
turnLeft();
move();
paintCorner(BLUE);
}
private void letterS(){
paintCorner(GREEN);
move();
paintCorner(GREEN);
turnLeft();
move();
paintCorner(GREEN);
turnRight();
move();
paintCorner(GREEN);
}
private void letterT(){
paintCorner(MAGENTA);
move();
paintCorner(MAGENTA);
turnLeft();
move();
paintCorner(MAGENTA);
turnRight();
move();
turnRight();
move();
paintCorner(MAGENTA);
turnLeft();
}
private void letterZ(){
turnLeft();
move();
paintCorner(RED);
turnRight();
move();
paintCorner(RED);
turnRight();
move();
paintCorner(RED);
turnLeft();
move();
paintCorner(RED);
}
private void letterL(){
paintCorner(ORANGE);
turnLeft();
move();
paintCorner(ORANGE);
turnRight();
move();
turnRight();
move();
turnLeft();
paintCorner(ORANGE);
move();
paintCorner(ORANGE);
}
private void letterZVertical(){
paintCorner(RED);
turnLeft();
move();
paintCorner(RED);
turnRight();
move();
paintCorner(RED);
turnLeft();
move();
paintCorner(RED);
}
private void letterJOpposite (){
paintCorner(BLUE);
turnRight();
move();
paintCorner(BLUE);
turnLeft();
move();
paintCorner(BLUE);
move();
paintCorner(BLUE);
}
private void letterSVertical(){
turnLeft();
move();
paintCorner(GREEN);
move();
paintCorner(GREEN);
turnLeft();
move();
paintCorner(GREEN);
turnRight();
move();
paintCorner(GREEN);
}
private void letterLSitting(){
paintCorner(ORANGE);
move();
paintCorner(ORANGE);
turnRight();
move();
paintCorner(ORANGE);
move();
paintCorner(ORANGE);
}
}