Anonymní profil Mutagen – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Anonymní profil Mutagen – Programujte.comAnonymní profil Mutagen – Programujte.com

 

Příspěvky odeslané z IP adresy 193.138.154.–

Mutagen
.NET › Zjednodušení algoritmu
3. 7. 2018   #221535

#20 gna
Ajo máš pravdu, promin, ten princip funguje přesně jak potřebuju, jenže to je jen ten princip, (pro vývoj. studio) pořád tu je ta věc, že akce +1 simuluje tlačítko co automaticky pošle data na server takže ve výsledku musím ještě tohle doladit, ale s tím si musím poradit už sám.

PS. opravdu díky, ten kod je fakt parádní, snad se mi povede to přepsat přímo pro ten učel co potřebuju.

Mutagen
.NET › Zjednodušení algoritmu
3. 7. 2018   #221532

#14 MilanL
Ten cyklus nemůže počkat, chápeš, že v cyklu to být nemůže už jenom kvuli tomu, že ty čekáš až ti přijde eventa? Pořád to řikám, jakmile přičteš jedničku je to akce u který to má skončit protože ti v tu chvíli příjde od serveru další eventa kde zpracováváš další příčtení?

Prostě to nejde udělat, že v 1 cyklu zkontroluju všechny kombinace, kdyby to šlo tak už to co tu píšete dávno mám tak přepsaný. Prostě si musím při přičtení čísla pamatovat stav kde jsem skončil abych mohl v následujcím kroku (v proceduře od znova) odtamtud pokračovat. Určitě by to šlo nějak udělat líp, ale né přesně jak tu radíte. Ale určitě nad tím pořád přemýšlím, tak snad to nějak vymyslím.

Mutagen
.NET › Zjednodušení algoritmu
29. 6. 2018   #221510

#4 MilanL
To je přesně ten důvod proč jsem napsal i ty další příspěvky a v tom posledním napsal přesnou simulaci jak to funguje.

Kdyby se to dalo řešit hned v jednom spuštění tak bych to dokázal taky napsat. Tady jde o to jak jsme psal v posledním příspěvku, že co akce (snížení/zvýšení/odeslání) to přijde nová eventa a je to na tom pastebinu kompletně funkční jak to funguje v praxi. To z čeho jsi vycházel byl pouze pseudokod na testování cyklu nikoli praktické použití proto jsem pak napsal i ty další příspěvky protože sem se v tom prvním nevjádřil až tak moc dobře.

Při začáteční inicializaci jsou všechno 0 (přijde ze serveru) a co akce to proběhne komunikace se serverem viz pastebin volání eventy (OnServerEvent(e);) simuluje akci co client pošle na server (v tomhle případě zvýšení/snížení/odeslání)... Pořád je to jen kod kterej má daleko k praxi protože v praxi (třeba) e.ThirdNumber += 1; je už právě to odeslání (je to jenom ukázka pro prostředí aby to demonstrovalo serverová data co se posílaj) takže si pod e.ThirdNumber += 1; představ akci co client odešle serveru.

Mutagen
.NET › Zjednodušení algoritmu
29. 6. 2018   #221507

https://pastebin.com/ckWPWDtr

Tady jsem vytvořil přesnou kopii jak to funguje v praxi. Eventa simuluje přijem/odeslaní na server. Takže já sem závyslej jen na tom co se děje v eventě, nijak neovlivním data co mi dorazí.

Mutagen
.NET › Zjednodušení algoritmu
29. 6. 2018   #221502

Jen sem zapomněl dodat, že cyklus while je irelevantní (cyklus emuluje eventu co přijde ze serveru) kde po každé změně čísla příjde právě ona eventa. Takže zjednodušeně co 1 akce (zvýšení čísla/snížení čísla/odeslání kombinace) to přijde event (proto tam mám ten globální přepínač, který si drží v jaké fázi aktuálně je) kde po odeslání kombinace mi to napíše otevřeno nebo špatná kombinace (a tam se znova udrží stav pro zvýšení čísla až znova přijde event)

Mutagen
.NET › Zjednodušení algoritmu
29. 6. 2018   #221501

