Pouze tento týden sleva až 80 % na e-learning týkající se Javy. Zároveň využij akce až 50 % zdarma při nákupu e-learningu - více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
discount 50 + hiring

Autíčko 4 - Rychlost

Video-tutoriál, jak v XNA naprogramovat jezdící autíčko, včetně jednoduchých fyzikálních vlastností.

4. díl ukazuje jak naprogramovat realističtější fyzikální model pro zrychlování a brzdění autíčka.


 

Všechny články v sekci
Závodní hra v XNA game studio
Článek pro vás napsal Petr
Avatar
Uživatelské hodnocení:
7 hlasů
Auto se specializuje na .NET C# technologie všeho druhu.
Aktivity

 

 

Komentáře

Avatar
coder5
Člen
Avatar
coder5:16.7.2012 10:54

Mohu se zeptat v čem je lepší používání datového typu float naproti double? Resp. proč používáme ten a né onen. Jestli je to jen ze zvyku nebo je v tom nějaká programátorská úmluva?

A jako vždy děkuji za skvělý tutoriál a těším se na další :)
PS.: Omlouvám se za svoji předbíhavost, avšak napadlo mne si udělat jednoduchou závodní hru. Kde by autíčka jezdili po trati a kdyby chtěli jet na trávník jelo by se jim špatně (pomaleji) a kdyby narazili do nějaké překážky zastavila by se. Pokud by projela cílovou rovinkou přičetlo by se kolo. Jak udělat jednotlivé akty vím, avšak nevím jak kontrolovat kolize. Budeš se tímto v dalších tutoriálech zabývat?
Děkuji za odpověď.

Odpovědět
16.7.2012 10:54
Quidquid discis, tibi discis !
Avatar
matesax
Tvůrce
Avatar
matesax:16.7.2012 11:35

Double je "vyšší stupeň" float - prostě se do něj vejde více. Ale jde o velikost - double má větší nároky, než float - největší nároky má 64 bitový integr. Takže se používá takový datový typ, jaký je nutný - navíc float pracuje lépe s delšími desetinami - double velice brzy - již po délce větší než 3 desetinny zkracuje,...

 
Odpovědět
16.7.2012 11:35
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:16.7.2012 12:17

Proč odkazuješ jinam, když to je zde v tutoriálech? http://www.itnetwork.cz/index.php?…

Odpovědět
16.7.2012 12:17
One of the most common causes of failure is the habit of quitting when one is overtaken by temporary defeat.
Avatar
Petr
Tvůrce
Avatar
Odpovídá na coder5
Petr:16.7.2012 14:45

Float zvládne 7 cifer, přičemž desetinná čárka je někdy mezi nimi (je plovoucí, anglicky float), tzn. čím větší číslo, tím menší přesnost (méně desetin). V paměti zabírá 4 byty (32 bitů).
Double, neboli „dvojitý“, má dvojitou přesnost než float, tzn. 15 cifer a desetinná čárka mezi nimi zase někde plave. V paměti však už zabírá 8 bytů (64 bitů), což je 2x víc než největší celočíslený typ long. Také už pro zvládnutí výpočtu v rámci jednoho cyklu procesoru vyžaduje 64 bitový procesor.
Pak je tu u desetinných čísel ještě Decimal, který zvládne až 28 cifer, ale zabírá 16 bytů (128 bitů) a ani procesor už ho nedokáže zpracovat najednou.

Aktuálním trendem je všude používat double pro desetinná čísla a int (Int32) pro celá čísla a jinak datové typy neřešit, což je někdy docela chyba. Záleží na tom, kam se to ukládá, jak se s tím pracuje a co se v tom uchovává. Přetypování mezi float a double také nějaký výpočetní čas zabere. Každopádně na rozměr obrazovky mi 7 cifer stačí a řešit části pixelu na víc jak setiny nemá smysl.

