Question

Je suis en train de faire mon premier jeu, un tetris de la console. J'ai un bloc de classe, qui contient des entiers x et y. Ensuite, j'ai un Piece : List<Block> de classe, et une Pieces : List<Piece> de classe.

Je peux déjà générer aléatoirement des morceaux et les faire tomber une ligne par seconde. Je ne ai toujours pas eu à la détection des collisions, mais je pense que je sais déjà comment ça plus tard. Le problème est que je ne sais pas comment contrôler les pièces. J'ai lu la manipulation et comme un peu d'accrochage du clavier et vérifié quelques tutoriels tetris, mais la plupart d'entre eux sont des fenêtres formes, ce qui simplifie vraiment les événements.

Alors ... Pourriez-vous s'il vous plaît me indiquer le début du chemin de contrôler les morceaux sur une console? Merci!

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.
                }
            }
        }
Était-ce utile?

La solution

Ce que vous recherchez est entrée de la console non-blocage.

Voici un exemple:

http: // www .dutton.me.uk / 2009/02/24 / non-blocage de clavier d'entrée en c /

En gros, vous consultez Console.KeyAvailable dans votre boucle while puis déplacer la pièce selon ce que touche a été pressée.


            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;
                }
            }

Autres conseils

Vous pouvez utiliser un clavier bas niveau crochet comme indiqué

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top