sok = 1000 eroszorzo = 80000 maxseb = 670 konst = 20000 k = 4 SCREEN 12 RANDOMIZE TIMER KEY(11) ON KEY(12) ON KEY(13) ON KEY(14) ON DIM x1(sok): DIM y1(sok) DIM xero(sok): DIM yero(sok) DIM xseb(sok): DIM yseb(sok) ' Bolygok nehezsegi tereben mozgo muhold palyaja (foabra); ' gyorsulasa (jobbra fent); ' sebessege (jobbra lent). ' A kezdeti felteteleket es az adatokat veletlenszeruen valasztja meg. ' Uj felallas kerese: Enter. ' Atvaltas finomabb illetve durvabb iteraciora: Szokoz ' Atvaltas nyomtorlo uzemmodra: - ' nyomhuzo uzemmodra: + ' VEGE: Escape uj: SOUND 2000, 2 LOCATE 3, 60: PRINT "Mehet? (Enter)" ff: f$ = INKEY$: IF f$ = "" THEN GOTO ff IF f$ <> CHR$(13) THEN END uj2: CLS a = -1 xx = 200 yy = 200 mm = 1 vx = RND * 200: vy = RND * 200 palyasugar(0) = 30 FOR i = 1 TO k palyasugar(i) = palyasugar(i - 1) + (RND + 1) * 20 szogseb(i) = SQR(konst / palyasugar(i) ^ 3) m(i) = RND * 30000 + 20000 r(i) = (m(i) ^ 1 / 3) / 2000 szog0(i) = RND * 6.28 NEXT i ee: ffx = 0: ffy = 0 IF a = 1 THEN dt = .00005 IF a = -1 THEN dt = .0005 PotEa = 0 FOR i = 1 TO k xregi(i) = x(i) yregi(i) = y(i) tav(i) = SQR((xx - x(i)) ^ 2 + (yy - y(i)) ^ 2) IF tav(i) > r(i) THEN GOTO nincskozel GOTO uj nincskozel: IF tav(i) < r(i) + 5 THEN dt = .00005 ido = ido + dt fx(i) = -50 * mm * m(i) * (xx - x(i)) / tav(i) ^ 3 fy(i) = -50 * mm * m(i) * (yy - y(i)) / tav(i) ^ 3 ffx = ffx + fx(i) ffy = ffy + fy(i) x(i) = 200 + palyasugar(i) * COS(szogseb(i) * ido + szog0(i)) y(i) = 200 + palyasugar(i) * SIN(szogseb(i) * ido + szog0(i)) CIRCLE (xregi(i), 400 - yregi(i)), r(i), 0 CIRCLE (x(i), 400 - y(i)), r(i), 7 PotEa = PotEa - 50 * mm * m(i) / tav(i) NEXT i sebesseg = SQR(vx ^ 2 + vy ^ 2) LOCATE 3, 40: PRINT "Sebesseg: "; INT(sebesseg) nincshajtas: MozgEa = mm * sebesseg ^ 2 / 2 Ea = PotEa + MozgEa LOCATE 3, 1: PRINT "Energia:"; INT(Ea); " " vx = vx + ffx * dt / mm vy = vy + ffy * dt / mm xx = xx + vx * dt yy = yy + vy * dt pontgyartas: x1(n) = xx y1(n) = yy IF torol = 1 THEN PRESET (x1(m), 400 - y1(m)) PSET (xx, 400 - yy), 14 IF xx > 500 OR yy > 400 OR xx < 0 OR yy < 0 THEN GOTO uj xseb(n) = 500 + vx / 10 yseb(n) = 300 - vy / 10 LINE (500, 300)-(xseb(n), yseb(n)), 3 PSET (xseb(n), yseb(n)) xero(n) = 500 + ffx / 300 yero(n) = 100 - ffy / 300 LINE (500, 100)-(xero(n), yero(n)), 5 PSET (xero(n), yero(n)) IF torol = 0 THEN GOTO nemtorol PRESET (xseb(m), yseb(m)) PRESET (xero(m), yero(m)) LINE (500, 100)-(xero(m), yero(m)), 0 LINE (500, 300)-(xseb(m), yseb(m)), 0 nemtorol: a$ = INKEY$ IF a$ = CHR$(27) THEN END IF a$ = CHR$(13) THEN GOTO uj2 IF a$ = " " AND a = 1 THEN a = -1: GOTO ee IF a$ = " " AND a = -1 THEN a = 1 IF a$ = "+" THEN torol = 0 IF a$ = "-" THEN torol = 1 ELSE GOTO yy CLS FOR i = 1 TO k CIRCLE (x(i), 400 - y(i)), r(i), 7 NEXT i yy: n = n + 1 IF n > sok THEN n = 1: FOR i = 1 TO k: CIRCLE (x(i), 400 - y(i)), r(i), 7: NEXT i m = n - sok + 1 IF m <= 0 THEN m = m + sok: FOR p = 11 TO 14: KEY(p) OFF: KEY(p) ON: NEXT GOTO ee