【问题标题】:c# two cursors in a console application gamec#控制台应用程序游戏中的两个光标
【发布时间】:2020-09-03 21:02:43
【问题描述】:

我正在尝试在 C# 控制台应用程序中制作蛇游戏。

using System.Reflection;

namespace First_console_game
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            int redo = 0;
            Byte Foods = 0;
            Byte Flops = 0;
            int x = 10, y = 20;
            int Foodx = rnd.Next(1, 200);
            int Foody = rnd.Next(1, 175);
            ConsoleKeyInfo keyInfo;
            do
            {
                keyInfo = Console.ReadKey(true);

                //Console.SetCursorPosition(Foodx, Foody); This is the position of the food cell, and this is the part where it doesn't work. 

                Flops += 1;
                if (Flops == 5)
                {
                    Console.Clear();
                    Flops = 0;
                }



                switch (keyInfo.Key)
                {
                    case ConsoleKey.RightArrow:
                        x += 1;
                        Console.SetCursorPosition(x, y);
                        Console.Write("x");
                        break;
                    case ConsoleKey.LeftArrow:
                        x--;
                        Console.SetCursorPosition(x, y);
                        Console.Write("x");
                        break;
                    case ConsoleKey.UpArrow:
                        y -= 1;
                        Console.SetCursorPosition(x, y);
                        Console.Write("^");
                        break;
                    case ConsoleKey.DownArrow:
                        y += 1;
                        Console.SetCursorPosition(x, y);
                        Console.Write("x");
                        break;


                }

            } while (redo == 0);
            Console.ReadLine();
        }
    }
}

在游戏中,我想要两个光标。一个用于食物,一个用于玩家。

但很明显,我不能使用Console.SetCursorPosition(Foodx, Foody),因为这会使玩家在屏幕上四处游荡,从而搞砸游戏。

那么如何添加一个单独的光标呢? 谢谢。

【问题讨论】:

  • 您可能希望以比控制台更图形化的方式执行此操作。我怀疑您可以通过伪造控制台输入行来做到这一点。当您的程序运行时,使用 (/poll) Console.KeyAvailable 来确定用户是否按下了某个键。如果他/她有,请使用Console.ReadKey(false) 阅读它(不会将键回显到屏幕上)。如果要回显该键,请移至您希望它出现的位置并将其写入屏幕。然后回到屏幕周围蛇行
  • 那么如何添加单独的光标?这是不可能的。

标签: c# visual-studio console console-application


【解决方案1】:

Re:“但显然,......” - 这一点都不明显!您可以在此处设置光标并输出一些“食物”字符,例如* 或F。

光标在你的游戏中没有任何作用,所以你可以用

隐藏它
Console.CursorVisible = false;

【讨论】:

  • 右...移动光标,绘制。再次移动光标,绘制。这将发生得如此之快,以至于似乎同时在做两件不同的事情。但要完成幻觉,请隐藏该光标。
  • 好的。谢谢,但是我该如何总结这段代码呢?抱歉,我对 c# 了解不多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多