C# 对齐多行字符串c控制台应用程序
我正在制作一个21点游戏,并希望在玩家抽牌时将这些牌彼此相邻显示。我将卡片保存为卡片对象中的字符串,字符串看起来有点像这样,我不知道如何将其放在这里:C# 对齐多行字符串c控制台应用程序,c#,console-application,vertical-alignment,C#,Console Application,Vertical Alignment,我正在制作一个21点游戏,并希望在玩家抽牌时将这些牌彼此相邻显示。我将卡片保存为卡片对象中的字符串,字符串看起来有点像这样,我不知道如何将其放在这里: public void CreateDeck() { myDeck[0] = new Card(1, "hearts", @" ______________ | A | | | | | | | | HEARTS
public void CreateDeck()
{
myDeck[0] = new Card(1, "hearts", @"
______________
| A |
| |
| |
| |
| HEARTS |
| |
| |
| A |
|______________|", @"
______________
|//////////////|
|//////////////|
|//////////////|
|//////////////|
|//////////////|
|//////////////|
|//////////////|
|//////////////|
|//////////////|");
心的王牌基本上就是我想要输出的。我可以输出卡,但每次我输出第二张卡时,它都会转到一个新行,而不是第一张卡的旁边
我希望输出像这样显示玩家和经销商的手
______________ ______________
| J | | 10 |
| | | |
| | | |
| | | |
| CLUBS | | HEARTS |
| | | |
| | | |
| J | | 10 |
|______________| |______________|
您可以尝试在绘制时重新绘制整套卡片。将这些卡片保存在一个集合中,比如说,卡片有一种输出艺术的方法,在这里凌驾于public ToString之上,然后您将需要按回车进行拆分,并按如下所示逐行绘制。正如其他人所建议的那样,你会发现在Windows应用程序中这样做要容易得多
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();
}
对于您可以使用的控制台应用程序,但似乎带有网格控件的windows应用程序要容易得多。请共享一些显示卡类和字符串显示方式的代码。我不知道您的意思是:相邻输出多个ascii卡?你必须展示一些可以借鉴的东西。你希望你的输出看起来像什么,你尝试过哪些不起作用的东西?不能通过这个问题告诉你想要什么,但可能是string.Format{0,10},cardString;将字符串设置为10个字符或任意多个字符。这非常有用,谢谢!但有一个问题,第二张牌的顶部离它应该在的位置还有一个空间。你知道怎么解决这个问题吗?我想这可能取决于你的卡片艺术。您使用的是文本字符串运算符,后跟回车符,回车符被输入到拆分中。试着摆脱马车返回。