Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使Finch对象跟随对象_Java_Finch - Fatal编程技术网

Java 使Finch对象跟随对象

Java 使Finch对象跟随对象,java,finch,Java,Finch,在我的Java代码中,Finch机器人被命名为myF 我需要让myF执行以下操作: 轻触一次可向放置在其前面的对象移动,如果对象静止,则鸟嘴颜色(myF.setLED..)为红色,如果对象移动,则为绿色 雀鸟机器人应该跟随物体四处移动,如果物体停止,它的喙会亮起红色,如果物体移动,它的喙会亮起绿色 在运动时,雀鸟应该嗡嗡作响,但不要太大声。(myF.嗡嗡声(嗡嗡声,嗡嗡声持续时间) 然而,我的代码不能正常工作,我知道有一些错误,但我不知道如何继续进行多次尝试。请参阅下面的代码。任何帮助都将不胜感

在我的Java代码中,Finch机器人被命名为myF

我需要让myF执行以下操作:

  • 轻触一次可向放置在其前面的对象移动,如果对象静止,则鸟嘴颜色(myF.setLED..)为红色,如果对象移动,则为绿色

  • 雀鸟机器人应该跟随物体四处移动,如果物体停止,它的喙会亮起红色,如果物体移动,它的喙会亮起绿色

  • 在运动时,雀鸟应该嗡嗡作响,但不要太大声。(myF.嗡嗡声(嗡嗡声,嗡嗡声持续时间)

  • 然而,我的代码不能正常工作,我知道有一些错误,但我不知道如何继续进行多次尝试。请参阅下面的代码。任何帮助都将不胜感激

    import edu.cmu.ri.createlab.terk.robot.finch.Finch;
    
    public class Main {
    
    
    //Variable declaration.
    
    static int Buzz = 300;
    static int BuzzDuration = 1200;
    
    
    static int R = 250;
    static int G = 250;
    
    static int velocityLeft = 150;
    static int velocityRight = 150;
    
    static int turnLeft = -50;
    static int turnRight = -50;
    
    static int time = 0;
    static int tappedCount = 0;
    
    
    //Initialization of Finch   
    
    static Finch myF = new Finch();
    
    
    //Main method
    
    public static void main(String[] args) 
    
    
    //TAP FINCH ONCE FOR IT TO DO EITHER OF THE FOLLOWING:
    
    //Turn red and follow stationary object
    //Turn green and follow an object in motion
    //Do nothing if no object is in front of Finch
    
    
    
    
    {
    
    
        //while (myF.isFinchUpsideDown() == false)
    {
    
        if
    
        (myF.isTapped() == true && myF.isObstacle() == true)
    
    {
    
        {
        //Set Beak LED to Green if object in front is moving. 
        // *******need to add a conditional statement for whether obstacle    in front of finch is moving.
    
        myF.setLED(R,0,0);
        //myF.setWheelVelocities(velocityLeft,velocityRight);
        myF.buzz(Buzz, BuzzDuration);
    
            if (myF.isObstacleRightSide() == false)
            {
                myF.setWheelVelocities(0, 255);
            }
                else if (myF.isObstacleLeftSide() == false)
                {
                myF.setWheelVelocities(255, 0);
                }
                    else if (myF.isObstacle() == true)
                    {
    
                        myF.stopWheels();
    
    
                    }
    
        }
    
    }
    
        //Beak supposed to be RED if object in front is stationary, Finch should move towards object.
    
    else {
    
    //      if
        //***beak should stay off unless object is placed ahead of it and/or is moving, respectively
    //      (myF.isTapped() == false) 
    
        {   
            myF.setLED(0,0,0);  
            myF.setWheelVelocities(0,0);  
            //myF.quit();
            //myF.stopWheels();
            tappedCount = 0;
        }
    }
    }
    myF.quit();
    
    //  FollowObjectAround();
    
    
    //RUN AGAIN i.e. "the Move method" whilst running the first algorithms above. 
    
    //      boolean RunAgain = true;
    //
    //      while(RunAgain) {
    //                  
    //          Move();
    //        
    //      }
    
    
    } //main(String[] args) ends here.
    
    //FIRST PART SUCCESSFUL
    //Next part: follow object incorporating corresponding beak colour
    
    
    
    //public Main() {
    
    public static void FollowObjectAround() {
    
    while (true){    
    
    //This begins the movement of the finch  
    
    //if (myF.isObstacleLeftSide() == false && myF.isObstacleRightSide() == false || myF.isObstacle() == false)
    
    //LED colours are red, green and blue
    //myF.setLED(R,0,0);
    //myF.setWheelVelocities(velocityLeft, velocityRight); 
    //^^
    //here, the robot runs straight into the object and keeps going.
    //might be best to have the finch stop when it reaches the object, proceeding movement if that object moves also.
    
    
    //Triggers the RunAgain function to true so that the program does not stop in one run so that the Finch will continue to move
    
    boolean RunAgain = true;
    
    while(RunAgain) {
    
    //Calling of the Move method for the Finch movements.
    
    Move();
    
    while
    
    (myF.isTapped()==true && myF.isTapped()==true)
    //if (myF.isTapped()==true && myF.isTapped()==true)
    {
    myF.setLED(0,0,0);   
    myF.stopWheels();
    //break;
    }
    
    } // I just added this brace, wasn't there before.
    
    }
    
    //Inside the while, RunAgain loop , there is a conditional statement that makes the program terminate if the Finch has been tapped twice
    
    //if (myF.isTapped()==true && myF.isTapped()==true)
    //            {
    //                break;
    //            }
        }
      //}
    //}
    
    
    
    
    
    
    // Method for Finch movements
    
    public static void Move() {
    
    if (myF.isObstacleRightSide() == false && myF.isObstacleLeftSide() == false && myF.isObstacle() == true)
    
    {
       MoveStraight();
    }
    
    else if (myF.isObstacleRightSide() == false && myF.isObstacleLeftSide() == true)
    
    {
       MoveLeft();
    }
    
    else if (  myF.isObstacleRightSide() == true && myF.isObstacleLeftSide() == false)
    
    {
       MoveRight();
    }
    
    else if (myF.isObstacleRightSide()==true && myF.isObstacleLeftSide()==true)
    {
       StopMoving();
    
    }
    
    }
    
    //=====================================================================================================
    
    
    //If the finch is moving straight, the light will be green and both of the wheels will move at 150
    
    public static void MoveStraight()
    
    {
      myF.setLED(0, G, 0);
    
      myF.setWheelVelocities(velocityLeft, velocityRight);
    
      myF.buzz(Buzz, BuzzDuration);
    }
    
    public static void MoveLeft()
    
    {
    //If the finch is moving left, the light will be green, the left wheel will move at -50 and the right wheel will move at 150
    myF.setLED(0, G, 0);
    
      myF.setWheelVelocities(turnLeft, velocityRight);
    
      myF.buzz(Buzz, BuzzDuration);
    
    }
    
    public static void MoveRight()
    
    //If the finch is moving right, the light will be green the left wheel will move at 150 and the right wheel will move at -50
    {
      myF.setLED(0, G, 0);
    
      myF.setWheelVelocities(velocityLeft, turnRight);
    
      myF.buzz(Buzz, BuzzDuration);
    
    }
    
    public static void StopMoving()
    
    //if the Finch is not moving, the colour of the light will be red and the buzzing will stop
    {
      myF.setLED(R, 0 , 0);
    
      myF.stopWheels();
    
      myF.buzz(Buzz, BuzzDuration);
    
    }
    
    
    
    }
    
    //while(myF.isFinchUpsideDown()==false) {

    这里的“{”是错误的,这里是错误的

    { //如果前面的物体正在移动,则将鸟嘴LED设置为绿色。
    //*******需要为finch前面的障碍物是否移动添加一个条件语句。

    您可以格式化代码吗,实际上很难阅读,因为没有任何意图。您可能还需要包含
    finch
    类。感谢您的反馈,我现在已经添加了类文件。