Palikkapelien ja kaikkien muidenkin pelien tekijöille on tässä simppeli koodi-vinkki.
Tällä voi mallintaa palikoiden törmäyksiä maahan. Palikoiden muodon saa valita itse kolmioista ympyröihin.
Edit 2019 by mod: Vaihdettu hidastukseen TIMER. Koodi toimii FreeBASICilla asetuksella -lang qb.
'Palikka-fysiikkaa by JSBasic RANDOMIZE TIMER SCREEN 7, , 0, 1 ' Tässä tilassa saadaan kätevästi kaksoispuskurointi ' Kulmien määrän voi itse valita (3-100) kulmienmaara = INT(3 + RND * 4) ' Kimmoisuus väliltä (0-1) kimmoisuus = .2 'Palikan x ja y sijainnit ja nopeus x = 160 y = 0 xn = 0 yn = 0 'Palikan kulma ja pyörimisnopeus k = 0 kn = (RND - .5) * .1 t# = TIMER DO 'Hidastus t# = t# + 0.015 WHILE TIMER < t#: WAIT &h3da, &h8: WEND yn = yn + .05 'Painovoima vaikuttaa y-akselille x = x + xn 'Lasketaan uudet sijainnit nopeuden mukaan y = y + yn k = k + kn FOR kulma = 1 TO kulmienmaara + 1 'Tässä lasketaan joka kulmalle sijainti oskulma = k + kulma * (3.14 * 2) / kulmienmaara kx = x + SIN(oskulma) * 50 ky = y + COS(oskulma) * 50 'Törmäämislaskenta-koodi on tässä: IF ky > 199 THEN exn = xn: eyn = yn: ekn = kn 'varastoidaan nykyiset nopeudet 'Sinit ja cosinit hommiin. 'Tässä on joitain vakioita (500, 50 ja 3) joita en oikein ymmärrä ja ne 'vaativat varmaan hienosääntöä. xn = xn - SIN(oskulma) * eyn / 3 xn = xn - COS(oskulma) * ekn * 3 kn = kn - exn * eyn / 500 kn = kn + SIN(oskulma) * eyn / 50 yn = yn - COS(oskulma) * eyn * (1 + kimmoisuus) yn = yn - SIN(oskulma) * ekn * 3 xn = xn * .98 'pieni kitka x akselille ja pyörimisnopeuteen kn = kn * .98 y = y - (ky - 199) 'nostetaan palikka pois maan alta END IF IF kulma > 1 THEN LINE -(kx, ky), 15 ELSE PSET (kx, ky), 15 NEXT key$ = INKEY$ 'Jos painetaan ENTER, pudotetaan palikka uudelleen IF key$ = CHR$(13) THEN y = 50: x = 160: kn = (RND - .5) * .1: xn = 0 PCOPY 0, 1 CLS 'ESC lopettaa LOOP UNTIL key$ = CHR$(27)
Aika hienosti menee! Oppisin jopa jotain uutta... kai..
Lähes joka kerta menee ihan realistisesti... aika hieno.
Tosi hieni :)
silloinkin kun fysiikat menee pieleen, nimittäin ne naurattaa usein aika paljon :>
Upeaa palikkafysiikkaa. Miksi tuo rajoitus on muuten 100? Onko se koneen tehosta kiinni, vai onko siihen jokin muu syy. Itselläni teho riittää ainakin 1000. Rupeaa pallolta liike-energia karkaamaan.
Kyllä kulmia voi lisätä yli sadankin, mutta ympyröille riittäisi paljon yksinkertaisempi koodi...
Aihe on jo aika vanha, joten et voi enää vastata siihen.