Co se týče kolizí a indikace pohybu po jiném povrchu, tam už to je vyšší matematika. Nejjednodušší je používat základní grafické elementy, jako je obdélník a kruh, které mají i vestavěnou kontrolu pro kolizi. Složitější tvary a zvláště jejich následné různé otočení a změna měřítka už je třeba řešit pomocí transformačních matic. K tomu se právě výborně hodí vektory, které podporují všechny základní početní operace, ale bez znalosti analytické geometrie a matic to dá dost zabrat.

 
Odpovědět
16.7.2012 14:45
Avatar
pardal486
Člen
Avatar
pardal486:22.7.2012 20:27

Potřebuji se zeptat jestli ještě XNA tutoriály budou pokračovat

Odpovědět
22.7.2012 20:27
Bite my shiny, metal ass!
Avatar
Petr
Tvůrce
Avatar
Odpovídá na pardal486
Petr:22.7.2012 21:12

Mé video-tutoriály o XNA zatím (tzn. cca letos) asi ne, určitě sem však přispějí ostatní s neméně zajímavými materiály.

 
Odpovědět
22.7.2012 21:12
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na pardal486
David Čápka:22.7.2012 21:17

Určitě budou ;)

Odpovědět
22.7.2012 21:17
One of the most common causes of failure is the habit of quitting when one is overtaken by temporary defeat.
Avatar
Jakub Lásko[Saarix]:25.8.2012 17:04

Toto je opravdu vydařený tutoriál. :)

Odpovědět
25.8.2012 17:04
Časem je vše možné.
Avatar
minecraftgiesi:12.11.2012 18:05

nemohl by mi někdo pomoct mam problem s xna a kdyŽ si založím projekt tak mi to napíše
toto:
no suitable graphics card found

could not find a direct3D device that supports the XNA framework HIDef profile

verify that a suitable graphics devise is installed

make sure desktop is not locked,and tkat no other application is running in full screen mode

avoid running under remote desktop of as a windows service

check the display properties to make sure hardware acceleration is set to full

Odpovědět
12.11.2012 18:05
Milujte c#/xna :)
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na minecraftgiesi
Petr Nymsa:12.11.2012 18:21

Vypadá to na problém s ovladačem grafické karty. CO máš za kartu ? Předpokládám že ti například hry jdou. Pokud ne, tak problém je jasný - není nainstalovaný ovladač karty. Napadá mě akorát zkusit přeinstalovat XNA, popřípadě aktualizovat DirectX a samozřejmě ovladač karty :)

Odpovědět
12.11.2012 18:21
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
minecraftgiesi:12.11.2012 18:49

no c sharp a xna jsem si přeinstaloval kvůli tomuto problému ale(hry mi dou samozřejmně)ne­napadlo mně aktualizovat directX a ovladač karty mimochodem systém máš
tady:
Intel(R) Pentium(R) Dual CPU T3.400 @ 2.16GHz 2.17 GHz
ram= 3 gb
32 bit system
.no asi budu vypadat jako totální neschopenec ale kdyby to bylo tim ovladačem nebo directemX tak jak ho mam aktualizovat já se vo to nikdy nemusel starat

Editováno 12.11.2012 18:50
Odpovědět
12.11.2012 18:49
Milujte c#/xna :)
Avatar
Odpovídá na Petr Nymsa
minecraftgiesi:12.11.2012 19:01

no c sharp a xna jsem si přeinstaloval kvůli tomuto problému ale(hry mi dou samozřejmně)ne­napadlo mně aktualizovat directX a ovladač karty mimochodem systém máš
tady:
Intel(R) Pentium(R) Dual CPU T3.400 @ 2.16GHz 2.17 GHz
ram= 3 gb
32 bit system
.no asi budu vypadat jako totální neschopenec ale kdyby to bylo tim ovladačem nebo directemX tak jak ho mam aktualizovat já se vo to nikdy nemusel starat
promin že jsem to napsal dvakrat ale ja zapoměl odpovědět

Editováno 12.11.2012 19:02
Odpovědět
12.11.2012 19:01
Milujte c#/xna :)
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na minecraftgiesi
Petr Nymsa:12.11.2012 19:02

