
C# - Problémy grafického rázu u hry co běží v konzoli (cmd)
Měl bych dotaz ohledně naprogramování "grafického" rozhraní u konzole v C#-u
Právě pracuju na jedné hře a zarazily mě dva problémy, se kterými se nevím rady
Ten první je nastavení pozice metody "Console.ReadLine()"
Chtěl bych ho totiž dostat např. doprostřed obrazovky, ale ne a ne ho tam dostat. Vždycky se mrcha dostane zpět na levý okraj.
Druhým problémem je "grafické rozhraní" mé hry.
Představoval jsem si to jako tři okna vedle sebe (2 čtverce a pod nimi úzký obdelník) a každé by plnilo svou funkci. Všechny by byly updateované na konci uživatelského vstupu a uživatel by interagoval pouze s jedním. Všechny by měly svou vlastní třídu a všechny by měli instanci v nějaké vyšší třídě, která by je vykreslovala a brala by od uživatele vstupní info.
Děkuji za každou odpověď.
1) odsazení můžeš udělat třeba pomocí mezer
2) popsal jsi jak to chceš dělat, ale ne s čím máš vlastně problém
špatně jsem se vyjádřil :)
U toho druhého mám problém s tím, jak to navrhnou, tak aby to sedělo a nedělalo neplechu, ještě jsem to nesepisoval
Jo a odsazení mezer jsem zkoušel, ale řekl bych, že stejně jako Console.WriteLine, tak Console.ReadLine vždy poskočí o řádek níž a Console.Read je pouze pro proměnou "char"
To musíš vědět ty, jak to navrhnout. Napsal jsi to tak obecně, že se nic konkrétnějšího poradit nedá.
Ještě můžeš použít Console.ReadKey()
Já zapomněl zmínit, že potřebuji Console.ReadLine(), kvůli tomu, že chci string a ne char (uživatel si vypisuje své jméno)
Tak to můžeš udělat úplně nejobecněji a číst přímo ze stdin.
Console.OpenStandardInput()
Pro psaní na libovolnou pozici můžeš použít kombnaci metod Console.SetCursorPosition a Console.Write. Ideálně ještě za použití vlastností Console.WindowHeight a Console.WindowWidth.
Dam ti dobre mienenu radu. Prestan mrhat drahocenny cas snahou o vytvorenie porsche na baze bambusovych tyciek.
Tu moji "hru" bych jako porsche neoznacoval :D
A rekl bych, ze o C# programatory je a mozna i do budoucna bude zajem a clovek se nejvic uci hranim, takze... :)
Ale dobre, pokud bych timto nemel mrhat cas, tak cim? Programovat porad dokola nejake male programy a s kazdym se naucit neco noveho? Jak bych to potom vyuzil.
Jako plan do budoucna mam takovy, ze bych hotovy kod ukazal memu uciteli, ktery se v C#-u vyzna a od nej si nechat vytknout chyby a neco se priucit :)
Hru si klidně programuj, ale proč v textovém režimu? Budeš muset řešit spoustu problémů, což samo o sobě není nic špatného, ale musí ti to také něco dát. A tohle ti dá jenom to, co v praxi už nejspíš nikdy nepoužiješ.
Osobne myslim, ze clovek se uci uz jenom z toho, kdyz vymysli ten kod.
Vim, ze vetsinu toho co se naucim v tom textaku uz nepouziju, ale ta hra je navrhnuta do textaku :)
Ale správně navržený kód se pozná mimo jiné tím, že samotná logika aplikace je zcela oddělena od uživatelského rozhraní.
Programuj to ako normalnu oknovu aplikaciu. Naucis sa tym omnoho potrebnejsie veci jak presuvat kurzor v konzole (co je nezmysel uz z principu konzoly = dalekopis)
A ked uz silou mocou chces konzolu tak nepouzivaj systemove volania ktore ti nevyhovuju (ako napr. ten ReadLine) a nesnaz sa z nich mackat to na co neboli nikdy urcene a co z nich pravdepodobne ani nikdy nevymackas ptz ich programator ich nenaprogramoval na take harakiri, ale urob si to sam (testovanim stlacenia klaves alebo eventami na klavesu a vykreslovanim pismen samostatne apod)