» Poradna » Ostatní

C++ , Proměnná, jenž představuje čísla mezi dvěma proměnnými

 |   |  Microsoft Windows XP Chrome 49.0.2623.112

Lze nějak udělat proměnnou,jenž představuje čísla mezi dvěma proměnnými, které mění své hodnoty, aniž by se muselo využít cyklu, nebo pole? Předem děkuji.

Mohlo by vás také zajímat

Odpovědi na otázku

 | Microsoft Windows 8 Chrome 45.0.2454.93

Nevim, co presne chcete, ale neslo by to vyresit podminkou?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Chrome 49.0.2623.112

V sfml dělám "2d mini hru", kde je kanon a cile, ale zasekl jsem se u toho ,že jak udělat "zaznamenání" toho ,že jsem se trefil. Tak jsem dal cíle do ohraničeného čtvercového boxu a když se ho koule "dotkne" tak se to bude počítat jako zásah. Ale není to tak efektivní jak bych chtěl, protože ta koule má jen jeden bod dotyku a tak to skouším dát taky do boxu, ale jelikož každým zásahem koule mění velikost ,tak se mi nedaří vytvořit if aniž bych nemusel použít cyklus.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Chrome 49.0.2623.112

Prostě jak zaznamenat to ,že se dva obrazce dotkly,střetli...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 8 Chrome 45.0.2454.93

To v IF pouzivate porovnavani "==" a ne vetsi/mensi?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Chrome 49.0.2623.112

Samozřejmě,že ne. To bych musel použít pole.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 54.0.2840.71

Proč bys počítal pole? Samozřejmě že nemusíš počítat pole. Prostě v podmínce testuješ souřadnice té "koule". Pokud jsou hranice vodorovné a svislé (pokud jsou ohraničené čtvercem nebo obdélníkem), je to jednoduchá podmínka. Pokud jsou třeba šikmé, můžeš použít matematiku a zamyslet se nad rovnicí přímky (úsečky)...v programování se znalost matematiky opravdu hodí...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Chrome 49.0.2623.112

To jo no, ale jak porovnat 2 úsečky s různými délky bez využití cyklu

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 54.0.2840.71

MATEMATIKA, jde to jedou podmínkou. Musíš si vzpomenout na rovnici přímky, rovnici kružnice a počítat průsečíky...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 54.0.2840.71

Jo a k tomu rovnice ne koule, ale pro 2D rovnici kružnice (rovnice obvodu kruhu). Dohromady s rovnicí přímky a je to. Žádné pole. Vzpomeň si na matematiku.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Chrome 49.0.2623.112

Zatím mám jen toto:if((x>xf&&x<xf+50)&&(y>yf&&y<yf+50))kde x je sloupec bodu dotyku koulekde y je řádek bodu dotyku koulekde xf je sloupec bodu dotyku cílekde yf je radek bodu dotyku cílea kde číslo 50, určuje délku úseček boxu ve kterém je cíl.if((x>xf&&x<xf+50)&&(y>yf&&y<yf+50))

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 54.0.2840.71

Včil to dohromady nedám jen tak "z rukávu", ale zkus se prostě zamyslet nad analytickou geometrií, goniometrickými funkcemi...a nad dvěma rovnicema o dvou nezmámých, možná třech rovnicích o třech neznámých...nevím teď jak to bude vycházet. Tím hranice mohl mít třeba tvaru sinusovky...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Chrome 49.0.2623.112

Fííha, to bude dlouhý den učení

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 54.0.2840.71

To bude, ale taky to pak bude stát za to. Rázem zjistíš, že dokážeš hodně zajímavé věci. Z hlavy ti tady na to kód fakt nevyplivnu, sám bych si na to musel sednou a nějak to vymyslet, ale princip je takový.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 8 Chrome 45.0.2454.93