Nejdřívě te poprosím o pár věcí. Využívej odpovědí a problémy zakládej na fórum. Sice jsi mi napsal jaký máš procesor ale tu kartu kterou jsem požadoval jsi nenapsal. Každopádně, na stránkách výrobce tvý karty si najdi správný model a stáhni ovladač. Pusť a řiď se podle pokynů. Pokud stále nepůjde, možná by bylo lepší založit topic na fóru, než tady zapatlávat komentáře pod článkem :)

Odpovědět
12.11.2012 19:02
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Eflyax
Člen
Avatar
Odpovídá na minecraftgiesi
Eflyax:17.11.2012 17:26

Problém je jednoduchý, musíš si v XNA projektu překliknout jednu možnost, která sníží nároky na grafickou kartu.

Project >> (název projektu) Properties >>> (karta)XNA Game Studio...
Pak vybereš Game profile: Use Reach to access...

Ty používáš: Use HiDef to access... v tom je ten problém.
Stačí to jenom překliknout ;)

Odpovědět
17.11.2012 17:26
Keep it simple
Avatar
Mini
Člen
Avatar
Mini:30.11.2012 15:49

Ahoj, chtěl bych se zeptat, kdyby to autíčko si hlídal jeho pozici pomoci Rectanglu, jak by si to řešil pak? jelikož Rectangle nebere float ale jen int. Děkuji

Odpovědět
30.11.2012 15:49
Jste dobří jen v tom, co vás baví.
Avatar
KlimiCZ
Člen
Avatar
KlimiCZ:3.5.2013 20:20

Já jsem si to zkoušel udělat podle návodu (je fakt dobrý)a došel jsem do bodu 2 a pak jsem to otevřel ve visual studio 4.0 a vše bylo jakdyby v koši ,proteže jse kód předělal a visual studio 2008 to už neotevřelo takže jsem to musel dělat znova
Nicméně jsem to dokončil a mám to hotové vše jede jak má být až nato že nemám tam okraje(vyhranečené autíčko jede pořát dál) a už jsem to zkoušel nějak udělat ,ale marně (když jsem to poupravil tak mně to napsalo pro mně známe slovo "Error") dávám tady proto save a kdyby ses na to mohl kouknou a poupravit dík jinak všechno jede . a ještě jednou dík.

Odpovědět
3.5.2013 20:20
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Petr
Tvůrce
Avatar
Odpovídá na Mini
Petr:14.6.2013 0:25

Kdybych hranice či kolize hlídal pomocí Rectangle, tak bych veškeré float hodnoty před vytvořením obdélníka zaokrouhlil a přetypoval na int.

 
Odpovědět
14.6.2013 0:25
Avatar
cyrilja
Člen
Avatar
cyrilja:23.6.2013 7:46

Pěkně zpracovaný tutoriál. Jak děláš tutoriál, jak převádíš na video ?

 
Odpovědět
23.6.2013 7:46
Avatar
Petr
Tvůrce
Avatar
Odpovídá na cyrilja
Petr:23.6.2013 9:50

Natáčím, stříhám i exportuji to v programu BB FlashBack.

 
Odpovědět
23.6.2013 9:50
Avatar
cyrilja
Člen
Avatar
Odpovídá na Petr
cyrilja:24.6.2013 19:40

Lze tento program získat gratis ?

 
Odpovědět
24.6.2013 19:40
Avatar
Odpovídá na cyrilja
Neaktivní uživatel:24.6.2013 19:42

ano, stačí nainstalovat Visual Studio, XNAčko a opsat si to 8-)

Odpovědět
24.6.2013 19:42
Neaktivní uživatelský účet
Avatar
cyrilja
Člen
Avatar
cyrilja:27.6.2013 20:50

Dík za BB FlashBack. Funguje tak jak potřebuji.

 
Odpovědět
27.6.2013 20:50
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 23 zpráv z 23.