Zdravím,

už druhý den si lámu hlavu s tímto kodem, spíše s jeho zjednodušením, protože bych ho do budoucna chtěl rozšířit o další čísla, ale už takhle "jenom" při 3 číslech je to neskutečně zdlouhavý.

Zjednodušeně, jedná se o brutoforce attack s tím, že zkouší kombinace "pro tří číselný zámek" 0 0 0 -> 0 0 1 -> 0 0 2 -> ... 0 0 9 -> zvýší nadřezený (0 1 9) -> sníží podřízený postupně od 9 do 0 (0 1 0) a takhle jede dál... Jde o to, že bych to nechtěl vynulovat (proměnnou) na 0 a jet od znova ale ten postup na snížení se musí dodržet. Chtěl bych to udělat nějak elegantně, ale nedokážu si představit tohle psát třeba pro 20čísel.

Enum Send označuje že teprve tam se provede "ODESLANI" kodu (na server). Kód funguje přesně jak potřebuju a jak to má fugnovat (postup musí zustat), jen bych ho rád nějak zjednodušil a vůbec mě nenapadá jak.

Kod není úplně totožný s originálem (je to jen pro testování ve VS a bylo zkompilovatelný) proměnný
lFirstNum, lSecondNum, lThirdNumber tam ve skutečnosti nejsou je to demonstrace dat co přijdou ze serveru (ale to je asi irelevantní)
 

static void Main(string[] args)
        {
            Switch FHatratTruhlaSwitch = Switch.RaiseThird;
 
            int lFirstNum = 0;
            int lSecondNum = 0;
            int lThirdNumber = 0;
 
            while (true)
            {    
                switch (FHatratTruhlaSwitch)
                {
                    case Switch.RaiseThird:
                        if (lThirdNumber == 9)
                            FHatratTruhlaSwitch = Switch.RaiseSecond;
                        else
                        {
                            lThirdNumber += 1;
                            FHatratTruhlaSwitch = Switch.Send;
                        }
                        break;
 
                    case Switch.DownThird:
                        if (lThirdNumber != 0)
                        {
                            Console.WriteLine("Down " + lFirstNum.ToString() + "-" + lSecondNum.ToString() + "-" + lThirdNumber.ToString());
                            lThirdNumber -= 1;
                            FHatratTruhlaSwitch = Switch.DownThird;
                        }
                        else
                            FHatratTruhlaSwitch = Switch.Send;
                        break;
 
                    case Switch.RaiseSecond:
                        if (lSecondNum == 9)
                            FHatratTruhlaSwitch = Switch.RaiseFirst;
                        else
                        {
                            lSecondNum += 1;
                            FHatratTruhlaSwitch = Switch.DownThird;
                        }
 
                        break;
 
                    case Switch.DownSecond:
                        if (lSecondNum != 0)
                        {
                            Console.WriteLine("Down " + lFirstNum.ToString() + "-" + lSecondNum.ToString() + "-" + lThirdNumber.ToString());
                            lSecondNum -= 1;
                            FHatratTruhlaSwitch = Switch.DownSecond;
                        }
                        else
                            FHatratTruhlaSwitch = Switch.DownThird;
                        break;
 
                    case Switch.RaiseFirst:
                        if (lFirstNum == 9)
                        {
                            FHatratTruhlaSwitch = Switch.End;
                        }
                        else
                            FHatratTruhlaSwitch = Switch.DownSecond;
                        lFirstNum += 1;
                        break;
 
                    case Switch.Send:
                        Console.WriteLine(lFirstNum.ToString() + "-" + lSecondNum.ToString() + "-" + lThirdNumber.ToString());
                        Thread.Sleep(25);
                        FHatratTruhlaSwitch = Switch.RaiseThird;
                        break;
 
                    case Switch.End:
                        Console.WriteLine("Konec");
                        Console.ReadKey();
                        break;
                }
            }
        }
    
enum Switch: byte
    {
        RaiseFirst,
        RaiseSecond,
        RaiseThird,
        DownFirst,
        DownSecond,
        DownThird,
        Send,
        End
    }

