Tykki joka ampuu ammuksen suht aidosti. Vasemmalla hiiren napilla ei pyyhi ammusta, oikealla pyyhkii.
Const pi = 3.14159265358979 'pii Const g = 9.81 ' painovoima Private TykkiX, TykkiY, ampumassa 'tykki x ja y, ampumassa on sitä varten ettei voisi ampua uudelleen jos ammus lentää jo Private Sub Form_Load() ScaleMode = 3 'scalemode pixeleiksi, paljon kivempaa DrawWidth = 2 'selkeämpää TykkiX = ScaleWidth / 2 'liikutetaan tykki keskelle TykkiY = ScaleHeight / 2 '... PiirräTykki 'nimestäkin selviää mitä tehdään :D End Sub Private Sub PiirräTykki() Line (TykkiX, TykkiY)-(TykkiX - 10, TykkiY + 20) 'piirretään tykki Line (TykkiX, TykkiY)-(TykkiX + 10, TykkiY + 20) '... Line (TykkiX - 10, TykkiY + 20)-(TykkiX + 10, TykkiY + 20) '... End Sub Sub ammu(StartX, StartY, kulma, vauhti, suunta, pyyhikö) kohta = 0 Do kohta = kohta + suunta 'liikutetaan ammusta X = vauhti * Cos(kulma * pi / 180) * kohta 'x-kohta Y = -1 * (vauhti * Sin(kulma * pi / 180) * kohta - 0.5 * g * (kohta * kohta)) 'ja y-kohta PSet (X + StartX, Y + StartY) 'piirretään ammus s = Timer: Do: DoEvents: Loop Until s + 0.03 < Timer 'ootetaan vähän If pyyhikö Then PSet (X + StartX, Y + StartY), BackColor 'jos pyyhitään niin pyyhitään Loop Until (Y + StartY > ScaleHeight) Or (X + StartX > ScaleWidth) Or (X + StartX < 0) 'luupataan kunnes ammus menee yli reunojen End Sub Private Sub Form_Mouseup(Button As Integer, Shift As Integer, X As Single, Y As Single) If ampumassa Then Exit Sub 'ettei voi ampua jos ammus lentää jo ampumassa = True Cls PiirräTykki a = Y - TykkiY 'yjutsku If a > 0 Then a = 0 'ettei voi ampua alaspäin b = X - TykkiX 'xjutsku c = Sqr(b ^ 2 + a ^ 2) 'lasketaan pituus If b = 0 Then 'ammutaan ylös? ang = 90 'kulma suoraan ylös Else 'muualle ku ylös ang = -180 / pi * Atn(a / b) 'kulma End If pow = c / 3 'ampumispoweri suunta = 1 If b < 0 Then suunta = -1 'ammutaanko oikeelle? Caption = "Kulma: " & ang & ", voima: " & pow 'infoo ammu TykkiX, TykkiY, ang, pow, suunta, Button - 1 'ja ammutaan. ampumassa = False End Sub Private Sub Form_Unload(Cancel As Integer) End 'jotta varmana loppuisi jos vaikka ammutaan välillä niin ei sulkeudu kun se looppaa. End Sub
Aihe on jo aika vanha, joten et voi enää vastata siihen.