0

我是 java 新手,正在尝试使用 Karel 右转的方法创建一个新的机器人类。但是,当我尝试将“RightTurnerRobot”类扩展为包含“Robot”时,出现以下错误:

默认构造函数未定义隐式超级构造函数 Robot()。必须定义显式构造函数

我的代码如下,任何帮助表示赞赏。

import kareltherobot.*; 
import kareltherobot.Robot;

import java.awt.*; 

public class RightTurnerRobot extends Robot implements RobotTask
{

 public void TurnRight()
 {
  turnLeft();
  turnLeft();
  turnLeft();
 }

 static
 {
   World.setDelay(100); 

   World.setSize(10, 10);
 }

  public void task()
  { 
    //World.readWorld("src", "someworldname.kwld");

    UrRobot grace = new UrRobot(3, 3, East, 30);
    grace.move();
    grace.turnOff();
  } 

编辑:我发现了问题。它应该扩展UrRobot而不是Robot. 然后我做了一个构造函数:

import kareltherobot.*; //Needed for Robots

import java.awt.*; //Needed for Color
public class RightTurnerRobot extends UrRobot
{
  public RightTurnerRobot(int street, int avenue, Direction direction,
    int beepers)
  {
    super(street, avenue, direction, beepers);
    // TODO Auto-generated constructor stub
  }

  public void turnRight()
  {
    turnLeft();
    turnLeft();
    turnLeft();
  }
}
4

1 回答 1

0

您需要有一个与 Robot 类匹配的构造函数,因为您正在扩展它。

import kareltherobot.*; 
import kareltherobot.Robot;

import java.awt.*; 

public class RightTurnerRobot extends Robot implements RobotTask
{

public RightTurnerRobot(int arg0, int arg1, Direction arg2, int arg3) {
    super(arg0, arg1, arg2, arg3);
}

public void TurnRight()
{
 turnLeft();
 turnLeft();
 turnLeft();
}

static
{
 World.setDelay(100); 

 World.setSize(10, 10);
}

public void task()
 { 
//World.readWorld("src", "someworldname.kwld");

UrRobot grace = new UrRobot(3, 3, East, 30);
grace.move();
grace.turnOff();
} 

在我看来,虽然这样做的更好方法是这样。

import kareltherobot.*;
import kareltherobot.Robot;

import java.awt.*;

public class RobotWorld{

    //Create Robot
    Robot robot;

    public RobotWorld () {
        //Initialize World
        World.readWorld("PATH/TO/WORLD");
        World.setVisible(true);

        //Initialize Robot
        robot = new Robot(3, 3, Robot.East, 3);
        turnRight(robot);
    }

    public void turnRight (Robot tempRobot) {
        tempRobot.turnLeft();
        tempRobot.turnLeft();
        tempRobot.turnLeft();
    }

    public static void main (String [] args) {
        RobotWorld world = new RobotWorld();
    }
}
于 2016-08-17T18:38:31.163 回答