none
Verificação de código, como resolver RRS feed

  • Pergunta

  • Preciso validar 3 coordenadas registradas pelo cursor do mouse, no caso eu consegui, mas queria q o código continuasse somente se a pessoa apertasse a tecla INSERT, mas quando é apertada qualquer tecla o código continua :( , teria como eu diminuir o código? deixar ele menor ? com alguma estrutura de repetição tb?
                Console.WriteLine($"\n\n#1 - Move the mouse pointer over the white fish icon and press the Insert key.");
                if (Console.ReadKey().Key == ConsoleKey.Insert)
                {
                    POINT coordinate;
                    GetCursorPos(out coordinate);
                    coordinates.Add(coordinate);
                }
    
                Console.WriteLine($"\n#2 - Move the mouse pointer over the river and press the Insert key.");
                if (Console.ReadKey().Key == ConsoleKey.Insert)
                {
                    POINT coordinate;
                    GetCursorPos(out coordinate);
                    coordinates.Add(coordinate);
                }
    
                Console.WriteLine($"\n#3 - Move the mouse pointer over the battlefield and press the Insert key.");
                if (Console.ReadKey().Key == ConsoleKey.Insert)
                {
                    POINT coordinate;
                    GetCursorPos(out coordinate);
                    coordinates.Add(coordinate);
                }
    //tem como adicionar alguma estrutura de repetição para diminuir o código?
    // gostaria que o programa validasse a tecla INSERT, deixando o usuário prosseguir somente após telcar INSERT, se não, o programa teria q solicitar para ele apertar INSERT!

    segunda-feira, 27 de maio de 2019 19:52

Respostas

  • Olá, Gabriel! Segue um exemplo:

    using System.Collections.Generic;
    using System.Runtime.InteropServices;
    using System.Linq;
    using System;
    
    namespace CoordenadasMouseConsole
    {
        class Program
        {
            static void Main(string[] args)
            {
                int i = 0;
    
                // Lista para armazenar coordenadas
                List<POINT> coordinates = new List<POINT>();
                // Lista para armazenar as mensagens
                List<string> messages = new List<string>();
                messages.Add("\n\n#1 - Move the mouse pointer over the white fish icon and press the Insert key.");
                messages.Add("\n#2 - Move the mouse pointer over the river and press the Insert key.");
                messages.Add("\n#3 - Move the mouse pointer over the battlefield and press the Insert key.");
    
                while(i < messages.Count())
                {
                    POINT coordinate;
                    Console.WriteLine(messages.ElementAt(i));
                    if (Console.ReadKey().Key == ConsoleKey.Insert)
                    {
                        GetCursorPos(out coordinate);
                        coordinates.Add(coordinate);
                        i++;
                    }
                    else
                        Console.WriteLine("Sorry, you need to press the INSERT KEY to continue!");
                }
    
                // Show coordinates
                foreach(var coordinate in coordinates)
                {
                    Console.WriteLine($"({coordinate.X}, {coordinate.Y})");
                }
            }
    
            // Importa a dll user32, a qual contém o método que 
            // captura a coordenada do ponteiro do mouse
            [DllImport("user32.dll")]
            static extern bool GetCursorPos(out POINT lpPoint); // Define qual função será chamada da dll
    
            // Define um struct para armazenar as coordenadas do ponteiro do mouse 
            public struct POINT
            {
                public int X;
                public int Y;
            }
        }
    }


    “First do it, then do it right, then do it better.”

    segunda-feira, 27 de maio de 2019 20:41