1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-03 13:31:23 +00:00
QB64-PE/programs/samples/pete/gravity.bas

76 lines
1.6 KiB
QBasic

CLS
SCREEN 12
LET pi = 3.14159
LET accely = 0
LET ballx = 100
LET bally = 100
INPUT "Initial X Acceleration: ", accelx
CLS
LINE (0, 0)-(640, 480), 15, BF
FOR w = 1 TO 1000000
NEXT w
DO
CIRCLE (ballx, bally), 20, 15
LINE (COS(ballangle) * 20 + ballx, SIN(ballangle) * 20 + bally)-(COS(ballangle) * -20 + ballx, SIN(ballangle) * -20 + bally), 15
IF ballangle >= 2 * pi THEN LET ballangle = ballangle - 2 * pi
'###################### Y CONTROL #######################
IF bally + 20 < 480 AND accely < 4 THEN
LET accely = accely + .06
END IF
IF accely <> 0 THEN
LET bally = bally + accely
END IF
'###################### X CONTROL #######################
'This should work
IF ballx + 20 >= 640 AND accelx > 0 THEN
LET accelx = accelx * -.5
ELSEIF ballx - 20 <= 0 AND accelx < 0 THEN
LET accelx = accelx * -.5
END IF
IF accely > 0 AND bally + 20 >= 480 THEN
LET accely = accely * -.6
IF accelx > 0 THEN
LET accelx = accelx - .05
ELSEIF accelx < 0 THEN
LET accelx = accelx + .05
END IF
ELSEIF accely <= 0 THEN
IF accelx > 0 THEN
LET accelx = accelx - .002
ELSEIF accelx < 0 THEN
LET accelx = accelx + .002
END IF
END IF
IF accelx <> 0 THEN
LET ballx = ballx + accelx
LET ballangle = ballangle + accelx / pi / 10
END IF
'###################### DRAW #######################
CIRCLE (ballx, bally), 20, 0
LINE (COS(ballangle) * 20 + ballx, SIN(ballangle) * 20 + bally)-(COS(ballangle) * -20 + ballx, SIN(ballangle) * -20 + bally), 0
LET key$ = INKEY$
FOR w = 1 TO 40000
IF key$ <> "" THEN END
NEXT w
LOOP