Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Palikka-fysiikkaa

jsbasic [02.12.2003 13:15:49]

#

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 1

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta