2017-01-12 12 views
0

私はブラックジャックのゲームを作っています。プレイヤーが描画するときに、隣り合ったカードを表示したいと思います。私は実際にここでそれを置く方法を見つけ出すことができませんでした一種のようになり、私はカードオブジェクトと文字列内の文字列として保存されたカードを持っている:複数行の文字列を整列するC#console app

public void CreateDeck() 
    { 
     myDeck[0] = new Card(1, "hearts", @" 
______________ 
| A   | 
|    | 
|    | 
|    | 
| HEARTS | 
|    | 
|    | 
|   A | 
|______________|", @" 
______________ 
|//////////////| 
|//////////////| 
|//////////////| 
|//////////////| 
|//////////////| 
|//////////////| 
|//////////////| 
|//////////////| 
|//////////////|"); 

ハートのエースが、私が望むものを基本的に出力する。私は、出力カードが、それは最初のカードの横のではなく、新しい行に行くたびにI出力2枚目のカードは

私は選手たちとディーラーの手

______________ ______________ 
| J   | | 10   | 
|    | |    | 
|    | |    | 
|    | |    | 
|  CLUBS | | HEARTS | 
|    | |    | 
|    | |    | 
|   J | |   10 | 
|______________| |______________| 
に表示するには、次のようになりますし、出力を希望することができます
+3

(https://msdn.microsoft.com/en-us/library/system.console.setcursorposition(V = vs.110).aspxの)しかし、グリッドコントロール付きのWindowsアプリがはるかに簡単になるようです。 –

+0

カードクラスを示すコードと文字列の表示方法を教えてください – taquion

+0

どういう意味なのか分かりません:_output複数のアスキーカードが隣にあります_?あなたは行くために何かを見せなければなりません。あなたの出力がどのように見えるようにしたいのですが、何を試してもうまくいかないのですか? – JohnG

答えて

0

カード全体が描かれているときにそれを再描画することができます。アートを出力する方法(ここではパブリックToStringをオーバーライドする)でコレクションにカードを残しておきましょう。次に、キャリッジリターンで分割し、次のように1行ずつ描画する必要があります。他の人が示唆しているように、あなたはWindowsアプリケーションでこれを行うほうがはるかに簡単です(ハッキリではありません)。あなたが使用できるコンソールアプリケーション[Console.SetCursorPosition]については

 var cardLines = cards.Select(x => 
     x.ToString().Split('\r').ToList().Select(y => y.Replace("\r", string.Empty).Replace("\n", string.Empty) 
     ).ToList()).ToList(); 
     var maximumCardHeight = cardLines.Max(x => x.Count); 
     for (var i = 0; i < maximumCardHeight - 1; i++) 
     { 
      cardLines.ForEach(x => 
      { 
       if (i < x.Count) 
        Console.Write(x[i]); 
      }); 
      Console.WriteLine(); 
     } 
+0

これは本当に有益でしたありがとう!しかし、問題の1つは、2枚目のカードの上端が1つの左から左にあることです。どのようにこれを修正するための任意のアイデア? –

+0

あなたのカードアートによりますかと思います。リテラルの文字列演算子とキャリッジリターンが使用されています。このキャリッジリターンは分割に入力されます。キャリッジリターンを取り除くことを試みなさい。 – Sunny

関連する問題