我想在游戏结束时将文本居中。现在它位于顶部,我想将它放在屏幕中间
这是我到目前为止的代码及其输出。
{
SoundEffect();
Console.SetCursorPosition(0, 0);
Console.ForegroundColor = ConsoleColor.Red;//Text color for game over
//Assign string output when game is over, player points and enter key
String textGameOver = "Game Over!";
String playerPoints = "Your points are:";
String enterKey = "Press enter to exit the game!";
//Output to show on screen
Console.WriteLine(String.Format("{0," + ((Console.WindowWidth / 2) + (textGameOver.Length / 2)) + "}", textGameOver));
int userPoints = (snakeElements.Count - 4) * 100 - negativePoints;//points calculated for player
userPoints = Math.Max(userPoints, 0); //if (userPoints < 0) userPoints = 0;
//Output to show player score on screen
Console.WriteLine(String.Format("{0," + ((Console.WindowWidth / 2) + (playerPoints.Length / 2)) + "}", playerPoints + userPoints));
SavePointsToFile(userPoints);//saving points to files
//exit game only when enter key is pressed
Console.WriteLine(String.Format("{0," + ((Console.WindowWidth / 2) + (enterKey.Length / 2)) + "}", enterKey));
while (Console.ReadKey().Key != ConsoleKey.Enter) {}
return 1;
}
最佳答案
您需要弄清楚从哪里开始垂直打印线条:
private static void PrintLinesInCenter(params string[] lines)
{
int verticalStart = (Console.WindowHeight - lines.Length) / 2; // work out where to start printing the lines
int verticalPosition = verticalStart;
foreach (var line in lines)
{
// work out where to start printing the line text horizontally
int horizontalStart = (Console.WindowWidth - line.Length) / 2;
// set the start position for this line of text
Console.SetCursorPosition(horizontalStart, verticalPosition);
// write the text
Console.Write(line);
// move to the next line
++verticalPosition;
}
}
用法:
PrintLinesInCenter("hello", "this is a test", "of centered text");
结果:
关于c# - 我想使用 C# 将控制台中的文本水平和垂直居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61378701/