package contest2010;
import stanford.karel.SuperKarel;
//Alex Gs Karel Contest
public class AlexContest extends SuperKarel {
// Karel draws out the phrase "GO JAVA" and then draws a smiling face
public void run(){
makeGO();
makeBackwardsJAVA();
makeSmiley();
}
private void makeBackwardsJAVA() {
makeOrangeA();
makeV();
makeGreenA();
makeJ();
}
private void makeGO() {
makeG();
makeO();
}
private void makeG () {
move();
turnLeft();
for (int i=0; i< 20; i++) {
move();
}
while (frontIsClear()){
paintCorner (BLACK);
if (frontIsClear()) {
move();
}
}
turnRight();
paintCorner (BLACK);
for (int i=0; i<11; i++) {
paintCorner (BLACK);
if (frontIsClear()) {
move();
}
}
turnRight();
paintCorner (BLACK);
for (int i=0; i< 3; i++) {
move();
paintCorner (BLACK);
}
move3Right();
move3Black();
paintCorner(BLACK);
turnAround();
move3Right();
for (int i=0; i<3; i++) {
paintCorner(BLACK);
move();
}
turnRight();
for (int i=0; i< 11;i++){
paintCorner(BLACK);
move();
}
}
private void makeO() {
turnAround();
for (int i=0; i< 16; i++)
move();
for (int i=0; i< 11; i++) {
yellowSquare();
}
leftYellow9();
turnLeft();
for (int i=0; i< 11; i++) {
yellowSquare();
}
leftYellow9();
}
private void move3Right() {
move3();
turnRight();
}
private void move3Black() {
for (int i =0; i<3; i++) {
move();
paintCorner(BLACK);
}
}
private void makeOrangeA() {
diagonalMove();
turnAround();
for (int i=0; i<2;i++) {
orangeSquare();
}
paintCorner(ORANGE);
turnLeft();
for (int i=0; i<6; i++) {
orangeSquare();
}
turnLeft();
for (int i=0; i<2;i++) {
orangeSquare();
}
paintCorner(ORANGE);
turnAround();
for (int i=0; i<3; i++) {
move();
}
turnRight();
move();
orangeStep();
orangeLeft();
for (int i=0; i<2; i++) {
orangeSquare();
orangeRight();
}
orangeSquare();
orangeStep();
paintCorner(ORANGE);
}
private void makeV() {
turnAround();
for (int i=0; i<6;i++) {
move();
}
turnLeft();
for (int i=0; i< 3; i++) {
move();
}
paintCorner(RED);
stepDownLeft();
for (int i=0; i<3; i++) {
makeDownV();
}
paintCorner(RED);
turnAround();
stepDownLeft();
turnRight();
redStairs();
redTurn();
move();
redStep();
turnRight();
redStairs();
redSquare();
turnLeft();
for (int i=0; i< 4; i++) {
move();
}
turnAround();
}
private void makeGreenA() {
for (int i=0; i<2;i++) {
greenSquare();
}
paintCorner(GREEN);
turnLeft();
for (int i=0; i<6; i++) {
greenSquare();
}
turnLeft();
for (int i=0; i<2;i++) {
greenSquare();
}
paintCorner(GREEN);
turnAround();
for (int i=0; i<3; i++) {
move();
}
turnRight();
move();
greenStep();
greenLeftSquare();
for (int i=0; i<2; i++) {
greenRightSquare();
}
greenStep();
paintCorner(GREEN);
}
private void makeJ() {
turnLeft();
moveToWall();
turnRight();
for (int i=0; i< 5;i++) {
move();
}
paintCorner(BLUE);
turnAround();
move();
jSquare ();
rightJStep();
bluePivotTurn();
stepDownLeft();
paintCorner(BLUE);
goUp();
turnLeft();
move();
jSquare ();
jLine();
turnRight();
jDescend();
move();
paintCorner(BLUE);
stepRight();
bluePivotRight();
stepDownLeft();
turnRight();
paintCorner(BLUE);
jDescend();
stepDownLeft();
for (int i=0; i<2; i++){
jSquare();
}
paintCorner(BLUE);
for (int i=0; i<6; i++) {
jDescend();
}
move();
paintCorner(BLUE);
for (int i=0; i<4; i++) {
jDescend();
}
turnLeft();
move();
for (int i=0; i<3; i++) {
jSquare();
}
paintCorner(BLUE);
stepDownLeft();
for (int i=0; i<2; i++) {
blueCorner();
}
bluePivotLeft();
move();
paintCorner(BLUE);
goRight();
paintCorner(BLUE);
stepDownLeft();
for (int i=0; i<4; i++) {
jSquare();
}
turnRight();
stepDownLeft();
for (int i =0; i<7; i++) {
jSquare();
}
goDown();
turnRight();
jSquare();
turnLeft();
for (int i=0; i<3;i++){
jSquare();
}
goDown();
bluePivotRight();
stepDownLeft();
for (int i=0; i<5;i++) {
jSquare();
}
goDown();
paintCorner(BLUE);
goRight();
paintCorner(BLUE);
}
private void makeSmiley() {
turnAround();
for (int i=0; i< 17; i++){
move();
}
turnRight();
for (int i=0; i<16; i++) {
move();
}
for (int i=0; i<2; i++) {
blackMove3();
}
turnRight();
for (int i=0; i<2;i++) {
move();
}
blackSquare();
blackRight();
smileySmile();
for (int i=0; i<4; i++) {
blackSquare();
}
goUp();
smileySmile();
blackSquare();
paintCorner(BLACK);
}
private void leftYellow9() {
turnLeft();
for (int i=0; i< 9; i++) {
yellowSquare();
}
}
private void stepRight() {
goUp();
goDown();
}
private void blackMove3() {
paintCorner(BLACK);
for (int i=0; i<3; i++) {
move();
}
}
private void greenLeftSquare(){
greenLeft();
greenSquare();
}
private void greenRightSquare(){
greenRight();
greenSquare();
}
private void goUp(){
turnRight();
move();
}
private void goDown() {
turnLeft();
move();
}
private void blackRight() {
paintCorner(BLACK);
goRight();
}
private void makeDownV() {
paintCorner(RED);
move();
paintCorner(RED);
turnRight();
stepDownLeft();
}
private void redStep() {
paintCorner(RED);
stepDownLeft();
}
private void redStairs() {
redSquare();
redStep();
}
private void redTurn() {
paintCorner(RED);
turnRight();
}
private void stepDownLeft(){
move();
turnLeft();
move();
}
private void blackSquare() {
paintCorner(BLACK);
move();
}
private void blueCorner() {
paintCorner(BLUE);
turnLeft();
goRight();
}
private void bluePivotLeft() {
paintCorner(BLUE);
turnLeft();
}
private void bluePivotRight(){
paintCorner(BLUE);
turnRight();
}
private void bluePivotTurn(){
bluePivotLeft();
bluePivotRight();
}
private void goRight() {
move();
turnRight();
move();
}
private void jLine() {
paintCorner(BLUE);
stepDownLeft();
paintCorner(BLUE);
}
private void jSquare (){
paintCorner(BLUE);
move();
}
private void jStep(){
jSquare ();
jLine();
}
private void jDescend() {
stepDownLeft();
paintCorner(BLUE);
turnRight();
}
private void rightJStep() {
jStep();
goRight();
jStep();
goRight();
}
private void orangeStep() {
orangeLeft();
orangeRight();
}
private void orangeLeft(){
paintCorner(ORANGE);
turnLeft();
move();
}
private void orangeRight(){
paintCorner(ORANGE);
turnRight();
move();
}
private void orangeSquare(){
paintCorner(ORANGE);
move();
}
private void greenStep(){
greenLeft();
greenRight();
}
private void greenLeft() {
paintCorner(GREEN);
turnLeft();
move();
}
private void greenRight(){
paintCorner(GREEN);
turnRight();
move();
}
private void greenSquare(){
paintCorner(GREEN);
move();
}
private void redSquare() {
paintCorner(RED);
move();
}
private void yellowSquare(){
paintCorner(YELLOW);
move();
}
private void smileySmile () {
paintCorner(BLACK);
stepDownLeft();
blackRight();
}
private void move3() {
for (int i=0; i<3; i++) {
move();
}
}
private void diagonalMove(){
turnLeft();
moveToWall();
turnRight();
moveToWall();
}
private void moveToWall() {
while (frontIsClear()) {
move();
}
}
}