Díky

Mutagen
.NET › Jak je to s těmi { závorkami…
22. 6. 2018   #221444

Nechci se plíst, ale nemá náhodou VB též bloky? Akorád se zapisují

if () THEN

ELSE nebo END IF

?

Mutagen
.NET › Co programovat ,jako začáteč…
28. 5. 2018   #221163

#7 Josef
Nebo se koukneš jak pracovat s bitmapou a vytvoříš si herní plochu, kde si vykreslíš mřížku a podle pozice kliknutí vykreslíš do čtverce kolečko či křížek a do nějaký matice napíšeš X či O podle který budeš vyhodnocovat výsledek.

Dejme tomu, že máš bitmapu 100x100 rozdělenou na 10x10 políček (10x10 velikost) (máš eventu mouseClick) kde ti posílají X,Y (možná mouseDown ted nevím) s ty podle X,Y (dejme tomu X = 55, Y = 59) to bude políčko na pozici 5,5 tak tam vykreslíš O/X. V matici kterou budeš procházet co tah (kvůli vyhodnocení) to budeš zapisovat též.

Toto je trošku těžší než psal BDS, v jeho verzi pracuješ přímo s objektama, tady bys pracoval čistě s 1 objektem (bitmapou) s tím, že musíš víc kontrolovat co kde kreslíš a jak.

Mutagen
.NET › Co programovat ,jako začáteč…
25. 5. 2018   #221128

#4 Josef
Určitě co psal BDS, vytvoř hru, která nepotřebuje animace, já třeba vyhrál školní kolo v programování jen díky naprogramovaým piškvorkám...

Ted si vem, že můžeš začít pexesem, pak postoupit třeba na prší apod... Takových her na který nepotřebuješ žádnou animaci je nepočet, můžeš třeba udělat elektronickou obdobu aktivit, pexesa, piškvorek, battlefield (lodě), dámu, člověče nezlob se, pokud bys chtěl do toho zapojit i trošku algoritmizaci a výpočty tak bych zkusil šachy, loyd 15, je toho nespočet co bys mohl udělat... Samosebou jak se oháníš, že z toho co umíš nemůžeš moc dělat, ale to je právě to co bys měl dělat, naučit se díky něčemu něco novýho, třeba u tohohle použiješ práci s bitmapou pak v pokročilejší fázi můžeš zkusit udělat i AI protihráče/protihráčů... Do všeho můžeš později zapojit i TCP/IP prvky (player vs player po síti) a takhle to můžeš udělat u všech vyjmenovaných her až na loyd 15 ... A postupně do toho projektu budeš přidávat další a další vychytávky.

Už jen to, že se to učíš sám od sebe je dostatečný impulz si najít nějaký projekt, který budeš postupně rozvíjet a díky tomu učit nový věci, a že to děláš sám od sebe znamená, že tě to baví takže je jedno co uděláš, vždy z toho budeš nadšený když to bude fungovat.

PS. osobně kdybych začínal já tak bych začal dámou, postupně jí rozvíjel třeba až po hraní po síti s tím, že pak když budeš chtít udělat šachy budeš mít úž předpřipravenou hrací plochu a tahy po poli a jiné. Jen tomu dáš jinou grafiku a povolené tahy pro figurky (které při výběru figurky můžeš i zvyraznit kam se figurka může pohybovat)

Mutagen
.NET › Co programovat ,jako začáteč…
22. 5. 2018   #221079

#1 Josef
Já osobně jsem se učil tak, že jsem psal i sebemenší blbosti, vlastní packer souboru, nějaký crypto programy apod. Postupně dával vyšší a vyšší cíle a převážně se učil z examplů (teorie minimum) viz když mi někdo řekl udělej matici tak jsem na něj čuměl jak na vrata, ale když řekl dvourozměrný pole hned jsem věděl ...

Dávat si zbytečně vysoký cíle (např. chci vytvořit hru) to je prostě cíl k ničemu.

Já osobně jsme dělal různý programy na stahování dat z webu, práce s mysql přes webové rozhraní (php scripty uzpůsobený postum z programu, apod) prostě různý blbůstky, který mě učili vždy něčemu novýmu. Jakože různý classy (tpc, udp, streamwriter, streamreader, vytváření vlasních komponent a tak dále).

Mutagen
.NET › Podmínky v C#
12. 4. 2018   #220345

#1 JD_1609
Co takhle si projít nějaký úplně začátečnický tutoriály? Pokud neumíš ani udělat podmínku, tak bych začal hlavně tím. Zbytek si najdeš přes google

Mutagen
.NET › Někdo ochotný pomoct se C#..…
2. 1. 2018   #219189

#1 houlis
Zkus sem něco víc poslat, třeba zadání těch uloh.

Mutagen
.NET › BinaryWriter/BinaryReader
1. 12. 2017   #218812

#2 gna
Heh, tak to vyřešilo celej problém   Taková blbost   

Mutagen
.NET › BinaryWriter/BinaryReader
1. 12. 2017   #218809

Zdravím,

Chtěl bych se zeptat jak udělat "dobře" binární zápis podle "nějakého" vzoru,

např: ID (30znaků), Size (Long hodnota), MemoryStream o velikosti Size (předchozí long hodnota).

Když jsem udělal

string g = bin.GraphicID.PadRight(30);
w.Write(g);
w.Write((long)bin.Size);
w.Write((byte[])bin.Graphic.ToArray());


Tak při načítání mě to hodí ke stringu (na začátek) nějaký znaky (\u001e) a přečte to špatnou velikost size (takže ve výsledku nemůžu číst dál)

string a = Encoding.UTF8.GetString(r.ReadBytes(30));
long size = BitConverter.ToInt64(r.ReadBytes(8), 0);
MemoryStream s = new MemoryStream();
byte[] bb = r.ReadBytes((int)size);
s.Write(bb, 0, bb.Length);
s.Seek(0, SeekOrigin.Begin);
using (FileStream fs = new FileStream(a.Trim() + ".png", FileMode.OpenOrCreate))

{
   s.CopyTo(fs);
   fs.Flush();
}

Poradíte mi jak tohle elegantně vytvořit tak aby to zapisovalo i četlo korektně?

Mě třeba napadlo si předem nadefinovat struct, který by měl jasně daný velikosti všeho, ale to jsme vypustil protože MemoryStream dopředu neznám velikost.

Díky

PS. Jedná se o zápis ID a Png souborů do jednoho dat. souboru.

Mutagen
.NET › Hra - Vrstvy na postavě
8. 11. 2017   #218423

#6 Ovrscout
Jedenapulruční? O tom jsem ani neslyšel, ale dvouruční ano.

#7 peter
Prej zkus myslet databázově a programově a napíšeš čistě teoretickej text a tom, jak teoreticky provázat celý tělo na ruzný kombinace, ano některé kombinace (štít + štít dokonce už reálně můžu použít, když někdo bude chtít)  ano počítám do budoucna i s váhou itemu, brnění apod (equipload), jinak až tak do detailu, že někdo bude utočit na ruku, nohu, krk apod ... Ne říkal jsem oživím a procvičím C# nedělám žádnou AAA propracovanou gamesu. Čistě základní systém RPGher.

Jinak co si myslíš, že u postavy je ten čtvereček? Ano Layer! Celý systém Layerů je strom (nebo to snad z tý ukázky kodu není poznat, že tam mám strom?) Tzv postava se rozděluje na Hlava, Krk, Hrud, Nohy, Ruce. Ruce mají další části a tak dále... Takže vlastně jsi tu napsal to co je úplně jasný. Jenom ses trošku rozvášnil a předvedl svojí vizi, což ti neberu za zlé, ale do puntíku fakt nehodlám ani jít. Zkušenosti si beru z her co jsem hrál, takže si myslím, že stačí to jen realizovat.

#8 MilanL
Polymorfismus už praktikuju... Jelikož tam v hlavním Layers vracím object (protože části mají jinou class). Ty itemy co nemají další podmnožiny jsou typu ItemLayer (item rozšířen o možnosti layeru/equipu...) a ruce jsou typu HandsLayer. Tzv s polymorfismem pracuju o uroven výš (na Playeru), kde mám vlastně metody Equip/Unequip/Use apod..

Player má v sobě Layers kde defakto mámrozložený typy layeru viz kod, kterým jsem vyřešil práci s layery...

Právě to co řikáš jsme řešil hned jako první věc pole, alenarazil jsme u rukou s tím, že to nešlo do dalších levelů (Hands.Left -> Hands.Left.Ring) ... Já věděl dopředu jak to udělat (teoreticky), ale kodově jsem s tím měl problém, protože práce s tou kolekcí byla otřesná. Nemohl jsem lehce přistupovat k danému itemu a bylo to dost krkolomný. Takhle už od začátku vím, že mám na layeru zbran a potřebuju jí snížit durabilitu ... jednoduše zavolám ((HandsLayer)layers[LayerID])[HandsID][HandID] a hned mám přímo k tomu objektu přístup. Šlo by to k tomu přistupovat i z batohu (jelikož třeba sekera je obsažena v batohu se statusem equipped) ale to bych musel rpojet celej batoh zjistit IDLayerů a podle nich najít tu sekeru a tam jí to snížit... Což dobře je oboje, ale přijde mi víc logicky, že přistoupím přímo k layeru a tam budu obsluhovat objekt, než abych ho obsluhoval z batohu (když je nasazen) ... Ze začátku jsem měl namysli právě to, že se mi to z batohu bude mazat (to by pak nebyla jiná možnost než k tomu tak přistupovat)

Mutagen
.NET › Hra - Vrstvy na postavě
8. 11. 2017   #218403

#4 gna
Též by se dalo použít, ale už není třeba. Možná v budoucnu použiju na rozšíření. Ty layery by se tím daly též využít, to neřikám, ale předělával jsem to na 2x a teď to funguje jak potřebuju, i práce s tím je minimální oproti tomu switch/case jak jsem to měl předtím a přehlednější.

Mutagen
.NET › Hra - Vrstvy na postavě
7. 11. 2017   #218387

Zdravím,

po delší době sem si chtěl trošku oživit C# tak jsem si vymyslel menší projekt (základní systém tahového rpg), všechno se zatím vyvyjí kladně, ale až na jednu věc. Tou jsou vrstvy (layers) na postavě (hlava, hrud, ruce, nohy). Jako první mě napadlo to udělat jednoduše, normální pole/list objektu (IDLayeru, Item) s tím, že každá část je předem definovaná. Tam jsem problém ještě neviděl, fungovalo to jak mělo až do chvíle, kdy jsem chtěl udělat  Item, který musel mít i předem definovaný na jaký layer jde nasadit (což u hlavy, těla a nohou nevadí), ale problém nastal tehdy, když to měla být zbraň, která se dá nasadit do rukou. Jelikož jsem musel při vytváření definovat kam ten item pujde nasadit tak jsem měl navýběr pravá nebo levá ruka (napevno) a nemohl si člověk vybírat do jaké ruky to dá.

Tak jsem to předělal (do aktuální podoby), že Layers je objekt který drží objekty Torso, Head, Legs a Hands (Hands je rozšířen o Hand(Left/Right) a Hand má v sobě objekty Ring, Bracelet, Hand).

Což ve výsledku funguje přesně jak potřebuju, ale to nastavování a práci s těmi objekty mě příjde strašně krkolomná až otřesná. Přes switch/case rozlišuju podle LayerTypu jaký objekt mám naplnit/přepsat/vymazat, což se mi zdá nepraktické, když do rukou můžu nasadit typ Weapon či Armory (štít) a další rozšíření o šperky a další věci co by mohli být na layeru v rukách).