a vy do toho potrebuje hodit velikost te koule? Pak ta podminka je nejak takhla x+r < xf && x-r > xf+50 .x je na stredu kruhu a r jeji polomer.Pres cyklus a Pythagora by slo testovat kolizi presneji. Nebo pouzit alespon staroegyptsky styl vypoctu obsahu kruhu (oktagon je kruhu podobnejsi jak ctverec). Jak na to, nacham myslet vas, cviceni mozku je obcas hodi.Jeste neco, dohodil bych zavorky pro lepsi citelnost, kompiler to stejne zlikviduje (jestli se nejedna o nejaky paskvil nebo jednoduchy interpreter).

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Chrome 49.0.2623.112

No pravda, ale nevím jak by se dal číslem označit střed kružnice, když máš slopec a řádek.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 8 Chrome 45.0.2454.93

Tak takhle:x+d < xf && x > xf+50y+d < yf && y > yf+50d je prumer kruznice = momentalni sirka a vyska ctverce, ve kterem jeJestli mate problem si to predstavit, tak doporucuju vzit si papir (idealne ctvereckovy) a tuzku a nakreslit si ty situace. Pak to bude jednodussi.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 8 Chrome 45.0.2454.93

Jednodussi asi bude ukazat tu cast kodu, kde se o to snazite.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 54.0.2840.71

Já mám takové tušení, že na to jde úplně špatně. Kód mu z hlavy nenapíšu, nepamatuju si z hlavy ty rovnice 2D tvarů. Ale jde to jednou nebo dvěma podmínkama, jen si prostě před tím trochu započítat. A taky využije dvě rovnice o dvou neznámých a vyjádřit si co potřebuje. Jo, a pak někteří budou tvrdit, že matematiku nikdo v reálném životě nevyužije. V technice a obzvlášť v programování se matika dá hodně využít...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 8 Chrome 45.0.2454.93

Matika, fyzika i chemie, alespon nejake zakladni znalosti, se v zivote hodi. Navic zrovna matematika by mela cloveka naucit resit situace jednodusseji (to, ze casto ucitele vyvolaji v zacich odpor, je na jinou debatu).Osobne bych byl i pro zaklady programovani na zakladkach (i treba pitomy basic), me to tehdy taky zmenilo castecne pohled na svet.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 7 Chrome 53.0.2785.148

Na téma "detekce kolizí" nebo spíš anglicky "collision detection" je sepsáno mnoho a mnoho článků/textů/knih. Doporučuji googlit.Něco málo jsem našel za tebe: https://developer.mozilla.org/en-US/docs/Games/Techniqu... Tam máš celkem hezkou ukázku kódu pro kolizi box-box a kruh-kruh. Kolize box-kruh je mnohem náročnější, hlavně v oblasti rohu obdelníku, ale taky proveditelná. Viz např zde: http://stackoverflow.com/questions/21089959/detect...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 7 Chrome 53.0.2785.148

P.S. Celé téma detekce kolizí není ani tak moc o programování jako spíš o matematice, geometrii a tvojí představivosti.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 8 Chrome 45.0.2454.93

Hlavne ta predstavivost. Matematika a geometrie pak poslouzi k optimalizaci kodu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 7 Chrome 53.0.2785.148

jj, ale naštěstí ve 2D si lze ještě možnosti dobře nakreslit na papír, tak tam ta představivost ještě jde obalamutit, ale ve 3D se už hlavička zapotí.Ikdyž ono už u 2D vzniká složitá situace, když dotýkající se obdélníky nejsou rovnoběžné s osami, ale jsou nějak natočené. Tak už tam dostane hlava zabrat. To je pak fakt lepší vyhledat literaturu na téma detekce kolizí a použít něco co už vymyslel někdo před námi.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Chrome 49.0.2623.112

Hmm, aha , já spíše hledal typem: c++ sfml shape touch.... ,moc díky

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 7 Chrome 53.0.2785.148

WTF? Nejsem si zcela jistý co chceš. Pokud je to ale to co si představuji tak to nejde.Ale zkus to popsat trochu detailněji, včetně toho k čemu to chceš použít. Možná tě navedeme na správnou cestu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 7 AppleMAC-Safari 5.0

Malo by sa to dat urobit bitovym posuvom a vymaskovanim patricnych bitov.

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: C++, Proměnná