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.
'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 = 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
1
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
'Jos painetaan ENTER, pudotetaan palikka uudelleen
IF INKEY$ = CHR$(13) THEN y = 50: x = 160: kn = (RND - .5) * .1: xn = 0
'FOR hidastus = 1 TO 8000: NEXT
PCOPY 0, 1
CLS
GOTO 1Aihe on jo aika vanha, joten et voi enää vastata siihen.