Kirjoitin tämän koodinpätkän puoliksi vahingossa. Se simuloi tykillä ampumista ampumalla pisteen, jonka vauhti hitaasti hidastuu ja jonka maan veto voima vetää alas.
' Pisteen liikuttaminen! Programmed by Comi!
SCREEN 12
CLS
jaljet = 0 'poistetaanko vanhat pisteet? 0 = ei 1 = kylla
suunta = 1 'suunta jonne piste liikkuu. 1 = oikea 2 = vasen!
x = 1 ' pisteen aloitus x-koordinaatti
y = 20 ' pisteen aloitus y-kordinaatti
p = 20 ' kuinka nopeasti putoaminen alkaa
d = -5 ' putoamisnopeus. Negatiivinen luku ampuu pisteen yläviistoon
SLEEP 2 'viive aloituksessa
DO
PSET (x, y), 15
oldy = y: oldx = x
k = k + 1
IF suunta <> 2 THEN x = x + (p / 2)
IF suunta = 2 THEN x = x + (p / 2 * -1)
IF k = p THEN
k = 0
p = p - 1
END IF
IF p < 1 THEN p = 0
IF p > 0 THEN
IF suunta <> 2 THEN x = x + 1
IF suunta = 2 THEN x = x - 1
d = d + 1
y = y + d
END IF
IF x > 640 THEN END ' Lopettaa ohjelman jos piste poistuu ruudulta.
IF x < 0 THEN END
IF y > 480 THEN END
FOR i = 1 TO 60000 ' Hidaste. Suurenna jos piste liikkuu liian
NEXT ' nopeasti.
IF jaljet = 1 THEN PSET (oldx, oldy), 0 'pyyhkii vanhat jaljet jos
'niin on valittu
LOOP WHILE INKEY$ = ""Eikun siitä tykkipeliä tekemään. Ja eikö tuo voisi liikkua tasaisemmin
x = 1 ' pisteen aloitus y-koordinaatti y = 20 ' pisteen aloitus x-kordinaatti
x on y ja toisinpäin...? :P
juu tuossa on pieni seloste virhe tosiaan
y ja x akseleilla. Voisihan sen pisteen koittaa
saada liikkumaan tasaisemminkin.
x y akseli virheet korjattu!
vaihdoit vaan kommentit :D
Onhan toi ihan mukava. Määkin teen nyt tykkipelin :P
Hei!!! Mitäs toi tekee:
IF p = 0 THEN
END IF
Niinpä... eli jos p on 0 niin sitten ei mitään...?
Tässä on vastaavanlainen. Ei YHTÄ nopea kuin yllä oleva,
mutta fysiikan kannalta todenmukaisempi :)
SCREEN 12
CONST pi = 3.141592654#
CONST g = 9.81 ' Vetovoima
PRINT "KULMA:"
INPUT kulma
PRINT "VOIMA:"
INPUT speed
StartX = 1 ' Aloituskordinaatit
StartY = 200 '
t = 0 '
DO UNTIL (y + StartY) > 480
t = t + .1 ' Päivitetään pisteen paikka 0.1
' sekunnin välein. Mitä pienempi luku,
' sitä yhtenäisempi lentorata :)
x = speed * COS(kulma * pi / 180) * t
y = (speed * SIN(kulma * pi / 180) * t - .5 * g*(t * t))* -1
PSET (x + StartX, y + StartY), 14
FOR a = 1 TO 1000 ' Ohjelma tehty hitaalla koneella,
NEXT a ' siksi viive on pieni...
LOOP ' ...(kiinnostava tieto)...sooda. Joo toi if p = 0 then: end if juttu on vissiin
jäänyt vaan tohon, koska poistin sen sisällön yhessä vaiheessa, koska keksin helpomman tavan tehä saman.
Poistanpas sen nyt sitten...
Aihe on jo aika vanha, joten et voi enää vastata siihen.