Diskuze: Karel the Robot

C# .NET .NET (C# a Visual Basic) Karel the Robot American English version English version

Avatar
Зайчик
Člen
Avatar
Зайчик:

Hoj, hele mám takový problém potřebuju teď do školy napsat Karla a nevím jak na to. Když jsem to dělal v jazyce C tak sem nemusel vlastně nic řešit.. příkazy jsem psal za sebe a normálně to fungovalo :) ale v C# nevím jak bych udělal vlastně když napíšu víc příkazů naráz tak aby se provedli všechny ...

if(nejakejstring == "krok")
// tak se provede ten krok

no ale jak udělat aby fungovalo když zadám
krok
krok
krok
poloz
krok
krok
? nebo tak něco? asi bych to videl jako projektí nějakého Tboxu cyklem každý řádek nebo já nevím :D možná něco jako

while(nejakejstring != null)
{
    //.... ale tady vlastně nevím co bych jako jak načítat každej řádek textboxu...
}

Předem díky za pomoc.

Odpovědět 3.12.2012 17:49
Коммунизм для нашего будущего!
Avatar
Odpovídá na Зайчик
David Jančík [sczdavos]:

Si ty příkazy naskládej do listu a pak je projeď cyklem.

List<string> prikazy = new List<string>();
prikazy.Add("krok");
prikazy.Add("poloz");
prikazy.Add("krok");

foreach (string prikaz in prikazy)
...
Nahoru Odpovědět 3.12.2012 17:52
Čím více času dostaneš, tím méně ho máš.
Avatar
Зайчик
Člen
Avatar
Nahoru Odpovědět 3.12.2012 18:05
Коммунизм для нашего будущего!
Avatar
matesax
Redaktor
Avatar
Odpovídá na Зайчик
matesax:

Já bych příkazy řešil pomocí enum - ukládal bych si int příkazu. Toto int bych pak používal k mapování...

 
Nahoru Odpovědět 3.12.2012 18:41
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
Kit:

Nezapomeň, že mu časem přibudou podmínky a rekurze. Místo seznamu bych raději hned od počátku použil strom. V tuto chvíli budou levé větve prázdné, ale to se brzy změní.

Nahoru Odpovědět 3.12.2012 19:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Зайчик:

tak základ mám hotový (krok,vlevo,stě­ny,list) vše funguje skvěle... ale teď mám problém potřebuju "když zadám příkaz polož" tak aby mi to vlastně položilo cihlu... v C jsem to dělal přes pole že sem zapsal bod XY do pole a při každém kroku jsem pole vykresloval... v C# bohužel mi tohle asi neprojde jelikož pohybuju vlastně obrázkem 45x45... přemýšlel jsem že bych vytvářel nové třeba picture boxy za běhu programu ale vůbec netuším jak takový objekt za běhu vytvořit... nikdy jsem to nedělal :( pomohl by mi někdo jak na to? Nebo jestli je nějaký jednoduší způsob?:)

Nahoru Odpovědět 3.12.2012 22:34
Коммунизм для нашего будущего!
Avatar
matesax
Redaktor
Avatar
Odpovídá na Зайчик
matesax:

Tak znovu - udělej si enum příkazů - a do listu si ukládej int položek. Toto int použij jako index v poli obrázků k vykreslení... Pokud by jsi chtěl víc než rozhodování, který obrázek vykreslit, tak větvi switchem...

 
Nahoru Odpovědět 4.12.2012 9:01
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Зайчик
David Čápka:

Podobný problém se tu již řeší hrozně dlouho a překvapuje mě, co se tu vymýšlí. Pokud máš nějaký prostor v rovině, tak si na něj prostě udělej 2d pole. Na jednotlivá políčka si poté ukládej cihly, spínače, prostě co chceš. Jednoduchou funkcí nalezneš políčko před Karlem podle jeho pozice a směru. Na příkazy bych také použil enum. Jelikož jich je málo, jejich interpretace je triviální.

Nahoru Odpovědět 4.12.2012 10:54
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Зайчик
Člen
Avatar
Зайчик:

Díky díky... už mám Karla hotového. Každopádně mám ještě jednu.. nesouvísející otázku. Mám v Resources obrázky a pomocí

this.icon1.BackgroundImage = global::Avocado.Properties.Resources.clock;

je měním. Ale je jich docela dost a potřeboval bych název načíst ze souboru... vlastne aby se načetlo global::Avoca­do.Properties­.Resources.cloc­k; a napsal bych jen

this.Icon1.BackgroundImage = mujstring;

Ale stringy mi to nebere poradil by mi někdo jak to udělat? :) Bylo mi řečeno že to jde :D ale nemám pomotí jak... hodně by ste mi pomohli kdyby mi někdo poradil. Díky

Nahoru Odpovědět 4.12.2012 21:53
Коммунизм для нашего будущего!
Avatar
Зайчик
Člen
Avatar
Odpovídá na Зайчик
Зайчик:

this.icon1.Bac­kgroundImage = (Image)Proper­ties.Resources­.ResourceMana­ger.GetObject("cloc­k"); aha :)

Nahoru Odpovědět 4.12.2012 22:23
Коммунизм для нашего будущего!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.