2017-04-03 7 views
-2

Picture of Program DesignC#アクション/クラス

このように動作するプログラムを設計する必要があります。私はロボットの動きのための基本的なコードを完了しましたが、指示では、表示メソッドで "アクション"クラスを使用する必要があります。

次のデータを公開するActionという新しいクラスを追加します。 Xがの完全な名前であるActionクラスの表示方法O

1)ACTIONTYPE 2)方向 3)( 3)ディスプレイの距離)

はRobotDirection.Xを放出しなければなりません方向

またはMoveRobot(X)ここで、Xは選択された距離です。 oユーザが入力した方向と移動の指示を追跡するためのアクションタイプのリストを追加します。

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; 

    } 
} 
リストボックス今のよう

は、私はとして列挙型クラスを持っています

Displayメソッドを呼び出してリストボックスにデータを入力するにはどうすればよいですか?

ありがとうございました!

+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 .110).aspx)? – PJvG

答えて

0

Actionクラスの問題は、コンストラクタとフィールドが必要であることと、メソッドに引数としてActionを渡す必要はありません。

まず、あなた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オブジェクトを作成するには、このコンストラクタを呼び出すことができます。 var action = new Action(ActionType.Direction, RobotDirection.North, 10);

this.typethis.directionを使用することもできます210メソッドを使用しています。また、Displayメソッドの引数も必要ありません。 Display(Action x)の代わりにDisplay())。

あなたに興味のある最後のもの:InheritanceInterfaces。たとえば、MovementActionRotateActionのような新しいクラスを作成して、を実装させることができます。これは、Display()メソッドのみを含むインターフェイスになります。

MovementActionクラスには、ActionType typeint distanceのフィールドのみが含まれます。 RotateActionクラスには、ActionType typeRobotDirection directionのフィールドのみが含まれます。そして、彼らは両方とも異なる方法でDisplay()メソッドを実装します。

0

あなたは文字列に、このメソッドを呼び出す必要があります:

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

そしてあなたのリストボックスに文字列を追加します。

yourListBox.Items.Add(specificAction) 

はそれが助けを願って!

+0

質問には次のように書かれています: "ユーザーが入力した方向と移動の指示を追跡するためのアクションタイプのリストを追加"。あなたの答えにはそれが含まれていませんが、入力された行為を追跡する以外にこの 'List 'が他の目的に使用されていない場合、あなたの解決策が正しいと同意します。その場合、このリストはかなり役に立たないからです。 – PJvG

関連する問題