Simulátor trati – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Simulátor trati – Delphi – Fórum – Programujte.comSimulátor trati – Delphi – Fórum – Programujte.com

 

Krolth
~ Anonymní uživatel
5 příspěvků
16. 11. 2012   #1
-
0
-

Zdravím,

už nějakou dobu se věnuji Delphi a vytvářím si v něm různé prográmky pro osobní použití (budík, převody jednotek,... a další v podstatě blbosti)

Teď mi ale napadlo (pro některé absolutní blbost  si udělat v Delphi simulátor trati De La Sarthe v Le Mans (jsem velký fanoušek 24h Le Mans).

Nejsem v Delphi žádný mistr a umím v podstatě jen základy, proto jsem se chtěl zeptat, jak by někteří tento program řešili? Jak vymyslet objekt, aby opravdu "jezdil" podle určitého algoritmu, jak by měla fungovat samotná trať a podle čeho (průjezd cíle apod), jak simulovat, aby "vozidlo" jelo souvisle a měnit pouze čas (v podstatě jeho rychlost, teď je jeho rychlost založená na "přeskočení" o určitý počet pixelů).

Zatím je program řešen pouze jedním Labelem, který za určitý čas podle timeru mění pozici dle předem určených souřadnic (nyní pole o 432 hodnotach :D ).

Byl bych rád, kdyby program dokázal opravdu "simulovat" ... cestu všech vozidel bych řešil pouze drobnými vyjímkami v souřadnicích na bázi náhodného generování určitých čísel, protožer mi nenapadá jiné možné řešení, jak alespoň nějak simulovat náhodné projetí kola (aby v zajetí kola vznikaly určité nepředvídatelné vyjímky, aby to alespoň vzhledově připomínalo skutečnost). Ale chtěl bych, ale simuloval spotřebu paliva, opotřebení gum, aby vypisoval přesné časy zajetého kola a pořadí jednotlivých aut. Jestli je to podle Vás naprosto nemožná věc, pochopím to  A je mi jasné, že o nic lehkého nepůjde, ale nechci od Vás napsaný kód, jen teorii a nápady, jak by se to mohlo řešit, pokud vůbec lze.

Zde posílám funkční program zatím v počátku vývoje: 
http://www.krolth.ic.cz/…imulator.rar

nebo

http://leteckaposta.cz/448492293

Díky moc za případný ať teoretický či praktický názor a radu :)

Nahlásit jako SPAM
IP: 85.13.90.–
liborb
~ Redaktor
+18
Guru
17. 11. 2012   #2
-
0
-

Klasický problém. Mícháš zobrazení a objektový (datový) model. Co takový model závodu obsahuje? V minimální verzi trať a auto (když budeš mít funkční objekt auto, tak pak už není zase tak těžké udělat celé závodní pole). Trať se skládá z úseků - rovinka (vlastnosti délka, sklon apod.), zatáčka (poloměr, sklon ...). Z těchto jednotlivých úseků si poskládáš trať. Pak tu máme auto. To na nějakou hmotnost (která se během závodu snižuje), spotřebu (která závisí na daných okolnostech), zrychlení ... Vesměs všechny vlastnosti objevíš ve chvíli, kdy budeš tvořit fyzikální model. To je potřeba nastudovat síly, energie, zrychlení, tření apod. No a pak můžeš začít tvořit funkčnost. Například na základě aktuální hmotnosti, rychlosti, trati .... a miliónu dalších parametrů spočítat, co se stane, když přidám plyn. Nebo sešlápnu brzdu. Sám vidíš, že je to hodně komplexní, tak můžeš začít prostě jednoduchým modelem, kde si necháš jen základ a pokud se ti podaří to rozhýbat, tak si postupně přidávat další a další vlivy a parametry. A vykreslení řeš až úplně na konci :)

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.210.–
Krolth
~ Anonymní uživatel
5 příspěvků
17. 11. 2012   #3
-
0
-

#2 liborb
Dobře, ale řekněme, že by to byla simulace "mnou zadaná". Samozřejmě, že pokud bych chtěl opravdu takovou simulaci, bral bych v potaz tyto věci. Ale já chci pouze simulaci tohoto typu (slovo "simulace" s rezervou   ), kde bude určitý objekt, který bude podle předem zadaných souřadnic jezdit. Ty budou pevně dané, a aby program tak trochu "simuloval" a nebyl jen o pevně zadaných hodnotách, vznikaly by na bázi generování určitých čísel různé výjimky v jízdě podle nějakého (a určitě složitějšího) algoritmu. Palivo a opotřebení gum bych řešil primitivně, například za každé kolo odečtu nějaké to procento z proměnné.

