C#のコンソールテトリスプログラミング。駒が動く作りますか?
質問
私は私の最初のゲーム、コンソールテトリスを作るしようとしています。
私は、xとyの整数を含むクラスのブロックを、持っています。それから私は、クラスPiece : List<Block>
、およびクラスPieces : List<Piece>
を持っています。
私はすでにランダムに断片を生成し、それらを秒ごとに1つの行を落ちることができます。私はまだ、衝突検出に取得していないが、私はすでに、後でそれをうまくする方法を知っていると思います。 問題は、私は作品を制御する方法がわからないということです。私は、キーボードフックについて少し読んで、いくつかのテトリスのチュートリアルを確認し、それらのほとんどは、実際にイベントハンドリングなどを簡素化するWindowsフォーム、のためのものであるしました。
だから... ...あなたは私のコンソール上の部分を制御するパスの先頭を指していただけますか?ありがとう!
public class Program
{
static void Main(string[] args)
{
const int limite = 60;
Piezas listaDePiezas = new Piezas(); //list of pieces
bool gameOver = false;
Pieza pieza; //piece
Console.CursorVisible = false;
while (gameOver != true)
{
pieza = CrearPieza(); //Cretes a piece
if (HayColision(listaDePiezas, pieza) == true) //if there's a collition
{
gameOver = true;
break;
}
else
listaDePiezas.Add(pieza); //The piece is added to the list of pieces
while (true) //This is where the piece falls. I know that I shouldn't use a sleep. I'll take care of that later
{
Thread.Sleep(1000);
pieza.Bajar(); //Drop the piece one row.
Dibujar(listaDePiezas); //Redraws the gameplay enviroment.
}
}
}
解決
あなたが探していることは非ブロッキングコンソール入力されます。
ここでは一例であります:
のhttp:// WWW .dutton.me.uk / 2009/02/24 W /非ブロッキング・キーボード入力・イン・C / の
基本的に、あなたがチェックします Console.KeyAvailableするあなたのwhileループにして、キーが押されたものに応じて作品を移動します。
if (Console.KeyAvailable)
{
ConsoleKeyInfo cki = Console.ReadKey();
switch (cki.Key)
{
case ConsoleKey.UpArrow:
// not used in tetris game?
break;
case ConsoleKey.DownArrow:
// drop piece
break;
case ConsoleKey.LeftArrow:
// move piece left
break;
case ConsoleKey.RightArrow:
// move piece right
break;
}
}
他のヒント
所属していません StackOverflow