/*
* File: KarelContest.java
* ----------------------------
* When you finish writing it, the CheckerboardKarel class should draw
* a checkerboard using beepers, as described in Assignment 1. You
* should make sure that your program works for all of the sample
* worlds supplied in the starter folder.
*/
import stanford.karel.*;
/*
* Name: Eric Lifland
* Section Leader:
*/
public class Eric extends SuperKarel {
public void run() {
moveToStart();
epgy();
moveToNextRow();
stanford();
}
private void epgy(){
e();
p();
g();
y();
}
private void stanford(){
s();
t();
a();
n();
moveToLastRow();
f();
o();
r();
d();
}
private void moveToStart(){
turnLeft();
moveTen();
moveTen();
moveTen();
moveFive();
moveThree();
turnRight();
}
private void moveToNextRow(){
turnAround();
moveToWall();
turnLeft();
moveTen();
moveFive();
turnLeft();
}
private void moveToLastRow(){
turnAround();
moveToWall();
turnLeft();
moveTwo();
moveTen();
turnLeft();
}
private void paintColor(){
if(random(0.75)){
paintCorner(RED);
}
else{
paintCorner(BLACK);
}
}
private void moveToWall(){
while(frontIsClear()){
move();
}
}
//MOVES: beeper is on some because originally they placed beepers instead of coloring.
private void moveFourBeeper(){
for(int i = 0; i < 4; i++){
move();
paintColor();
}
}
private void moveFiveBeeper(){
for(int i = 0; i < 5; i++){
move();
paintColor();
}
}
private void moveFive(){
for(int i = 0; i < 5; i++){
move();
}
}
private void moveTen(){
for(int i = 0; i < 10; i++){
move();
}
}
private void moveTenBeeper(){
for(int i = 0; i < 10; i++){
move();
paintColor();
}
}
private void moveFour(){
for(int i = 0; i < 4; i++){
move();
}
}
private void moveEight(){
for(int i = 0; i < 8; i++){
move();
}
}
private void moveNine(){
for(int i = 0; i < 9; i++){
move();
}
}
private void moveTwoBeeper(){
for(int i = 0; i < 2; i++){
move();
paintColor();
}
}
private void moveTwo(){
for(int i = 0; i < 2; i++){
move();
}
}
private void moveThree(){
for(int i = 0; i < 3; i++){
move();
}
}
private void moveThreeBeeper(){
for(int i = 0; i < 3; i++){
move();
paintColor();
}
}
private void moveSixBeeper(){
for(int i = 0; i < 6; i++){
move();
paintColor();
}
}
private void moveSix(){
for(int i = 0; i < 6; i++){
move();
}
}
private void moveSevenBeeper(){
for(int i = 0; i < 7; i++){
move();
paintColor();
}
}
private void moveOne(){
for(int i = 0; i < 1; i++){
move();
}
}
private void moveOneBeeper(){
for(int i = 0; i < 1; i++){
move();
paintColor();
}
}
//Diagonal - all diagonals are beepers
private void oneDiagonalUpLeft(){
//starts at bottom facing up.
moveOne();
turnLeft();
moveOneBeeper();
turnRight();
}
private void oneDiagonalUpRight(){
//starts at bottom facing up.
moveOne();
turnRight();
moveOneBeeper();
turnLeft();
}
private void oneDiagonalDownLeft(){
//starts at top facing down
moveOne();
turnRight();
moveOneBeeper();
turnLeft();
}
private void oneDiagonalDownRight(){
//starts at top facing down
moveOne();
turnLeft();
moveOneBeeper();
turnRight();
}
private void twoDiagonalUpLeft(){
oneDiagonalUpLeft();
oneDiagonalUpLeft();
}
private void twoDiagonalUpRight(){
oneDiagonalUpRight();
oneDiagonalUpRight();
}
private void twoDiagonalDownLeft(){
oneDiagonalDownLeft();
oneDiagonalDownLeft();
}
private void twoDiagonalDownRight(){
oneDiagonalDownRight();
oneDiagonalDownRight();
}
private void fiveDiagonalDownRight(){
oneDiagonalDownRight();
oneDiagonalDownRight();
oneDiagonalDownRight();
oneDiagonalDownRight();
oneDiagonalDownRight();
}
//LETTERS:
private void e(){
paintColor();
moveSixBeeper();
turnAround();
moveSix();
turnRight();
moveFiveBeeper();
turnRight();
moveFiveBeeper();
turnAround();
moveFive();
turnRight();
moveFiveBeeper();
turnRight();
moveSixBeeper();
turnAround();
moveSix();
turnLeft();
moveTen();
turnLeft();
moveNine();
}
private void p(){
paintColor();
turnLeft();
moveTenBeeper();
turnRight();
moveFiveBeeper();
turnRight();
oneDiagonalDownRight();
moveThreeBeeper();
oneDiagonalDownLeft();
turnRight();
moveFiveBeeper();
turnLeft();
moveFive();
turnLeft();
moveNine();
}
private void g(){
paintColor();
moveSixBeeper();
turnLeft();
moveFiveBeeper();
turnLeft();
moveTwoBeeper();
turnAround();
moveTwo();
turnRight();
moveFive();
turnRight();
moveSix();
turnRight();
moveTenBeeper();
turnRight();
moveSixBeeper();
turnRight();
moveTen();
turnLeft();
moveThree();
}
private void y(){
moveFour();
turnLeft();
paintColor();
moveFiveBeeper();
twoDiagonalUpLeft();
oneDiagonalUpLeft();
moveTwoBeeper();
turnRight();
moveSix();
turnRight();
paintColor();
moveTwoBeeper();
twoDiagonalDownLeft();
oneDiagonalDownLeft();
moveFive();
turnLeft();
moveFive();
}
private void s(){
turnLeft();
moveOne();
paintColor();
turnAround();
oneDiagonalDownRight();
turnLeft();
moveThreeBeeper();
turnLeft();
twoDiagonalUpRight();
moveTwoBeeper();
twoDiagonalUpLeft();
turnLeft();
moveThreeBeeper();
turnRight();
oneDiagonalUpLeft();
moveTwoBeeper();
oneDiagonalUpRight();
turnRight();
moveFourBeeper();
turnRight();
oneDiagonalDownRight();
moveNine();
turnLeft();
moveThree();
}
private void t(){
moveThree();
turnLeft();
paintColor();
moveTenBeeper();
turnLeft();
moveThreeBeeper();
turnAround();
moveThree();
moveThreeBeeper();
turnRight();
moveTen();
turnLeft();
moveThree();
}
private void a(){
paintColor();
turnLeft();
moveSevenBeeper();
oneDiagonalUpRight();
twoDiagonalUpRight();
turnAround();
oneDiagonalDownRight();
twoDiagonalDownRight();
turnRight();
moveSixBeeper();
turnAround();
moveSix();
turnRight();
moveSevenBeeper();
turnLeft();
moveThree();
}
private void n(){
paintColor();
turnLeft();
moveTenBeeper();
turnAround();
fiveDiagonalDownRight();
oneDiagonalDownRight();
turnAround();
moveSixBeeper();
turnAround();
moveSix();
moveFourBeeper();
turnLeft();
moveThree();
}
private void f(){
paintColor();
turnLeft();
moveFiveBeeper();
turnRight();
moveFiveBeeper();
turnAround();
moveFive();
turnRight();
moveFiveBeeper();
turnRight();
moveSixBeeper();
turnRight();
moveTen();
turnLeft();
moveThree();
}
private void o(){
moveTwo();
turnLeft();
twoDiagonalUpLeft();
moveSixBeeper();
twoDiagonalUpRight();
turnRight();
moveTwoBeeper();
turnRight();
twoDiagonalDownRight();
moveSixBeeper();
twoDiagonalDownLeft();
turnRight();
moveTwoBeeper();
turnAround();
moveEight();
}
private void r(){
paintColor();
turnLeft();
moveTenBeeper();
turnRight();
moveThreeBeeper();
turnRight();
twoDiagonalDownRight();
moveOneBeeper();
twoDiagonalDownLeft();
turnRight();
moveThreeBeeper();
turnAround();
move();
turnRight();
fiveDiagonalDownRight();
turnLeft();
moveThree();
}
private void d(){
paintColor();
turnLeft();
moveTenBeeper();
turnRight();
moveFourBeeper();
turnRight();
twoDiagonalDownRight();
moveSixBeeper();
twoDiagonalDownLeft();
turnRight();
moveFourBeeper();
moveEight();
}
// Note: This is an unfortunate hack to correct a
// shortfall in our new Eclipse plugin. Don't worry
// about (you won't be tested on it and aren't expected
// to understand what's going on). However, don't
// delete it, or you won't be able to run your Karel
// program.
public static void main(String[] args) {
String[] newArgs = new String[args.length + 1];
System.arraycopy(args, 0, newArgs, 0, args.length);
newArgs[args.length] = "code=" + new SecurityManager(){
public String className() {
return this.getClassContext()[1].getCanonicalName();
}
}.className();
SuperKarel.main(newArgs);
}
}