2015-11-23 4 views
-3

Это пример, который мы взяли о создании игры с волшебным коробочкой в ​​приложении Console, который должен взять размер от пользователя, а затем создать матрицу размера, который пользователь имеет enterd, заполненный номера, начинающиеся с 1 до размера Acoording к этой роли:Magic box game C#

  • первое число (1) должны быть записаны в первом ряду, в середине седловине
  • тогда мы будем проверять, если недавно введен NUM% размер не равным 0, тогда мы будем мимизировать строку, col и ставим второй номер
  • if (num% size == 0) row ++

Пример вывода экрана размером 3:

enter image description here

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 ?!

+0

Трудно понять ваши требования и так же сложно понять, каков ваш фактический вопрос – musefan

+1

Возможно, потому что 'col * 3 + 25' появляется несколько раз по всему коду. Это чужой код, и вы спрашиваете, почему он написан так, как есть? Я также пытаюсь понять этот вопрос. –

+0

да, это чей-то код, я хочу знать, как работает код формирования, чтобы запустить вывод в этой позиции на рис. –

ответ

0

Это довольно легко:

+25 статическое смещение в положение матрицы в середине экрана. Если вы попытаетесь создать более крупные матрицы (например, 10 x 10), вы увидите на экране, что матрица не центрирована.

col * 3 только что сохранил место из трех символов для каждого номера. Это означает, что ваши цифры не должны превышать 99 или вы не можете отличить два числа, появляющиеся бок о бок.

+1

Мне любопытно об -1. Объясните себе, пожалуйста ..... –

0

Я думаю, что централизует выход дисплея, оставляя промежутки между колоннами

+0

нормально, почему col * 3 not col + 3? –

+0

Поскольку col + 3 просто сдвигает все столбцы на 3, а col * 3 сдвигает каждый столбец на несколько другую величину, оставляя пробел между столбцами.Попробуйте с разными значениями и посмотрите на эффект. – Graham

+0

Я понял! thank u :) –

0

Try распечатывания значения переменных, чтобы проверить, когда и почему они меняют свои значения. Обычно это помогает.

-1

Это потому, что вы хотите написать матрицу в определенном месте на экране.

Это: 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 

The * 3 будет создавать 'вкладку' и + 25 будет перевести его.

+0

Мне любопытно об -1. Объясните себя, пожалуйста? –