NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Avatar
Zdeněk Pavlátka:6.8.2014 8:13

Ahoj všichni, tentokrát si v machrovi vyzkoušíme něco trochu zajímavějšího. Vaším úkolem bude vytvořit jednoduchou hru. Hra bude fungovat na ploše o velikosti 800 × 600. Na vykreslování můžete použít buď Windows Forms a PictureBox nebo WPF a Canvas.

Princip hry bude následující
ve spodní části hry bude rovná plocha (trávník nebo jakýkoli jiný povrch)
na této ploše se bude pohybovat hráč
styl pohybu a ovládání nechám na vás, stejně tak i vzhled (postavička, vozidlo či cokoli jiného)
Z horního okraje budou padat náhodné předměty, kterým je třeba se vyhnout. Na počátku budou mít nulovou rychlost, bude na ně ale platit gravitace. Při nárazu do spodní plocha se odrazí s 80% rychlosti a při 5. nárazu se rozbijí (zmizí).
zbytek nechám na vás, snažte se, aby to vypadalo co nejrealističtěji

Pro jakékoli dotazy je dost místa v komentářích.

Čas si dáme do pondělí 11.8.2014 do 16:00. Vyhodnocení by mělo být téhož dne večer.

Kompletní pravidla soutěží: http://www.itnetwork.cz/…outezi-machr
Pozn.: Prosím odevzdávejte to v zazipované složce, ať to nemusím rozbalovat nějakou webovou službou

Odpovědět
6.8.2014 8:13
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
GunSpawn
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
GunSpawn:6.8.2014 8:52

800x600 má být celé okno, nebo jen vnitřní plocha?

Nahoru Odpovědět
6.8.2014 8:52
Save early, save often, save everything, everywhere, everytime.
Avatar
Odpovídá na GunSpawn
Zdeněk Pavlátka:6.8.2014 9:08

Má to být plocha s hrou.

Nahoru Odpovědět
6.8.2014 9:08
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
GunSpawn
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
GunSpawn:6.8.2014 9:49

a jak velké by teda mělo být celé okno

Nahoru Odpovědět
6.8.2014 9:49
Save early, save often, save everything, everywhere, everytime.
Avatar
Odpovídá na GunSpawn
Michal Haňáček:6.8.2014 10:11

Nemáš to jedno? V zadání to není, tak že si ho udělej jak velký chceš. Jediný (a ještě k tomu spíš jenom logický) omezení je to, aby celková velikost okna byla větší než velikost herní plochy (čili větší jak 800x600) ...

Nahoru Odpovědět
6.8.2014 10:11
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Odpovídá na Michal Haňáček
Michal Žůrek - misaz:6.8.2014 10:23

ono jde taky o to, aby tady nedošli řešení ve FullHD. Pokud Zdeněk nemá velký monitor, tak musí testovat na malém a je nepříjemné, když aplikací "vybíhá" z monitoru. Borci to udělají responzivní :P

 
Nahoru Odpovědět
6.8.2014 10:23
Avatar
GunSpawn
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
GunSpawn:6.8.2014 10:25

tak já dám jedno rozlišení bez možnosti maximalizace,ale nwm jaký, aby vnitřní okno bylo 800x600

Nahoru Odpovědět
6.8.2014 10:25
Save early, save often, save everything, everywhere, everytime.
Avatar
Odpovídá na Michal Žůrek - misaz
Michal Haňáček:6.8.2014 10:30

Tak jasné, že by to bylo nepříjemné, ale tak nějak nepředpokládám, že by někdo dělal FullHD okno a v něm herní plochu 800x600. Každopádně i kdyby to tak někdo udělal nebylo by to nic proti zadání 8-)

Nahoru Odpovědět
6.8.2014 10:30
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Jan Demel:6.8.2014 10:32

Takový blbý dotaz ... XNA povoleno ? :D

Nahoru Odpovědět
6.8.2014 10:32
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na GunSpawn
Zdeněk Pavlátka:6.8.2014 10:35

V rozhraní Visual Studia je to jednoduché, připravíš si okno o něco větší, dáš do něj pictureBox o správné velikosti a okno zmenšíš aby to sedělo.

Nahoru Odpovědět
6.8.2014 10:35
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Nahoru Odpovědět
6.8.2014 10:35
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Michal Žůrek - misaz:6.8.2014 10:36