Tím bych se rád zeptat jaké zkušenosti máte Vy, jak vyřešit tento problém, či jestli neuchyluju náhodou špatným směrem.

PS. Kdyby náhodou byl zájem vidět aktuální kod, dodatečně dodám.

Děkuji za pomoc :)

Mutagen
Java › Java - Cykli
2. 11. 2017   #218305

Jak to tak vidím, měla by se tu zavést speciální sekce "Pomoct s domácími úkoly - Zadarmo".

Pokud člověk ví, že je nemocnej a ve škole řeknou, dnes odevzdat, tak se jdu omluvit (normální věc), pokud učitel i tak řekne, že si to měl zjistit dopředu (normální věc), podle mě ani jedno z toho jsi neudělal a ještě tady pěkně kecáš, prostě jsi na to zapomněl a snažíš se to řešit na poslední chvíli. Přece jen takových tu bylo před tebou hodně.

Naopak, nikdo by tu neměl kecy, kdyby jsi ukázal snahu a aspoň něco napsal, tak poradí co je blbě.

Stojím si za stejným názorem jako JoDik

Mutagen
C / C++ › Ukázka kódu
26. 10. 2017   #218198

Já když jsem se třeba hlásil na post Java programátor tak jsem dostal kompletní zadání a zároveň seznam technologií co jsem měl použít při vývoji a cca 2 týdny na vypracování.

