1

私は現在、高校の 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);
    }

}
4

0 に答える 0