Proč ne? To je taky C#.

 
Nahoru Odpovědět
6.8.2014 10:36
Avatar
GunSpawn
Tvůrce
Avatar
Nahoru Odpovědět
6.8.2014 10:38
Save early, save often, save everything, everywhere, everytime.
Avatar
qwertyW
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
qwertyW:6.8.2014 10:42

protože

Na vykreslování můžete použít buď Windows Forms a PictureBox nebo WPF a Canvas.
Nahoru Odpovědět
6.8.2014 10:42
Programuji, tedy jsem.
Avatar
Odpovídá na qwertyW
Michal Žůrek - misaz:6.8.2014 11:40

to nic nemění na otázce. Proč je XNA zakázaná? XNA se na toto hodí nejlépe. Narozdíl od superpomalého GDI a superRAMrozežraného WPF canvasu.

 
Nahoru Odpovědět
6.8.2014 11:40
Avatar
qwertyW
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
qwertyW:6.8.2014 11:59

no, protože jsou takhle stanovený ty pravidla...
"Proč to vlastně nemůžu napsat v Unity? Vždyť to tam taky píšu v C#."

Nahoru Odpovědět
6.8.2014 11:59
Programuji, tedy jsem.
Avatar
Odpovídá na qwertyW
Michael Olšavský:6.8.2014 15:16

Jenže framework je něco jiného než Engine. XNA ti zajistí více méně to samé jako WPF.

 
Nahoru Odpovědět
6.8.2014 15:16
Avatar
Michal Haňáček:6.8.2014 16:51

Chlapi, co řešíte? Zadání je jasně dané a podle mého víc než jasně. Zdeněk Pavlátka zadání definoval tak jak ho definoval, navíc už se pro gramotné vcelku jasně vyjádřil že XNA povolené není. Dle mého další diskuse na tohle téma je úplně zbytečná a v tomhle vlákně nedělá nic jiného než čurbes ...

Nahoru Odpovědět
6.8.2014 16:51
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
vodacek
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
vodacek:6.8.2014 17:00

integruj si XNA do WinForms a seš za vodou

 
Nahoru Odpovědět
6.8.2014 17:00
Avatar
Odpovídá na vodacek
Michal Žůrek - misaz:6.8.2014 17:05

nevím jak XNA, ale DirectX do PictureBoxu implementovat šel. :P nicméně je to jako střílet holuba atomovkou.

 
Nahoru Odpovědět
6.8.2014 17:05
Avatar
Lako
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
Lako:6.8.2014 18:48

Ještě k tomu rozlišení: Neřeší tohle náhodou device independent pixels ve wpf?
tzn: Ať je to jak chce na každém monitoru by to mělo být stejně veliké (nezáleží pak na DPI)

 
Nahoru Odpovědět
6.8.2014 18:48
Avatar
Odpovídá na Lako
Michal Žůrek - misaz:6.8.2014 18:51

jo, normálně nastav 800×600, jak se to dopočítá na pixely neřeš.

 
Nahoru Odpovědět
6.8.2014 18:51
Avatar
Odpovídá na vodacek
Zdeněk Pavlátka:6.8.2014 19:34

To by mohlo bejt zajímavý :)

Nahoru Odpovědět
6.8.2014 19:34
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Lukáš Křehula:7.8.2014 18:05

Nějak mi to není jasné. Těleso, které bude padat, tak na něj platí gravitace i při odrazu, nebo jen při pádu? Jestli se to těleso má vrátit do původní pozice, jen s menší rychlostí..?

 
Nahoru Odpovědět
7.8.2014 18:05
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Lukáš Křehula
David Hynek:7.8.2014 18:12

do původní pozice se asi nevrátí, protože cestou zpět nahoru ztratí určité množství energie. A jestli se má po pátém odrazu rozbít, tak ztrátu energie předpokládej cca 20% pro každý odraz...

těším se na výsledek tohoto úkolu...

Nahoru Odpovědět
7.8.2014 18:12
Čím víc vím, tím víc věcí nevím.
Avatar
Odpovídá na Lukáš Křehula
Zdeněk Pavlátka:7.8.2014 19:30

Gravitace působí samozřejmě stále.

Nahoru Odpovědět
7.8.2014 19:30
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
coells
Tvůrce
Avatar
Odpovídá na Lukáš Křehula
coells:7.8.2014 21:03

Pokud vyhodíš těleso kolmo do vzduchu a bude na něj působit jen a pouze gravitace, bude se pohybovat po parabole. Na vrcholu paraboly se pohybová energie zcela přemění na polohovou energii, takže se těleso zastaví a začíná padat.