Pokud nemáš nějaký vlastní projekt, který jsi dělal (takové portfolio) co by jsi jim mohl zaslat, tak si napiš o zadání nějakého přikladu. Oni ti sami namixují převážně to, co oni preferují si myslím, přesně jak psal KIIV.

A hlavně jak čistý kod umíš napsat, jak umíš dodržovat nějakou sturkturu, zda názvy funkcí vystihuje to co dělá, popřípadě řádně okomentovaný kod. Já osobně jsem se setkal s člověkem co dělal názvy proměnnýh na bázi list1, list2, num1, num2 což není zrovna přivětivé pro nikoho.

Mutagen
Java › Pořadí prováděných metod
9. 6. 2017   #216676

#1 Honza228
Vždit se provedou po sobě. Pokud jde o to aby se spustilo na pozadí, tak spustit ve vlákně

Mutagen
.NET › Visual Basic
18. 4. 2017   #215660

Já absolutně nechápu proč někdo chodí na školu s IT zaměřením, když pak chce aby za něj někdo dělal ukoly.

PS: Ukrajinskej učitel jako učitel a určitě je vystudovanej. Místo brouzdání na netu by stačilo plnit ukoly co vám při hodině dá či vysvětluje a problém by jsi neměl.

Mutagen
Java › čtení ze souboru do swingu
25. 11. 2016   #213767

