私は現在、高校の AP コンピューター サイエンスのクラスにいます。「kareltherobot」パッケージを使用して Java でコーディングしています。手順は次のとおりです。このラボでは、ロボットがルンバのように動作します。部屋のブザーの山をすべて拾います。タスクを実行しながら、情報を追跡します。部屋のすべての場所をクリーンアップする必要があります。ユーザーは、ロボットの初期状態の場所と方向だけでなく、掃除する部屋 (読み込まれるワールド ファイル) を求められる必要があります。
ユーザーに報告する情報:
• 部屋の広さ
• 杭の数
• ブザーの総数
• ブザーの最大の山
• 最大の山の位置 (相対)
•平均パイルサイズ
•汚れたパーセント(パイル/面積)
テストするテンプレートと世界を用意しました。私たちはプログラミングとテストの学習の初期段階にあるため、テストの世界を提供しています。コードを壊す可能性のあるテスト ケースを検討し、開発中にこれらのケースをテストすることをお勧めします。
これが私の現在のコードです。私の問題は、ロボットを南東の角に移動させることができないことです。私はそれをそこに行かせてから、移動させてクリーンな行を使用させようとしていました。このようにして、各行を 1 つずつ消去します。誰か助けてくれませんか?
import java.util.Scanner;
import javax.swing.JOptionPane;
import kareltherobot.*;
public class Driver implements Directions{
public static int locationx2;
public static int locationy2;
public static String direction;
Direction direction2;
int beeperspicked;
Robot r ;
/**
* @param args
*/
public static void main(String[] args) {
// LEAVE THIS ALONE!!!!!!
Driver d = new Driver();
d.getInfo();
d.cleanRoom();
//d.printResults();
}
private void printResults() {
// A bunch of System.out.prints go here
JOptionPane.showMessageDialog(null, "Number of piles was" + );
JOptionPane.showMessageDialog(null, "Area of room was" + );
JOptionPane.showMessageDialog(null, "Number of beepers was" + beeperspicked );
JOptionPane.showMessageDialog(null, "Largest pile of beepers was" + );
JOptionPane.showMessageDialog(null, "Location of the largest pile was" + );
JOptionPane.showMessageDialog(null, "Average pile size was" + );
JOptionPane.showMessageDialog(null, "The percent dirty was" + );
}
private void cleanRoom() {
// all the code that cleans and counts goes here
// obviously, lots more here
r= new Robot(locationy2,locationx2,direction2,0);
beeperspicked= 0;
int loop= 2;
while (r.frontIsClear()){
while (!r.facingEast()){
r.turnLeft(); }
while (r.facingEast()){
r.move(); }
}
while (!r.frontIsClear()){
r.turnLeft();
}
while (loop==0){
cleanRow();
}
}
private void cleanRow() {
while (r.nextToABeeper()== true) {
r.pickBeeper();
beeperspicked++;}
while (r.frontIsClear()== true) {
r.move(); }
while (!r.frontIsClear()){
r.turnLeft();
r.turnLeft();
}
}
private void getInfo() {
// this method acquires the starting street, avenue and direction
// of the robot from the user. Also it inputs the name of the world
// file. It then opens the world file and creates the robot
String worldname = JOptionPane.showInputDialog("World Name?");
String locationx = JOptionPane.showInputDialog("X Coordinate?");
locationx2 = Integer.parseInt(locationx);
String locationy = JOptionPane.showInputDialog("Y Coordinate?");
locationy2 = Integer.parseInt(locationy);
String direction = JOptionPane.showInputDialog("Direction to face?");
if (direction.equals("North")) {
direction2= North;
}
if (direction.equals("East")) {
direction2= East;
}
if (direction.equals("West")) {
direction2= West;
}
if (direction.equals("South")) {
direction2= South;
}
else
{
direction2= North;
}
String wrldName = worldname + ".wld";
World.readWorld(wrldName);
//set world size?
World.setVisible(true);
World.setDelay(20);
}
}