Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Tykkipelin alku

sooda [19.02.2004 11:28:12]

#

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

Vastaus

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

Tietoa sivustosta