Při srážce dvou hmotných těles platí, že úhel dopadu se rovná úhlu odrazu (v případě kolmého dopadu je úhel celkem jasný) a tělesa si navzájem předávají energii, která se nemůže ztratit, ale těleso ji může předat jinému.

Napsat simulaci fyzikálního systému obecně není žádná legrace, ale dobrá zpráva je, že podle zadání to má vypadat realisticky. Lidské vnímání naprosto neodpovídá realitě, takže pokud bys napsal perfektní fyzikální systém, bude vypadat hra velice nerealisticky.

To je paradoxně velice dobrá zpráva. Parabolický pohyb a metoda pokus-omyl je všechno, co potřebuješ na perfektní a "reálně" vypadající fyzikální systém.

 
Nahoru Odpovědět
7.8.2014 21:03
Avatar
Lukáš Křehula:7.8.2014 21:15

Děkuji za odpovědi.
Tu gravitaci už mám vytvořenou, dokonce i funguje :) Problém je spíš s vykreslováním, při více tělesích je pohyb trhavý a zpomalený :/

Editováno 7.8.2014 21:15
 
Nahoru Odpovědět
7.8.2014 21:15
Avatar
mara
Člen
Avatar
mara:7.8.2014 21:40

Zdeněk Pavlátka máš vymyšleného i něco pro JAVU ?? :D Když už se mi ten úkol líbí, tak není na JAVU :(

Nahoru Odpovědět
7.8.2014 21:40
Co na srdci, to na Facebooku
Avatar
Odpovídá na mara
Zdeněk Pavlátka:7.8.2014 22:12

Příští týden bude asi PHP, pak by třeba Java mohla bejt, ale nic neslibuju.

Nahoru Odpovědět
7.8.2014 22:12
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
mara
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
mara:7.8.2014 22:17

dobře díky :D a nechceš udělat něco, co může být třeba i v Javě a i v C# ?? Je to hodně podobný. :)

Nahoru Odpovědět
7.8.2014 22:17
Co na srdci, to na Facebooku
Avatar
Odpovídá na mara
Michal Žůrek - misaz:7.8.2014 22:36

tak si to napiš soukromě. Jestli ti jde o to a Zdeněk Pavlátka ti to hodnotit nechce, ohodnotím ti to já, že by za to mohla být placka negarantuji, ale minimálně by se ti mohlo hodit vědět co do příště zlepšit a jak. :)

 
Nahoru Odpovědět
7.8.2014 22:36
Avatar
mara
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
mara:7.8.2014 22:52

dobře děkuji moc :) ... placku mi nejde :D jen mi jde o to, aby mi řekl někdo, co na tom mám blbě a co zlepšit.

Nahoru Odpovědět
7.8.2014 22:52
Co na srdci, to na Facebooku
Avatar
Odpovídá na mara
Zdeněk Pavlátka:8.8.2014 8:52

Asi záleží, v čem bys to napsal, tedy spíš přes co by se vykreslovalo. Pokud bych se v tom alespoň trochu vyznal, klidně to i opravím. A kdyby se ti to hodně povedlo, myslím, že by ani s tou plackou nemusel být takový problém ;)

Nahoru Odpovědět
8.8.2014 8:52
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
mara
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
mara:8.8.2014 16:16

O to, že by se mi to povedlo se nebojím :D Jsem začátečník, ale chci to jen zkusit :D

Nahoru Odpovědět
8.8.2014 16:16
Co na srdci, to na Facebooku
Avatar
ofajfr
Člen
Avatar
ofajfr:8.8.2014 17:44

Může být v Pythonu? Někde na fóru bylo že ano...

 
Nahoru Odpovědět
8.8.2014 17:44
Avatar
ofajfr
Člen
Avatar
ofajfr:8.8.2014 17:48

Prostě Windows form v IronPythonu :D

 
Nahoru Odpovědět
8.8.2014 17:48
Avatar
Odpovídá na ofajfr
Zdeněk Pavlátka:8.8.2014 20:29

Java se dá tolerovat jako podobná, to ale neznamená, že se tu budou všichni ptát, jestli to můžou napsat ve svém oblíbeném jazyce. Nic takového. Je to machr na C#, tak se podle toho chovejte. Ani tu Javu tam moc nechci, ale ta se tolerovat dá (i když placka za ní by nebyla moc fér). A už tu nechci vidět žádný komentář, který sem nepatří. :@

