Условно... Нужно написать программу для консоли, которая будет показывать числа от 1 до 8 и показывало некоторое время, то есть Thread.Sleep(100) условно.. Но только если клавиша зажата. Недостаток в том, что пока программа "спит" 100 миллисекунд консоль продолжает получать нажатия. И если отпустить клавишу, то программа все равно будет и дальше показывать числа... Можно ли как-то сделать, чтобы программа начинала показывать числа с Ожиданием и сразу же прекращала при отпускании клавиши?
На самом деле у меня поехала крыша и я хочу сделать игру в консоли, не спрашивайте зачем :D, но вот что пока вышло сделать (сори, если там где-то криво, я в первый раз пользуюсь сайтом. Но надеюсь, вы поймете суть кода...)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ConsoleApp6
{
class Program
{
static public void Frame_Show(int n)
{
if (n == 1)
{
Frame_1(1);
}
if (n == 2)
{
Frame_2(1);
}
if (n == 3)
{
Frame_3(1);
}
if (n == 4)
{
Frame_4(1);
}
if (n == 5)
{
Frame_5(1);
}
if (n == 6)
{
Frame_6(1);
}
if (n == 7)
{
Frame_7(1);
}
if (n == 8)
{
Frame_8(1);
}
Thread.Sleep(100);
Console.Clear();
}
static public void Frame_1(int n)
{
Console.SetCursorPosition(5, 5);
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write("1");
}
static public void Frame_2(int n)
{
Console.SetCursorPosition(5, 5);
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write("2");
}
static public void Frame_3(int n)
{
Console.SetCursorPosition(5, 5);
Console.Write("3");
}
static public void Frame_4(int n)
{
Console.SetCursorPosition(5, 5);
Console.Write("4");
}
static public void Frame_5(int n)
{
Console.SetCursorPosition(5, 5);
Console.Write("5");
}
static public void Frame_6(int n)
{
Console.SetCursorPosition(5, 5);
Console.Write("6");
}
static public void Frame_6(int n)
{
Console.SetCursorPosition(5, 5);
Console.Write("6");
}
static public void Frame_7(int n)
{
Console.SetCursorPosition(5, 5);
Console.Write("7");
}
static public void Frame_8(int n)
{
Console.SetCursorPosition(5, 5);
Console.Write("8");
}
static void Main(string[] args)
{
int n = 1;
Console.SetWindowSize(80, 30);
Console.SetBufferSize(80, 30);
Console.CursorVisible = false;
ConsoleKey key;
while (1 > 0)
{
if (Console.KeyAvailable == true)
{
key = Console.ReadKey(true).Key;
if (key == ConsoleKey.RightArrow)
{
Frame_Show(n);
n++;
if (n == 9)
{
n = 1;
}
}
}
}
}
}
}
if (!Console.KeyAvailable) Console.Write(0); else while ...– aepot Apr 17 '21 at 14:40