2017-03-15 4 views
2

私は値を代入しているコンソールアプリケーションを持っています。この試みは、前方、後方、左右に移動するオブジェクトを持つゲームをシミュレートすることです。 。分割するポイントがないコンソール値を解釈するにはどうすればよいですか?

Forward: F 
Backward: B 
Right: R 
Left:  L 

方法I:

オブジェクトは、前進後進、左右の値にinputedされている順序である魔法使い順序

これらの値は、以下のような単純な値でありますコンソールでこれらの値を入力環境午前は次のとおりです。

FRBL

注:私はそれらの間のスペースで、これらの値を入力環境だと、私はこれを行うコードで:

string input = ReadInput(); 
string values [] = input.split(' ') 

私はスペースに分割することなくこれを行う可能性がどのように把握するtryiningてる?

は、どのように私はそれを動作させることができれば、私の入力値のような:

FRBL 

私のオリジナルの試みが正常に動作しますが、私は、私は別の方法でそれを行う可能性がどのように興味があったと私は数字にできませんでしたそれを出す。元の文字列を通じて

string input = ReadInput(); 
char values[] = new string[input.Length] 
for(int i = 0; i < input.Length; i++) 
    values[i] = input[i]; 

答えて

2

+0

@JacobKrallあなたは私よりもずっと前です:) – DavidG

+0

私はこれを探して過ごした時間は信じられません。時にはそれは単純なことです。ありがとうございました! – ThunD3eR

+2

'ToCharArray'の必要はありません。' string'はすでに 'IEnumerable 'ですから、 – juharr

1

あなたはすべての文字を反復するforループを使用することができます文字列をchar値の配列として扱うだけです。任意のスペースに使用ToArray()を削除します。

string input = ReadInput(); 
var moves = input.Replace(" ", "").ToCharArray(); 

foreach(char move in moves) 
{ 
    switch(move) 
    { 
     case 'F': 
      MoveForwards(); 
      break; 
     case 'R': 
      MoveBackwards(); 
      break; 
     //etc... 
    } 
} 
4

文字列を分割する必要はありません、ただforeachと文字で、それの文字を見て:

foreach (char c in input) { 
    switch (c) { 
     case 'F': 
      //do something; 
      break; 

    } 
} 
+0

これはaswell働きました。ありがとうございました。 – ThunD3eR

1

他の人が言ったように、あなたは文字の配列として代わりに文字列を扱うことができますので、あなたは、文字列を分割することを心配する必要はありません。一方

、あなたも直接Console.ReadKeyを使用して文字入力を読むことができる:

while(true) 
{ 
    var key = Console.ReadKey(); 

    switch (key.Key) 
    { 
     case ConsoleKey.F: 
      // Handle 'F' 
      break; 
     case ConsoleKey.R: 
      // Handle 'R' 
      break; 
     case ConsoleKey.B: 
      // Handle 'B' 
      break; 
     case ConsoleKey.L: 
      // Handle 'L' 
      break; 
    } 
} 
関連する問題