Nahoru Odpovědět
8.8.2014 20:29
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
martinsakra
Tvůrce
Avatar
martinsakra:9.8.2014 15:09

Tady máte muj vytvor:
http://leteckaposta.cz/706903219

Nahoru Odpovědět
9.8.2014 15:09
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
Michal Žůrek - misaz:9.8.2014 15:12

první řešení a první chyba při odesílaní... Než to odešlete přečtěte si pravidla, třeba i bod, že zipovaná složky mám mít v názvu váš nick zde na ITnetwork... Dokonce to tam je tučně zvýrazněno.

 
Nahoru Odpovědět
9.8.2014 15:12
Avatar
martinsakra
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
martinsakra:9.8.2014 16:52

Pro velký uspěch ještě jednou
http://leteckaposta.cz/177310810
pravda na pojmenování jsem zapomel

Nahoru Odpovědět
9.8.2014 16:52
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
Lukáš Křehula:9.8.2014 17:07

Tady je moje
http://leteckaposta.cz/732865133
Vím, že se to nemůže rovnat s jakýmkoliv výtvorem vás, ale je to moje první zveřejněná aplikace a neprogramuju dostatečně dlouho jako vy ostatní:))

 
Nahoru Odpovědět
9.8.2014 17:07
Avatar
Odpovídá na Lukáš Křehula
Zdeněk Pavlátka:9.8.2014 17:09

Zajímavý název projektu :) A ty balonky jsou dost velké.

Editováno 9.8.2014 17:11
Nahoru Odpovědět
9.8.2014 17:09
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Michal Žůrek - misaz:9.8.2014 17:16

spíš je tam málo místa kam utíkat.

 
Nahoru Odpovědět
9.8.2014 17:16
Avatar
Odpovídá na Michal Žůrek - misaz
Zdeněk Pavlátka:9.8.2014 17:22

To je následek toho.

Nahoru Odpovědět
9.8.2014 17:22
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Křehula:9.8.2014 21:47

Těch balonku jsem tam dříve měl víc, jenže vykreslování bylo až moc pomalé. A upravil jsem to tak, aby vždy bylo kam utýct. Prohrajete jen v tom případě, že vás míček trefí když letí dolů, když se odráží a letí nahoru je kolize vypnuta :)
Pak už je to jenom a reflexu a schopnosti klikat tlačítka.
Moje nejvyšší skóre bylo 59 ;)

Editováno 9.8.2014 21:48
 
Nahoru Odpovědět
9.8.2014 21:47
Avatar
martinsakra
Tvůrce
Avatar
Odpovídá na Lukáš Křehula
martinsakra:9.8.2014 22:31

Hm winforms by měl rozhodně zvládnout vykreslovat víc bez problému, + i kdyby náhodou ne tak se mrkni na doublebuffering

viz třeba tohle: jinej projekt kreslí to trochu něco jinýho,ale prostě si budeš vykreslovat svoje

BufferedGraphics buffer = BufferedGraphicsManager.Current.Allocate(panel1.CreateGraphics(), new Rectangle(0, 0, panel1.Width, panel1.Height));
           Graphics g = buffer.Graphics;
           g.Clear(panel1.BackColor);
           g.FillRectangle(Brushes.Red, 0, 0, size * blocks + blocks - 1, size * blocks + blocks - 1);
           for (int i = 0; i < blocks; i++)
           {
               for (int j = 0; j < blocks; j++)
               {

                   if (m.matrix[i, j] == 1)
                   {
                       g.FillRectangle(Brushes.Black, i * size + i, j * size + j, size, size);
                   }
                   else
                   {
                       g.FillRectangle(Brushes.White, i * size + i, j * size + j, size, size);
                   }
               }


           }
           buffer.Render();
           g.Dispose();
           buffer.Dispose();
Nahoru Odpovědět
9.8.2014 22:31
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
Odpovídá na martinsakra
Zdeněk Pavlátka:10.8.2014 9:02

Winforms mi zvládají mnohem složitější kreslení, jen člověk nesmí zapnout anti-aliasing a kreslit obrázky :D Ani transformace jim nedělají problém.

Nahoru Odpovědět
10.8.2014 9:02
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Zdeněk Pavlátka:10.8.2014 20:23

Tak dneska už to opravit nestíhám, mám spoustu jiné práce. Pustím se do toho hned ráno.

Nahoru Odpovědět
10.8.2014 20:23
Kolik jazyků umíš, tolikrát jsi programátor.
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 50 zpráv z 81.