package contest; /* * 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. */ import stanford.karel.*; /* * Name: CLAUDIA DENNELR * Section Leader: EPGY JAVA AND ROBOTICS */ /*In this progam, Karel animates the letter "C." A basketball bounces across a varsity * letter "C." Run on close to fastest program for best effects. * The screen should seem to be blinking. Use in a 45x45 world. */ public class ClaudiaDennlerKarelProject extends SuperKarel { public void run() { // while(true){ makeC(); // basketballBounce(); // cTwo(); // basketballBounce(); // cThree(); // basketballBounce(); // cFour(); // basketballBounce(); // cSix(); basketballBounce(); cFive(); turnLeft(); swish(); } // } /*Writes the word Swish!!! * Assumes Karel is facing East. * Leaves Karel facing East. */ private void swish(){ swishOne(); swishTwo(); swishThree(); swishFour(); swishFive(); returnToHome(); for(int i=0; i<100000; i++){ turnLeft(); } } /*Writes the bottom part of the word swish!!! * Assumes Karel is facing East. * Leaves Karel facing East. */ private void swishFive(){ for(int i=0; i<2; i++){ move(); } for(int i=0; i<4; i++){ paintCorner(MAGENTA); move(); } move(); for(int i=0; i<2; i++){ for(int x=0; x<2; x++){ paintCorner(MAGENTA); move(); } move(); } for(int i=0; i<5; i++){ paintCorner(MAGENTA); move(); } move(); for(int i=0; i<4; i++){ paintCorner(MAGENTA); move(); } move(); paintCorner(MAGENTA); moveFour(); paintCorner(MAGENTA); for(int i=0; i<2; i++){ move(); } for(int i=0; i<3; i++){ paintCorner(MAGENTA); move(); move(); } turnAround(); for(int i=0; i<34; i++){ move(); } advanceRowDown(); } /*Creates one of the middle parts of the word swish!!! * Assumes Karel is facing East. * Leaves Karel facing East. */ private void swishFour(){ for(int i=0; i<3; i++){ move(); } paintCorner(MAGENTA); for(int i=0; i<3; i++){ move(); move(); paintCorner(MAGENTA); } moveFour(); paintCorner(MAGENTA); for(int i=0; i<7; i++){ move(); } paintCorner(MAGENTA); for(int i=0; i<2; i++){ move(); } paintCorner(MAGENTA); moveFour(); paintCorner(MAGENTA); turnAround(); for(int i=0; i<28; i++){ move(); } advanceRowDown(); } /*Creates one of the middle parts of the word swish!!! * Assumes Karel is facing East. * Leaves Karel facing East. */ private void swishThree(){ for(int i=0; i<4; i++){ paintCorner(MAGENTA); move(); } move(); for(int i=0; i<3; i++){ paintCorner(MAGENTA); moveFour(); } for(int i=0; i<4; i++){ paintCorner(MAGENTA); move(); } move(); for(int i=0; i<5; i++){ paintCorner(MAGENTA); move(); } move(); for(int i=0;i<3;i++){ paintCorner(MAGENTA); move(); move(); } turnAround(); for(int i=0; i<34; i++){ move(); } advanceRowDown(); } /*Creates one of the middle parts of the word swish!!! * Assumes Karel is facing East. * Leaves Karel facing East. */ private void swishTwo(){ paintCorner(MAGENTA); for(int i=0; i<5; i++){ move(); } for(int i=0; i<3; i++){ paintCorner(MAGENTA); moveFour(); } paintCorner(MAGENTA); for(int i=0; i<5; i++){ move(); } paintCorner(MAGENTA); moveFour(); paintCorner(MAGENTA); move(); move(); for(int i=0;i<3;i++){ paintCorner(MAGENTA); move(); move(); } turnAround(); for(int i=0; i<34; i++){ move(); } advanceRowDown(); } /*Creates the top part of the word swish!!! * Assumes Karel is facing East. * Leaves Karel facing East. */ private void swishOne(){ for(int i=0; i<25; i++){ move(); } turnRight(); for(int i=0; i<5; i++){ move(); } for(int i=0; i<4; i++){ paintCorner(MAGENTA); move(); } move(); paintCorner(MAGENTA); moveFour(); paintCorner(MAGENTA); move(); move(); for(int i=0; i<5; i++){ paintCorner(MAGENTA); move(); } move(); for(int i=0; i<4; i++){ paintCorner(MAGENTA); move(); } move(); paintCorner(MAGENTA); moveFour(); paintCorner(MAGENTA); move(); move(); for(int i=0; i<3; i++){ paintCorner(MAGENTA); move(); move(); } turnAround(); for(int i=0; i<34; i++){ move(); } advanceRowDown(); } private void moveFour(){ for(int i=0; i<4; i++){ move(); } } /*Makes a basketball image bounce across the world. * Assumes Karel is in bottom left corner facing East. * Leaves Karel in same position. */ private void basketballBounce(){ turnLeft(); moveToWall(); turnRight(); makeNextBasketball(); for(int i=0; i<43; i++){ move(); } moveRight(); makeNextBasketball(); for(int i=0; i<42; i++){ move(); } moveRight(); makeNextBasketball(); for(int i=0; i<41; i++){ move(); } moveRight(); makeNextBasketball(); for(int i=0; i<40; i++){ move(); } moveRight(); move(); makeNextBasketball(); for(int i=0; i<39; i++){ move(); } moveRight(); move(); makeNextBasketball(); for(int i=0; i<38; i++){ move(); } moveRight(); move(); makeNextBasketball(); for(int i=0; i<37; i++){ move(); } moveRight(); for(int i=0; i<2; i++){ move(); } makeNextBasketball(); for(int i=0; i<36; i++){ move(); } moveRight(); for(int i=0; i<2; i++){ move(); } makeNextBasketball(); for(int i=0; i<35; i++){ move(); } moveRight(); for(int i=0; i<3; i++){ move(); } makeNextBasketball(); for(int i=0; i<34; i++){ move(); } moveRight(); for(int i=0; i<4; i++){ move(); } makeNextBasketball(); for(int i=0; i<33; i++){ move(); } moveRight(); for(int i=0; i<4; i++){ move(); } makeNextBasketball(); for(int i=0; i<32; i++){ move(); } moveRight(); for(int i=0; i<5; i++){ move(); } makeNextBasketball(); for(int i=0; i<31; i++){ move(); } moveRight(); for(int i=0; i<6; i++){ move(); } makeNextBasketball(); for(int i=0; i<30; i++){ move(); } moveRight(); for(int i=0; i<6; i++){ move(); } makeNextBasketball(); for(int i=0; i<29; i++){ move(); } moveRight(); for(int i=0; i<7; i++){ move(); } makeNextBasketball(); for(int i=0; i<28; i++){ move(); } moveRight(); for(int i=0; i<8; i++){ move(); } makeNextBasketball(); for(int i=0; i<27; i++){ move(); } moveRight(); for(int i=0; i<8; i++){ move(); } makeNextBasketball(); for(int i=0; i<26; i++){ move(); } moveRight(); for(int i=0; i<9; i++){ move(); } makeNextBasketball(); for(int i=0; i<25; i++){ move(); } moveRight(); for(int i=0; i<10; i++){ move(); } makeNextBasketball(); for(int i=0; i<24; i++){ move(); } moveRight(); for(int i=0; i<10; i++){ move(); } makeNextBasketball(); for(int i=0; i<23; i++){ move(); } moveRight(); for(int i=0; i<11; i++){ move(); } makeNextBasketball(); for(int i=0; i<22; i++){ move(); } moveRight(); for(int i=0; i<12; i++){ move(); } makeNextBasketball(); for(int i=0; i<21; i++){ move(); } moveRight(); for(int i=0; i<12; i++){ move(); } makeNextBasketball(); for(int i=0; i<20; i++){ move(); } moveRight(); for(int i=0; i<13; i++){ move(); } makeNextBasketball(); for(int i=0; i<19; i++){ move(); } moveRight(); for(int i=0; i<14; i++){ move(); } makeNextBasketball(); for(int i=0; i<18; i++){ move(); } moveRight(); for(int i=0; i<14; i++){ move(); } makeNextBasketball(); for(int i=0; i<17; i++){ move(); } moveRight(); for(int i=0; i<15; i++){ move(); } makeNextBasketball(); for(int i=0; i<16; i++){ move(); } moveRight(); for(int i=0; i<16; i++){ move(); } makeNextBasketball(); for(int i=0; i<15; i++){ move(); } moveRight(); for(int i=0; i<16; i++){ move(); } makeNextBasketball(); for(int i=0; i<14; i++){ move(); } moveRight(); for(int i=0; i<17; i++){ move(); } makeNextBasketball(); for(int i=0; i<13; i++){ move(); } moveRight(); for(int i=0; i<18; i++){ move(); } makeNextBasketball(); for(int i=0; i<12; i++){ move(); } moveRight(); for(int i=0; i<18; i++){ move(); } makeNextBasketball(); for(int i=0; i<11; i++){ move(); } moveRight(); for(int i=0; i<19; i++){ move(); } makeNextBasketball(); for(int i=0; i<10; i++){ move(); } moveRight(); for(int i=0; i<20; i++){ move(); } makeNextBasketball(); for(int i=0; i<10; i++){ move(); } moveRight(); for(int i=0; i<21; i++){ move(); } makeNextBasketball(); for(int i=0; i<11; i++){ move(); } moveRight(); for(int i=0; i<22; i++){ move(); } makeNextBasketball(); for(int i=0; i<12; i++){ move(); } moveRight(); for(int i=0; i<22; i++){ move(); } makeNextBasketball(); for(int i=0; i<13; i++){ move(); } moveRight(); for(int i=0; i<23; i++){ move(); } makeNextBasketball(); for(int i=0; i<14; i++){ move(); } moveRight(); for(int i=0; i<24; i++){ move(); } makeNextBasketball(); for(int i=0; i<15; i++){ move(); } moveRight(); for(int i=0; i<24; i++){ move(); } makeNextBasketball(); for(int i=0; i<16; i++){ move(); } moveRight(); for(int i=0; i<25; i++){ move(); } makeNextBasketball(); for(int i=0; i<17; i++){ move(); } moveRight(); for(int i=0; i<26; i++){ move(); } makeNextBasketball(); for(int i=0; i<18; i++){ move(); } moveRight(); for(int i=0; i<26; i++){ move(); } makeNextBasketball(); for(int i=0; i<18; i++){ move(); } moveRight(); for(int i=0; i<27; i++){ move(); } makeNextBasketball(); for(int i=0; i<19; i++){ move(); } moveRight(); for(int i=0; i<28; i++){ move(); } makeNextBasketball(); for(int i=0; i<20; i++){ move(); } moveRight(); for(int i=0; i<28; i++){ move(); } makeNextBasketball(); for(int i=0; i<21; i++){ move(); } moveRight(); for(int i=0; i<29; i++){ move(); } makeNextBasketball(); for(int i=0; i<22; i++){ move(); } moveRight(); for(int i=0; i<30; i++){ move(); } makeNextBasketball(); for(int i=0; i<23; i++){ move(); } moveRight(); for(int i=0; i<31; i++){ move(); } makeNextBasketball(); for(int i=0; i<22; i++){ move(); } moveRight(); for(int i=0; i<32; i++){ move(); } makeNextBasketball(); for(int i=0; i<21; i++){ move(); } moveRight(); for(int i=0; i<32; i++){ move(); } makeNextBasketball(); turnRight(); } /*Makes a basketball and sets up for the next one to be made. * Assumes Karel is facing a direction where there is at least room for an 11x11 * basketball. * Leaves Karel facing East in bottom left corner. */ private void makeNextBasketball(){ makeBasketball(); makeC(); turnLeft(); } /*Allow Karel to move right one space. * Assumes Karel is facing in any direction with an unblocked space to the right of her. * Leaves Karel in space to right of her. */ private void moveRight(){ turnRight(); move(); } /*This method puts Karel back in the bottom left corner facing East. * Assumes Karel is facing West anywhere in the World. * Leaves Karel facing East in the bottom left corner. */ private void returnToHome(){ turnAround(); moveToWall(); turnLeft(); moveToWall(); turnLeft(); } /*This method lets Karel make a basketball shape on the screen. * Assumes Karel is facing East with at least twelve rows below and to the east of her. * Leaves Karel facing East in the bottom left corner. */ private void makeBasketball(){ outsideRowOfBball(); secondRowIn(); thirdRowIn(); for(int i=0; i<2; i++){ commonMiddleRow(); } basketballLine(); commonMiddleRow(); thirdRowIn(); secondRowIn(); outsideRowOfBball(); returnToHome(); for(int i=0; i<65000; i++){ turnLeft(); } } /*This method lets Karel make the second row in (on both sides) * of an eleven by eleven basketball. * Assumes Karel is facing East with at least one row below her and twelve columns to the * east. * Leaves Karel facing East one position below where she started. */ private void secondRowIn(){ for(int i=0; i<2; i++){ move(); } paintTwoCornersWhite(); paintTwoCornersOrange(); paintCorner(BLACK); move(); paintTwoCornersOrange(); paintTwoCornersWhite(); turnAround(); for (int i=0; i<11; i++){ move(); } advanceRowDown(); } /*Makes a black line across the center of a baskeball. * Assumes Karel is facing East with at least one row below her and twelve columns to * the east. * Leaves Karel facing East one position below where she started. */ private void basketballLine(){ move(); paintCorner(WHITE); move(); for(int i=0; i<9; i++){ paintCorner(BLACK); move(); } paintCorner(WHITE); turnAround(); for(int i=0; i<11; i++){ move(); } advanceRowDown(); } /*Makes the third line in (on both sides) of a basketball. * Assumes Karel is facing East with at least one row below her and twelve columns to * the east. * Leaves Karel facing East one position below where she started. */ private void thirdRowIn(){ move(); paintTwoCornersWhite(); paintCorner(BLACK); move(); paintTwoCornersOrange(); paintCorner(BLACK); move(); paintTwoCornersOrange(); paintCorner(BLACK); move(); paintCorner(WHITE); move(); paintCorner(WHITE); turnAround(); for(int i=0; i<11; i++){ move(); } advanceRowDown(); } /*Makes the common row in general middle area of a basketball. * Assumes Karel is facing East with at least one row below her and twelve columns to * the east. * Leaves Karel facing East one position below where she started. */ private void commonMiddleRow(){ move(); paintCorner(WHITE); move(); paintTwoCornersOrange(); paintCorner(BLACK); move(); paintCorner(ORANGE); move(); paintCorner(BLACK); move(); paintCorner(ORANGE); move(); paintCorner(BLACK); move(); paintTwoCornersOrange(); paintCorner(WHITE); turnAround(); for(int i=0; i<11; i++){ move(); } advanceRowDown(); } /*Makes the outside row of a baskeball in Karel's world. * Assumes Karel is facing East with at least one row below her and twelve columns to * the east. * Leaves Karel facing East one position below where she started. */ private void outsideRowOfBball(){ for(int i=0; i<3; i++){ move(); } for(int i=0; i<7; i++){ paintCorner(WHITE); move(); } turnAround(); for(int i=0; i<10; i++){ move(); } advanceRowDown(); } /*Paints the next two spaces on the screen orange. * Assumes Karel has at least two unblocked spaces in front of her. * Leaves Karel facing same direction with painted spaces behind her. */ private void paintTwoCornersOrange(){ for(int i=0; i<2; i++){ paintCorner(ORANGE); move(); } } /*Paints the next two spaces on the screen white. * Assumes Karel has at least two unblocked spaces in front of her. * Leaves Karel facing same direction with painted spaces behind her. */ private void paintTwoCornersWhite(){ for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } } /*Allows Karel to move down to the next row. * Assumes Karel is facing West with at least one !blocked row below her. * Leaves Karel on space below starting spot facing East. */ private void advanceRowDown(){ turnLeft(); move(); turnLeft(); } /*Makes a varsity style letter "C" on the screen with the colors of black, red, and white. * Assumes Karel is facing East in the bottom left corner of a 45x45 world. * Leaves Karel in same position. */ private void makeC(){ makeBottomOfC(); makeMiddleOfC(); makeTopOfC(); turnAround(); moveToWall(); turnLeft(); } /*Allows Karel to change the varsity letter "C" mentioned above to the different colors * of magenta, orange, and green. * Assumes Karel is facing East in the bottom left corner of a 45x45 world. * Leaves Karel in same position. */ private void cTwo(){ for(int i=0; i<45; i++){ while(frontIsClear()){ if(cornerColorIs(BLACK)){ paintCorner(MAGENTA); } if(cornerColorIs(WHITE)){ paintCorner(ORANGE); } if(cornerColorIs(RED)){ paintCorner(GREEN); } move(); } paintCorner(MAGENTA); turnAround(); moveToWall(); if(rightIsClear()){ moveRight(); turnRight(); }else{ turnLeft(); moveToWall(); turnLeft(); for(int x=0; x<100000; x++){ turnLeft(); } } } } /*Allows Karel to change the varsity letter "C" mentioned above to the different colors * of gray, cyan, and dark gray. * Assumes Karel is facing East in the bottom left corner of a 45x45 world. * Leaves Karel in same position. */ private void cThree(){ for(int i=0; i<45; i++){ while(frontIsClear()){ if(cornerColorIs(BLACK)){ paintCorner(GRAY); } if(cornerColorIs(WHITE)){ paintCorner(CYAN); } if(cornerColorIs(RED)){ paintCorner(DARK_GRAY); } move(); } paintCorner(GRAY); turnAround(); moveToWall(); if(rightIsClear()){ moveRight(); turnRight(); }else{ turnLeft(); moveToWall(); turnLeft(); for(int x=0; x<100000; x++){ turnLeft(); } } } } /*Allows Karel to change the varsity letter "C" mentioned above to the different colors * of yellow, orange, and blue. * Assumes Karel is facing East in the bottom left corner of a 45x45 world. * Leaves Karel in same position. */ private void cFour(){ for(int i=0; i<45; i++){ while(frontIsClear()){ if(cornerColorIs(BLACK)){ paintCorner(YELLOW); } if(cornerColorIs(WHITE)){ paintCorner(ORANGE); } if(cornerColorIs(RED)){ paintCorner(BLUE); } move(); } paintCorner(YELLOW); turnAround(); moveToWall(); if(rightIsClear()){ moveRight(); turnRight(); }else{ turnLeft(); moveToWall(); turnLeft(); for(int x=0; x<100000; x++){ turnLeft(); } } } } /*Allows Karel to change the varsity letter "C" mentioned above to the different colors * of yellow, black, and green. * Assumes Karel is facing East in the bottom left corner of a 45x45 world. * Leaves Karel in same position. */ private void cFive(){ for(int i=0; i<45; i++){ while(frontIsClear()){ if(cornerColorIs(BLACK)){ paintCorner(YELLOW); } if(cornerColorIs(WHITE)){ paintCorner(BLACK); } if(cornerColorIs(RED)){ paintCorner(GREEN); } move(); } paintCorner(YELLOW); turnAround(); moveToWall(); if(rightIsClear()){ moveRight(); turnRight(); }else{ turnLeft(); moveToWall(); turnLeft(); for(int x=0; x<100000; x++){ turnLeft(); } } } } /*Allows Karel to change the varsity letter "C" mentioned above to the different colors * of green, blue, and cyan. * Assumes Karel is facing East in the bottom left corner of a 45x45 world. * Leaves Karel in same position. */ private void cSix(){ for(int i=0; i<45; i++){ while(frontIsClear()){ if(cornerColorIs(BLACK)){ paintCorner(GREEN); } if(cornerColorIs(WHITE)){ paintCorner(BLUE); } if(cornerColorIs(RED)){ paintCorner(CYAN); } move(); } paintCorner(GREEN); turnAround(); moveToWall(); if(rightIsClear()){ moveRight(); turnRight(); }else{ turnLeft(); moveToWall(); turnLeft(); for(int x=0; x<100000; x++){ turnLeft(); } } } } /*Makes the top section of a varsity style "C." * Assumes Karel is facing East in a 45x45 world with at least 13 rows above her. * Leaves Karel facing East at the right side of 13 rows higher from the starting * position. */ private void makeTopOfC(){ for(int i=0; i<12; i++){ paintCorner(BLACK); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<17; i++){ paintCorner(RED); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<11; i++){ paintCorner(BLACK); move(); } finishRowToNext(); for(int i=0; i<13; i++){ paintCorner(BLACK); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<15; i++){ paintCorner(RED); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<12; i++){ paintCorner(BLACK); move(); } finishRowToNext(); for(int i=0; i<14; i++){ paintCorner(BLACK); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<13; i++){ paintCorner(RED); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<13; i++){ paintCorner(BLACK); move(); } finishRowToNext(); for(int i=0; i<15; i++){ paintCorner(BLACK); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<11; i++){ paintCorner(RED); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<14; i++){ paintCorner(BLACK); move(); } finishRowToNext(); for(int i=0; i<16; i++){ paintCorner(BLACK); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<9; i++){ paintCorner(RED); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<15; i++){ paintCorner(BLACK); move(); } finishRowToNext(); for(int i=0; i<17; i++){ paintCorner(BLACK); move(); } for(int i=0; i<11; i++){ paintCorner(WHITE); move(); } for(int i=0; i<16; i++){ paintCorner(BLACK); move(); } for(int i=0; i<7; i++){ paintRow(BLACK); } paintCorner(BLACK); } /*Makes the bottom portion of a varsity style letter "C." * Assumes Karel is the bottom left corner of a 45x45 facing East. * Leaves Karel eleven rows up facing East on the left side. */ private void makeBottomOfC(){ for(int i=0; i<6; i++){ paintRow(BLACK); } for(int i=0; i<17; i++){ paintCorner(BLACK); move(); } for(int i=0; i<11; i++){ paintCorner(WHITE); move(); } for(int i=0; i<16; i++){ paintCorner(BLACK); move(); } finishRowToNext(); for(int i=0; i<16; i++){ paintCorner(BLACK); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<9; i++){ paintCorner(RED); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<15; i++){ paintCorner(BLACK); move(); } finishRowToNext(); for(int i=0; i<15; i++){ paintCorner(BLACK); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<11; i++){ paintCorner(RED); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<14; i++){ paintCorner(BLACK); move(); } finishRowToNext(); for(int i=0; i<14; i++){ paintCorner(BLACK); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<13; i++){ paintCorner(RED); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<13; i++){ paintCorner(BLACK); move(); } finishRowToNext(); for(int i=0; i<13; i++){ paintCorner(BLACK); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<15; i++){ paintCorner(RED); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<12; i++){ paintCorner(BLACK); move(); } finishRowToNext(); for(int i=0; i<12; i++){ paintCorner(BLACK); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<17; i++){ paintCorner(RED); move(); } for(int i=0; i<2; i++){ paintCorner(WHITE); move(); } for(int i=0; i<11; i++){ paintCorner(BLACK); move(); } finishRowToNext(); } /*Makes Karel create the middle portion of a varsity letter "C." * Assumes Karel is facing East on the left side of a 45x45 world with at least * seventeen rows above her. * Leaves Karel seventeen rows ahead of her in same position. */ private void makeMiddleOfC(){ for(int i=0; i<3; i++){ makeWideRow(); } insideOuterRows(); for(int i=0; i<3; i++){ outsideMiddleRows(); } insideMiddleRows(); for(int i=0; i<5; i++){ middleRows(); } insideMiddleRows(); for(int i=0; i<3; i++){ outsideMiddleRows(); } insideOuterRows(); for(int i=0; i<3; i++){ makeWideRow(); } } /*Makes Karel make part of the middle of a varsity style letter "C." * Assumes Karel is facing East on the left side of a 45x45 world with at least * one row above her. * Leaves Karel one row above starting position facing East. */ private void insideOuterRows(){ for(int i=0; i<12; i++){ paintCorner(BLACK); move(); } for(int i=0; i<1; i++){ paintCorner(WHITE); move(); } for(int i=0; i<7; i++){ paintCorner(RED); move(); } for(int i=0; i<5; i++){ paintCorner(WHITE); move(); } for(int i=0; i<7; i++){ paintCorner(RED); move(); } for(int i=0; i<1; i++){ paintCorner(WHITE); move(); } for(int i=0; i<11; i++){ paintCorner(BLACK); move(); } finishRowToNext(); } /*Makes Karel make part of the middle of a varsity style letter "C." * Assumes Karel is facing East on the left side of a 45x45 world with at least * one row above her. * Leaves Karel one row above starting position facing East. */ private void insideMiddleRows(){ for(int i=0; i<12; i++){ paintCorner(BLACK); move(); } for(int i=0; i<1; i++){ paintCorner(WHITE); move(); } for(int i=0; i<7; i++){ paintCorner(RED); move(); } for(int i=0; i<1; i++){ paintCorner(WHITE); move(); } for(int i=0; i<3; i++){ paintCorner(BLACK); move(); } for(int i=0; i<9; i++){ paintCorner(WHITE); move(); } for(int i=0; i<11; i++){ paintCorner(BLACK); move(); } finishRowToNext(); } /*Makes Karel make part of the middle of a varsity style letter "C." * Assumes Karel is facing East on the left side of a 45x45 world with at least * one row above her. * Leaves Karel one row above starting position facing East. */ private void middleRows(){ for(int i=0; i<12; i++){ paintCorner(BLACK); move(); } for(int i=0; i<1; i++){ paintCorner(WHITE); move(); } for(int i=0; i<7; i++){ paintCorner(RED); move(); } for(int i=0; i<1; i++){ paintCorner(WHITE); move(); } for(int i=0; i<23; i++){ paintCorner(BLACK); move(); } finishRowToNext(); } /*Makes Karel make part of the outside (both North and South) of a varsity style letter "C." * Assumes Karel is facing East on the left side of a 45x45 world with at least * one row above her. * Leaves Karel one row above starting position facing East. */ private void outsideMiddleRows(){ for(int i=0; i<12; i++){ paintCorner(BLACK); move(); } for(int i=0; i<1; i++){ paintCorner(WHITE); move(); } for(int i=0; i<7; i++){ paintCorner(RED); move(); } for(int i=0; i<1; i++){ paintCorner(WHITE); move(); } for(int i=0; i<3; i++){ paintCorner(BLACK); move(); } for(int i=0; i<1; i++){ paintCorner(WHITE); move(); } for(int i=0; i<7; i++){ paintCorner(RED); move(); } for(int i=0; i<1; i++){ paintCorner(WHITE); move(); } for(int i=0; i<11; i++){ paintCorner(BLACK); move(); } finishRowToNext(); } /*Makes Karel make part of the outside (both North and South) of a varsity style letter "C." * Assumes Karel is facing East on the left side of a 45x45 world with at least * one row above her. * Leaves Karel one row above starting position facing East. */ private void makeWideRow(){ for(int i=0; i<12; i++){ paintCorner(BLACK); move(); } for(int i=0; i<1; i++){ paintCorner(WHITE); move(); } for(int i=0; i<19; i++){ paintCorner(RED); move(); } for(int i=0; i<1; i++){ paintCorner(WHITE); move(); } for(int i=0; i<11; i++){ paintCorner(BLACK); move(); } finishRowToNext(); } /*Allows Karel to finish a row with a black background and move to the next row. * Assumes Karel is facing East on one null space with the front blocked and at * least one row above her. * Leaves Karel facing East on the left side of any size world on row above * starting position. */ private void finishRowToNext(){ paintCorner(BLACK); turnAround(); moveToWall(); advanceToNext(); } /*Lets Karel paint a row one color of programmer's choice. * Assumes Karel is facing East in any world. * Leaves Karel facing East on the left side one row above starting position. */ private void paintRow(java.awt.Color cornerColor){ while(frontIsClear()){ paintCorner(cornerColor); move(); } paintCorner(cornerColor); turnAround(); moveToWall(); advanceToNext(); } /*Allows Karel to move to the wall she is facing and stop when the front is blocked. * Assumes Karel is facing any direction anywhere in any size world. * Leaves Karel facing wall. */ private void moveToWall() { while (frontIsClear()){ move(); } } /*Advances to the next row in Karel's world. *Assumes Karel is facing West. *Leaves Karel facing East one row above assumed position. */ private void advanceToNext(){ turnRight(); if (frontIsClear()){ move(); turnRight(); } } // 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); } }