2011-12-10 13 views
0

私はコンソールに十字を描いています。私のコードは次のとおりです。コンソールカーソル位置に書き込む

for (int x = 0; x < 320; x++) 
{ 
    for (int y = 0; y < 100; y++) 
    { 
     Console.SetCursorPosition(Convert.ToInt32(x/4),Convert.ToInt32(y/4)); 

     if (x == 160) 
     { 
      if (y == 50) 
      { 
       Console.Write("┼"); 
      } 
      else 
      { 
       Console.Write("│"); 
      } 
     } 
     else 
     { 
      if (y == 50) 
      { 
       Console.Write("─"); 
      } 
     }      
    }    
} 

コンソールは、中央の「*」記号以外の十字を描きます。私がプログラムをデバッグしたとき、それはConsole.Write("┼");行に当たった。代わりに、プログラムは "─"記号を書いた。私が間違ってやっていること、そしてこの問題を解決する方法は?

答えて

4

問題あなたが(ATクロスを記述する場合(x、y)は(160、50)であるもしので、あなたが4

によって分割部のそれぞれの場所に複数回を書いていることであると思われます40,12)。次に(x、y)は(160、51)なので、同じ場所に垂直パイプを書き、十字を上書きします。その後、(x、y)が(161,50)になると、パイプがダッシュで上書きされます。

代わりにこれを試してみてください:私のプログラムは、より大きな値を表示できるようにするに

for (int x = 0; x < 80; x++) 
{ 
    Console.SetCursorPosition(x, 12); 
    Console.Write("─"); 
} 

for (int y = 0; y < 25; y++) 
{ 
    Console.SetCursorPosition(40, y); 
    Console.Write("|"); 
} 

Console.SetCursorPosition(40, 12); 
Console.Write("┼"); 
+0

分割が不可欠です。それ以外の方法はありませんか? – Cobold

+0

@Cobold簡単な数学以上に何が必要ですか? –

+0

@ L.Bグラフをプロットしているので、(80,25)より大きい値が必要です。 – Cobold

関連する問題