Ir ao conteúdo

Posts recomendados

Postado

E ai pessoal, tudo certo?

Queria entender por quê o cursor se move para a esquerda após um comando que deveria fazer ele mover para um local especifico.

Por exemplo, escrevi um código para mover o cursor em uma matriz de 9 espaços, devendo mover o cursor apenas quando aperto em uma das setas direcionais, porém quando eu aperto uma das setas ele move para o espaço e quando aperto para ir para outro espaço, primeiro ele vai para posição da direita e dai tenho que apertar novamente a tecla para ir pra onde eu quero.

 

Alguem sabe o motivo e se tem alguma solução para isso.

 

O código ta aqui embaixo para testarem.

namespace Teste {
    class Teste {
        static void Main(string[] args) {
            byte i1, i2 = 0;
            char p1 = ' ', p2 = ' ', p3 = ' ', p4 = ' ', p5 = ' ', p6 = ' ', p7 = ' ', p8 = ' ', p9 = ' ';
            string grid1 = "+ - +";
            char grid2 = '|';
            byte h = 11, v = 5;

            // Posição de cada variavel
            Console.SetCursorPosition(7, 3);
            Console.Write(p1);
            Console.SetCursorPosition(11, 3);
            Console.Write(p2);
            Console.SetCursorPosition(15, 3);
            Console.Write(p3);

            Console.SetCursorPosition(7, 5);
            Console.Write(p4);
            Console.SetCursorPosition(11, 5);
            Console.Write(p5);
            Console.SetCursorPosition(15, 5);
            Console.Write(p6);

            Console.SetCursorPosition(7, 7);
            Console.Write(p7);
            Console.SetCursorPosition(11, 7);
            Console.Write(p8);
            Console.SetCursorPosition(15, 7);
            Console.Write(p9);


            // Desenha o quadro
            // Horizontal
            for (i1 = 5; i1 <= 13; i1 += 4) {
                // Vertical
                for (i2 = 2; i2 <= 8; i2 += 2) {
                    Console.SetCursorPosition(i1, i2);
                    Console.Write(grid1);
                }
            }
            // Horizontal
            for (i1 = 5; i1 <= 19; i1 += 4) {
                // Vertical
                for (i2 = 3; i2 <= 8; i2 += 2) {
                    Console.SetCursorPosition(i1, i2);
                    Console.Write(grid2);
                }
            }

            // Seta o cursor no centro do quadro
            Console.SetCursorPosition(h, v);


            
            do {

                switch (Console.ReadKey().Key) {
                    
                    // Caso seja pressionado a seta direita, move o cursor pra direita
                    case ConsoleKey.RightArrow:
                        h += 4;
                        if (h > 15) { h = 15; }
                        Console.SetCursorPosition(h, v);
                        break;
                    // Caso seja pressionado a seta esquerda, move o cursor para esquerda
                    case ConsoleKey.LeftArrow:
                        h -= 4;
                        if (h < 7) { h = 7; }
                        Console.SetCursorPosition(h, v);
                        break;
                    // Caso seja pressionado a seta para cima, move o cursor para cima
                    case ConsoleKey.UpArrow:
                        v -= 2;
                        if (v < 3) { v = 3; }
                        Console.SetCursorPosition(h, v);
                        break;
                    // Caso seja pressionado a seta para baixo, move o cursor para baixo
                    case ConsoleKey.DownArrow:
                        v += 2;
                        if (v > 7) { v = 7; }
                        Console.SetCursorPosition(h, v);
                        break;
                    // Caso seja pressionado enter, passa o valor 'X' para a variavel que está naquele local
                    case ConsoleKey.Enter:
                        switch (v) {
                            case 3:
                                switch (h) {
                                    case 7:
                                        p1 = 'x';
                                        Console.Write(p1);
                                        break;
                                    case 11:
                                        p2 = 'x';
                                        Console.Write(p2);
                                        break;
                                    case 15:
                                        p3 = 'x';
                                        Console.Write(p3);
                                        break;
                                }
                                break;
                            case 5:
                                switch (h) {
                                    case 7:
                                        p4 = 'x';
                                        Console.Write(p4);
                                        break;
                                    case 11:
                                        p5 = 'x';
                                        Console.Write(p5);
                                        break;
                                    case 15:
                                        p6 = 'x';
                                        Console.Write(p6);
                                        break;
                                }
                                break;
                            case 7:
                                switch (h) {
                                    case 7:
                                        p7 = 'x';
                                        Console.Write(p7);
                                        break;
                                    case 11:
                                        p8 = 'x';
                                        Console.Write(p8);
                                        break;
                                    case 15:
                                        p9 = 'x';
                                        Console.Write(p9);
                                        break;
                                }
                                break;
                        }
                        break;
                }


            } while (Console.ReadKey().Key != ConsoleKey.Q); // Apertando 'Q' será encerrado o programa
        }
    }
}

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...