2017-04-03 92 views
-2

Picture of Program DesignC#操作/类

我必须设计一个这样操作的程序。我已经完成了机器人运动的基本代码,但是方向要求我使用带有显示方法的“Action”类。

添加一个名为Action的新类,它将公开以下几条数据:

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

öAction类的显示方法应该发射RobotDirection.X其中X是用于全名方向

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

o添加一个列表框,并为动作列表中的每个项目调用Display()方法并将该信息添加到在 列表框

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

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

在我的动作类:

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; 

    } 
} 

我将如何调用显示方法来填充列表框?

谢谢!

+3

对不起,但我没有看到您的文章中的问题/问题是什么。 – Tatranskymedved

+0

我的问题是我不明白如何正确使用Display方法来填充列表框。虽然我有Display方法,但没有将它连接到Listbox,我不确定x。在这种情况下代表。 – Yahtzee

+0

@ user7200174你见过[ListBox.ObjectCollection.Add方法]的文档(https://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.objectcollection.add(v = vs 0.110)的.aspx)? – PJvG

回答

0

您的Action类的问题在于您需要构造函数和字段,并且您不需要将Action作为参数传递给Display方法。

首先添加一些字段您Action类:

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

接下来,在你的类添加一个构造函数:

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

可以调用此构造函数创建一个新的Action对象如下:您可以在您的中使用this.typethis.direction 210方法,并且您也不需要任何参数用于您的Display方法(即, Display()而不是Display(Action x))。

您可能感兴趣的最后一件事:InheritanceInterfaces。您可以创建新的类,例如MovementActionRotateAction,并使它们实现为IAction,这将成为仅包含Display()方法的接口。

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

0

你应该调用此方法将字符串:

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

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

yourListBox.Items.Add(specificAction) 

希望它帮助!

+0

该问题陈述如下:“添加一个Action类型的列表以跟踪由用户输入的方向和移动指令”。你的答案不包括那个,但我同意你的解决方案是正确的,如果这个'List '没有用于除了记录输入动作之外的任何事情,因为在这种情况下,这个列表是相当无用的。 – PJvG