Ale jde mi hlavně o to, jak a čím udělat dráhu tak, aby se podle ní dalo nějak více pracovat (teď je to pouze obrázek, který jsem si s "tečkou" (Label s červeným pozadím) projel a automaticky se mi zapisovaly souřadnice, které jsem následně vložil všechny do pole a Timer na základě času pouze udává jednu hodnotu za druhou z pole. 
Další věcí, u které vůbec nevím, jak ji vyřešit, je rychlost auta. Nyní to pouze funguje tak, že jsem rychlost udával pomocí počtu přeskočení pixelů, ale tím pádem jede auto v rychlosti trhaně. Já bych chtěl docílit toho, že auto bude jezdit pixel po pixelu, ale bude se měnit čas, tím bude vznikat "pouze lépe pro oči" jeho rychlost. Ale jak udělat, aby se čas měnil tímto způsobem na základě nějakého algoritmu, to nevím.

Pak by mě také zajímalo, jak jinak by se to dalo vyřešit, než jezdícím Labelem po obrázku   . Jestli na to v Delphi jsou nějaké způsoby apod. 

Díky  

Nahlásit jako SPAM
IP: 85.13.90.–
liborb
~ Redaktor
+18
Guru
18. 11. 2012   #4
-
0
-

Ale to je pořád ta samá písnička. Řešíš jak nejlépe nakreslit auto a přitom nemáš z čeho vycházet. Takže ještě jednou. Potřebuješ datový model trati. Rovinky, zatáčky. Když budeš mít toto, tak potřebuješ datový model auta. Pozice, směr, rychlost. Všechno může být ideální a primitivní. Když budeš mít toto, tak můžeš začít autem po dráze jezdit a je jedno jestli předem daným způsobem nebo budeš počítat optimální trať. Bude se ti měnit pozice, rychlost, směr. A teď to přijde ... a teprve nyní můžeš začít kreslit. Samozřejmě na canvas, a to nejlépe jak trať tak i auto. A protože máš dobrý datový model, tak si můžeš vybrat, jestli budeš kreslit pohled z auta nebo detail pohledu z výšky na auto nebo celou mapu najednou. Nebo dokonce víc takových pohledů najednou. Všechno začíná u dat.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.208.–
Krolth
~ Anonymní uživatel
5 příspěvků
18. 11. 2012   #5
-
0
-

A co si mohu představit pod datovým modelem trati? Jak by to asi mělo fungovat a jak by to mělo zhruba vypadat?
Jak říkám, nemám s tím skoro žádné zkušenosti, takže ať to myslíš určitě dobře, já v tom mám stále velké mezery :)

Díky  

Nahlásit jako SPAM
IP: 178.255.168.–
liborb
~ Redaktor
+18
Guru
19. 11. 2012   #6
-
0
-

Datový model jsou všechna data, která potřebuješ k popisu tvého problému. Nejjednodušším modelem trati bude kružnice (poloměr). Ty máš teď trať jenom jako obrázek tudíž není žádná návaznost na programovou část. Princip je opačný, vytvoříš se seznam/pole/cokoliv úseků, na které se dá trať rozsekat a podle tohoto seznamu pak vykresluješ trať.

Udělal bych si objekt Usek, který by definoval rozhraní (zejména pro vykreslení, detekci, jestli je auto ještě na trati apod.) pro zděděné třídy. Ty by byly vlastně jen 2: Rovina a Zatacka, Rovina by měla délku, Zatacka by měla poloměr, směr (L/P) a úhel výseče (nebo jiné parametry, kterými se ti to popíše lépe). Následně vytvoříš celou trať tím, že si vytvoříš seznam objektů (kruhový seznam je pěkná datová struktura :)) Rovina a Zatacka. Nyní s tím můžeš programově pracovat, vykreslovat, "jezdit" po ní atd.

Nahlásit jako SPAM
IP: 188.75.135.–
Krolth
~ Anonymní uživatel
5 příspěvků
20. 11. 2012   #7
-
0
-

   

Tak to vypadá ještě hůře, než jsem si představoval :D
Každopádně díky moc za rady, pustím se do toho a alespoň to zkusím  

Nahlásit jako SPAM
IP: 178.255.168.–
liborb
~ Redaktor
+18
Guru
20. 11. 2012   #8
-
0
-

Můžeš začít tím, že tvoje trať bude mít tvar kruhu, takže se bude skládat z jednoho úseku. A protože chceš jezdit v podstatě jako na autodráze, tak nemusíš u auta řešit řízení, ale můžeš se "pouze" držet tratě a naučit ho pohybovat se po tvé trati.

Nahlásit jako SPAM
IP: 188.75.135.–
RomanZ
~ Anonymní uživatel
272 příspěvků
20. 11. 2012   #9
-
0
-
Nahlásit jako SPAM
IP: 90.176.60.–
Krolth
~ Anonymní uživatel
5 příspěvků
21. 11. 2012   #10
-
0
-

#9 RomanZ
Super! Díky moc :)

Nahlásit jako SPAM
IP: 160.217.134.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Simulator — založil LordMorpheus

Simulátor pro C — založil petrbow

Simulator pre x86 — založil F.J.

 

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