

c# Switch - default - když není stisknuté tlačítko
Dobrý den!
Mám hru Had - kde ve Switchi si vlastně hlídám co je zmáčknuto za tlačítko a podle toho se had pohybuje. Mám ale problém, že když se zmáčkne jakékoliv jiné tlačítko - had se zastaví na místě. Chtěl bych, aby když se zmáčkne jiné tlačítko, aby had pokračoval v tom směru, ve kterém běžel.
private ConsoleKeyInfo Pohyb(ConsoleKeyInfo key1)
{
this.key1 = key1;
switch (key1.Key)
{
case ConsoleKey.UpArrow:
{
}
case ConsoleKey.DownArrow:
{
}
case ConsoleKey.LeftArrow:
{
}
case ConsoleKey.RightArrow:
{
}
case ConsoleKey.R:
Restart();
break;
case ConsoleKey.P: // Pauza
break;
default:
goto ;
}
return key1;
}
Zřejmě je potřeba to hodit do 'default' - ale nevim právě přesně co.
Děkuji za každou radu.
Zapamatuj si poslední stisknutou klávesu a podle toho znovu proveď příslušnou akci.
poslední stisknutou klávesu mam uloženou v tom key1 - problém je, že nevím jak to implementovat v tom Switchi
Nejdřív zkontroluj současnou klávesu a když se nechytne, tak původní stisknutou.
Tady kecam no :D protože v key1 mam uloženou aktuální stisknutou klávesu ...
Díky!
Už se mi to povedlo zporovznit ...
uplně pak mimo pod tim Switchem samozřejmě musím mít
Není to zrovna elegantní, ale tak proč ne.
To není no ... vzhledem k tomu, že používám to samé ještě na jednom místě.
Možná jsem ne uplně pochopil, co jste myslel vy.
Chápu, že máte asi práce dost :D - nemohl byste torchu blíže nastínit tu vaši myšlenku v kódu?
Ja teda netuším ako máš vyriešený pohyb hada.
Myšlienka, princíp:
Had sa pohybuje stále nejakým smerom, až kým sa nestlačí nejaká klávesa, ktorá zmení jeho pohyb.
Otestuješ aká klávesa bola stlačená - na základe toho zmeníš pohyb hada.
Takže nechaj hada hadom a až sa stlačí príslušná klávesa - zmeň pohyb, ak sa stlačí nejaká iná klávesa, ktorá Ťa nezaujína - ignoruj (nevykonaj zmenu pohybu) = had pokračuje ďalej bez zmeny.
Třeba tak:
Ked je program spravne strukturovany tak nepotrebujes goto. Z toho vyplyva ze tvoje aktualne zdrojaky budu asi chaos.
(a problem chaosu je ten, ze zmenis jedno a zabudnes zmenit to druhe, napr. pridas dalsiu klavesu a zabudnes pridat goto ptz je to na inom mieste. Z toho dovodu by mal SW vyvojar sa snazit nerobit veci redundantne, testy klavesy mas mat len na jednom mieste v tych case, a ne zas kdesi inde v nejakych goto. A ked to potrebujes testovat 2x, tak si tam das trebars nejaky cyklus od 0 do 1, alebo nekonecny cyklus a pouzijes break ked si klavesu otestoval, apod.
.. alebo dat ten test do fcie ako to urobil wikan a volat tu fciu druhykrat s povodnou klavesou podla toho co vratila. vseobecne ale test na klavesu sa robi uplne inac, na jednej strane mas reagovat na stlacenie klavesy okamzite (a nic pri tom nevykreslovat), a na strane druhej hada mas vykreslovat ako event od timera, a ne ako event na stlacenie klavesy.
• Had
• Input
Mockrát všem děkuju ... pomohli jste mi uvědomit si zase pár věcí :)