#3 Domča 

while ((s = br.readLine()) != null)
{
    String predchoziText = mujTextik.getText();      
    mujTextik.setText(predchoziText + "\n\r" + s);
}


Je tam setText neboli se vždy přepíše ...

Mutagen
C / C++ › C# / Java / C++
3. 11. 2016   #213441

Ještě se k tomu přidám já jestli můžu.

Jak už tu bylo psáno udělej si 3 uplně stejné aplikace ve všech jazycích a uvidíš co ti sedne líp ... Pokud bys chtěl aplikace hlavně na rychlost tak na javu zapomen, při větších projektech je to dost výrazné zpomalení ...

Pokud se rozhoduješ podle toho aby to bylo víc userfriendly tak Java je zase na to výborná.

Podle mě por začátečníka je výborný C#, je lehce naučitelná a docela rychlá. A hlavně přecházet mezi Javou a C# je pak docela lehký.... Já se v Javě orientoval do týdne když jsem se jí učil kvůli práci a to jsem přešel z C# ... Do C++ jsem ještě nezavítal víc jak pro konzolové aplikace takže nemůžu nějak extra soudit, ale určitě na rychlost vývoje aplikace mě vždy stačilo C# (a vše co jsem dělal v tom šlo napsat) popřípadě sem využil knihovny z C++...

A dodatek, dělal jsem totožnou aplikaci v C# (pro mě) a Javě (pro kámoše) ... Totožná aplikace mi v C# zabrala necelý 2 hodiny a v javě něco okolo 6 hodin. Takže za mě jednoznačně C# ... Ale pokud budeš chtít někdy dělat android aplikace tak se javě nevyhneš (a nebo jsem slyšel že existuje nějaký Xamarin který se píše C# a je to andorid vývoj)

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032018 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý