C# Actions/Classes

C# Actions/Classes

我必须设计一个像这样运行的程序。我已经完成了机器人运动的基本代码,但是说明要求我使用 "Action" class 和显示方法。

添加一个名为 Action 的新 class 将公开以下数据:|

1.) 动作类型 2.) 方向 3.) 距离 3.) 显示()

o 动作 class 的 Display 方法应该发出 RobotDirection.X 其中 X 是方向的全名

或 MoveRobot(X) 其中 X 是所选的距离。 o 添加一个动作类型的列表来跟踪用户输入的方向和移动指令

o 添加一个列表框,对于 Actions 列表中的每个项目,调用 Display() 方法并将该信息添加到 列表框

截至目前,我有一个枚举 class 作为:

public enum ActionType
{
    Movement,
    Direction
}
public enum RobotDirection
{
    North,
    South,
    East,
    West
}

在我的操作中 class:

 public String Display(Action x)
    {
        String robotAction = null;

        if(x.ActionType == ActionType.Direction)
        {
            if(x.Direction == RobotDirection.North)
            {
                robotAction = "RobotDirection.North";
            }
            else if(x.Direction == RobotDirection.East)
            {
                robotAction = "RobotDirection.East";
            }
            else if(x.Direction == RobotDirection.South)
            {
                robotAction = "RobotDirection.South";
            }
            else if(x.Direction == RobotDirection.West)
            {
                robotAction = "RobotDirection.West";
            }

        }

        else if (x.ActionType == ActionType.Movement)
        {
            robotAction = "MoveRobot(" + Distance + ")";
        }

        return robotAction;

    }
}   

如何调用 Display 方法来填充列表框?

谢谢!

你应该对一个字符串调用这个方法:

string specificAction = Display(/*any action*/)

然后将字符串添加到您的列表框中:

yourListBox.Items.Add(specificAction)

希望对您有所帮助!

你的 Action class 的问题是你需要一个构造函数和字段,你不应该需要将 Action 传递给你的 Display 方法作为论据。

首先将一些字段添加到您的 Action class:

public class Action
{
    private ActionType type;
    private RobotDirection direction;
    private int distance;

接下来,在 class 中添加一个构造函数:

    public Action(ActionType type, RobotDirection direction, int distance)
    { 
        this.type = type;
        this.direction = direction;
        this.distance = distance;
    }

您可以调用此构造函数来创建一个新的 Action 对象,如下所示:var action = new Action(ActionType.Direction, RobotDirection.North, 10);

您还可以在 Display 方法中使用 this.typethis.direction,并且您的 Display 方法也不需要任何参数(即 Display() 而不是 Display(Action x)).

您可能感兴趣的最后一件事:Inheritance and Interfaces。您可以创建新的 classes,例如 MovementActionRotateAction,并让它们实现 IAction,这将是一个仅包含 Display() 方法的接口.

MovementAction class 将只包含 ActionType typeint distance 的字段。 RotateAction class 将只包含 ActionType typeRobotDirection direction 的字段。他们都将以不同的方式实现 Display() 方法。