首页 > 代码库 > cs106a 作业及其他
cs106a 作业及其他
cs106s是斯坦福一门叫做编程方法学的课的编号。这门课面向初学编程者,使用的语言是java。课程资源网上都有,我决定把附带的作业自己动手做一下贴在这里。有错漏不足之处欢迎读者指正。
Assignment 1
problem #1
这是个简单的移动Karel的问题。问题很简单,就是移动Karel到方框外的“报纸”处,捡起,然后回到原地。代码如下:
import stanford.karel.*;
public class CollectNewspaperKarel extends SuperKarel {
public void run(){
move();
move();
turnRight();
move();
turnLeft();
move();
pickBeeper();
turnLeft();
turnLeft();
move();
move();
move();
turnRight();
move();
}
}
problem #2
这个问题也很简单,就是要求Karel能够使得图中每隔4列的列中都填满beeper(已经有的地方不可重复),起始位置是(1,1)。
import stanford.karel.*;
public class StoneMasonKarel extends SuperKarel {
public void run(){
repair();
comeback();
while (frontIsClear()){
for(int i=0;i<4;i++){
move();
}
repair();
comeback();
}
}
private void repair(){
turnLeft();
while (frontIsClear()){
if (noBeepersPresent()){
putBeeper();
}
move();
}
if (noBeepersPresent()){
putBeeper();
}
}
private void comeback(){
turnLeft();
turnLeft();
while (frontIsClear()){
move();
}
turnLeft();
}
}
cs106a 作业及其他