C# Console Application-ben szettnék időkorlátos szövegbevitelt csinálni. Van erre valami egyszerű megoldás?
Ááá értem merthogy egy "snake" stílusú játékot szeretnék csinálni csak annyi változtatással ha a kígyó felvesz 1 pontot akkor nem nő csak számolja hogy hány pontom van. És ebbe amikor a kígyó épp vár h tovább lépjen
ha beütöm mondjuk a "w" akkor onnantól felfele mozogjon de ha nem ütök be semmit folytatja a mozgását.
if(Console.KeyAvailable)
key = Console.ReadKey();
Igen. Most megírtam anélkül hogy időkorlátos legyen a betű bevitel most próbálok utána olvasni hogy hogy is működi ez a Szálkezelés
Úgy olvasom hogy ez kell hoozá: Thread t = new Thread();
csak azt nem tudom hogy mit kel írni a zárójelbe
Hát annál kicsit összetettebb a probléma, hogy a "zárójelbe mit kell írni".
Szerintem még ne erőltesd a dolgot, ha még ennyire az elején vagy.
Szerintem ezt a legegyszerűbben egy Timer-el tudod megoldani.
Csináltam most egy egyszerű példát, hogy értsd:
using System;
using System.Timers;
namespace ConsoleApplication1
{
class Program
{
static string direction;
static void Main(string[] args)
{
Timer timer = new Timer(3000);
timer.Elapsed += Timer_Elapsed;
timer.Start();
direction = "jobbra";
ConsoleKeyInfo inputKey;
do
{
inputKey = Console.ReadKey(true);
switch (inputKey.Key)
{
case ConsoleKey.W:
direction = "fel";
break;
case ConsoleKey.S:
direction = "le";
break;
case ConsoleKey.D:
direction = "jobbra";
break;
case ConsoleKey.A:
direction = "balra";
break;
default:
break;
}
if (inputKey.Key == ConsoleKey.W || inputKey.Key == ConsoleKey.S || inputKey.Key == ConsoleKey.A || inputKey.Key == ConsoleKey.D)
{
timer.Interval = 3000;
Move();
}
}
while (inputKey.Key != ConsoleKey.Escape);
}
private static void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
Move();
}
public static void Move()
{
Console.WriteLine(direction);
}
}
}
(Remélem olvasható, ha nem akkor megosztom máshogy.)
Annyi az egész, hogy a Timer ebben a példában 3 másodpercenként elindítja a Timer_Elapsed függvényt, ez pedig meghívja a Move-t, ami ugye a kígyó mozgását reprezentálja. Viszont közben folyamatosan figyeled a lenyomott billentyűket (Esc-nél kilép). Ha olyan gombot nyomtál le, ami iránygomb, akkor a gombnak megfelelően beállítja a mozgás irányát, meghívja a Move-t és a Timer "lefutási idejét" visszaállítja 3 másodpercre.
Óóó ez király :D
ezt betudom most építeni a nekem meglévőbe :D
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!