【问题标题】:Magic box game C#魔盒游戏C#
【发布时间】:2015-11-23 11:59:20
【问题描述】:

这是我们在控制台应用程序中构建魔术盒游戏的示例,它应该从用户那里获取大小,然后生成用户输入的大小的矩阵,填充以 1 开头的数字适合这个角色的大小:

  • 第一个数字(1)应该写在第一行的中间列
  • 然后我们将检查最近输入的 num % size 是否不等于 0;然后我们将最小化行、列并放入第二个数字
  • if (num% size ==0) row++

大小为 3 的输出屏幕示例:

Console.Clear();
int number;

do
{
    Console.Write("Please Enter Odd Number :");
    number=int.Parse(Console.ReadLine());
} while (number % 2 == 0);

Console.Clear();
Console.SetCursorPosition(25, 3);

int col = 0;
int row = 1;
double x = (number / 2) + 1;
col = (int)x;

Console.SetCursorPosition(col*3 + 25, row + 3);
Console.Write(1);

for (int i = 1; i < number*number; i++)
{
    if (i % number != 0)
    {
        if (col==1)
        {
            col = number;
        }
        else
        {
            col--;
        }

        if (row == 1)
        {
            row = number;
        }
        else
        {
            row--;
        }

        Console.SetCursorPosition(col*3 + 25, row+3);
        Console.Write(i+1); 
    }
    else if (i % number == 0)
    {
        if (row == number)
        {
            row = 1;
        }
        else
        {
            row++;
        }

        Console.SetCursorPosition(col *3+ 25, row + 3);
        Console.Write(i+1); 
    }
}

Console.SetCursorPosition(27, 27);

我真正不明白的是,当我们设置位置时,为什么它是多次 col 乘以 3+ 25?!

【问题讨论】:

  • 很难理解您的要求,也很难理解您的实际问题是什么
  • 可能是因为col*3 + 25 在整个代码中多次出现。这是别人的代码吗?你问为什么要这样写?我也很难理解这个问题。
  • 是的,这是别人的代码,我想知道格式化代码是如何在图片中的这个位置运行输出的?
  • 整个代码中的位置有 25...所以我猜 25 是矩阵表在屏幕上绘制的“开始”位置。
  • 我认为是这样,但我不明白为什么它在 col 集合位置使用多个,以及为什么在行中求和

标签: c# console


【解决方案1】:

这很容易:

+25 是用于将矩阵定位在屏幕中间的静态偏移量。如果您尝试生成更大的矩阵(例如 10 x 10),您会在屏幕上看到矩阵未居中。

col * 3 只是为每个数字保留了三个字符的位置。这意味着您的数字不应大于 99,否则您无法区分并排显示的两个数字。

【讨论】:

    【解决方案2】:

    我认为这样可以集中输出显示,在列之间留下间隙

    【讨论】:

    • 因为 col+3 只是将所有列移动了 3,而 col*3 将每列移动了稍微不同的量,从而在列之间留出了空间。尝试不同的值,看看效果。
    【解决方案3】:

    尝试打印出变量的值,以检查它们何时以及为何更改其值。它通常会有所帮助。

    【讨论】:

      【解决方案4】:

      这是因为你想在屏幕的某个位置写矩阵。

      这个:Console.SetCursorPosition(col*3 + 25, row + 3);

      将第一个元素放在:

      x = 1*3 + 25 = 28
      y = 1 + 3 = 4
      

      下一个地点:

      x = 2*3 + 25 = 28
      y = 1 + 3 = 4
      

      *3 将创建一个“标签”,+25 将翻译它。

      【讨论】:

      • 我对 -1 很好奇。请解释一下自己?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多