斯坦福Java网课的karel找中点的题今天写了会居然写出了,思路还是昨天做梦的时候想到的,我真是服了,贴一下免的忘了
/*
* File: MidpointFindingKarel.java
* -------------------------------
* When you finish writing it, the MidpointFindingKarel class should
* leave a beeper on the corner closest to the center of 1st Street
* (or either of the two central corners if 1st Street has an even
* number of corners). Karel can put down additional beepers as it
* looks for the midpoint, but must pick them up again before it
* stops. The world may be of any size, but you are allowed to
* assume that it is at least as tall as it is wide.
*/
import stanford.karel.*;
public class MidpointFindingKarel extends SuperKarel {
public void run() {
while(!cornerColorIs(RED)) {
movetoedge();
checkbeeper();
}
movetoedge();
clearallbeepers();
turnAround();
movetored();
putBeeper();
paintCorner(null);
}
private void movetoedge() {
while(frontIsClear())
move();
turnAround();
}
private void checkbeeper(){
if(noBeepersPresent())
putBeeper();
else{
{
while(beepersPresent()) {
move();
}
move();
if(beepersPresent()) {
turnAround();
move();
paintCorner(RED);
}
if(noBeepersPresent()) {
turnAround();
move();
putBeeper();
turnAround();
move();
}
}
}
}
private void clearallbeepers() {
while(frontIsClear()) {
while(beepersPresent()&&!cornerColorIs(RED)) {
pickBeeper();
}
move();
}
if(beepersPresent()&&!cornerColorIs(RED)) {
pickBeeper();
}
}
private void movetored() {
while(!cornerColorIs(RED)) {
move();
}
}
}
还有那个画格子,测试地图都试过可行,真的有意思...
/*
* File: CheckerboardKarel.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.*;
public class CheckerboardKarel extends SuperKarel {
public void run() {
finishtheline();
}
private void finishtheline() {
putBeeper();
while(frontIsClear()) {
move();
if(frontIsClear()) {
move();
putBeeper();
}
}
if(facingEast()&&!beepersPresent()) {
turnLeft();
if(frontIsClear()) {
move();
turnLeft();
finishtheline();
}
}
else if(facingWest()&&!beepersPresent()) {
turnRight();
if(frontIsClear()) {
move();
turnRight();
finishtheline();
}
}
else if(facingEast()&&beepersPresent()) {
turnLeft();
if(frontIsClear()) {
move();
turnLeft();
if(frontIsClear()) {
move();
finishtheline();
}
else {
turnRight();
move();
finishtheline();
}
}
}
else if(facingWest()&&beepersPresent()) {
turnRight();
if(frontIsClear()) {
move();
turnRight();
move();
finishtheline();
}
}
}
}