我正在进行二十一点游戏,并希望在玩家吸引他们时将卡片显示在彼此旁边。我将卡片保存为卡片对象中的字符串,字符串看起来有点像这样我无法弄清楚如何将它放在这里:
public void CreateDeck()
{
myDeck[0] = new Card(1, "hearts", @"
______________
| A |
| |
| |
| |
| HEARTS |
| |
| |
| A |
|______________|", @"
______________
|//////////////|
|//////////////|
|//////////////|
|//////////////|
|//////////////|
|//////////////|
|//////////////|
|//////////////|
|//////////////|");
心灵的王牌基本上是我想要输出的。我可以输出卡片,但每次输出第二张卡片时都会转到新行,而不是第一张卡片旁边
我希望输出看起来像显示玩家和经销商的手
______________ ______________
| J | | 10 |
| | | |
| | | |
| | | |
| CLUBS | | HEARTS |
| | | |
| | | |
| J | | 10 |
|______________| |______________|
答案 0 :(得分:0)
您可以尝试在绘制时重新绘制整套卡片。将卡片保存在一个集合中(让我们说卡片)用一种输出艺术的方法(在这里覆盖公共ToString)然后你需要通过回车分割并逐行绘制,如下所示。正如其他人所建议的那样,你会发现在Windows应用程序中执行此操作会更容易(更少hacky)。
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();
}