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 SubNäyttää hyvälle, mutta olispä vielä vb.netille....huoh!
Hmm... Hyvältä näyttää, pitääpä kokeilla joskus, jos jaksaa... =)
Entäs binaryä?
Jos oikeen muistan niin sooda ei voi tehdä exejä vb viitosellaan.
ai eikö muka?
pitäis saada kyllä kun kolmosellaki onnistuu...vaikka siitä on aikaa kun oli kolmonen. nythän on kutonen.
se kolmonen oli muuten sellanen special versio, siinä oli erikoiskomentoja.
(= puolet enemmän kuin VB6:ssa)
ja tuo tykkipelin alku on ihan lupaava!
lainaus:
minulla on sama versio eikä siinäkään pysty koska se on CCE (tai joku) versio.
ai eikö muka?
just cce. control creation edition. freewarea, eli ei exeks kääntöä. joku toinen jolla on "oikea" vb voi varmaan kääntää jos tykkää :P
mä voisin muutes kääntää mutta eipä ole ole serveri-tilaa tai mitään vastaavaa =/
muutes, näytti lupaavalta ja ihan mukavan tuntuinen olikin tuosta on melko helppo vääntää omaa projektia jos vain jaksaisi, esim grafiikka jne... tyyliin joku worms tai molez tai liero, sillai et kun ammus osuu "hiekkaan" se räjähtää ja siitä jää pieni kraateri jne... :)
tuo fysiikka oli mukavasti muutes tehty, eipä pahempaa moittimista siitäkään :)
hieno ja yksinkertainen pätkä :)
jes, tulipas mukavasti kivaa kommenttia :) nomic, käännä ja anna mulle exe ni voin tunkea vaikka mun sivuille...
iha kiva tosiaa... :)
no jaa ihan hauska
sooda, no laitan sähköpostissa tulemaan...
Nånih, binääriä löytyy tuolta: http://koti.mbnet.fi/koodaaja/tp.exe
mites tähän sais määritellyks sen mihin se kuula törmää, olen ite kokeillut määrittämällä neliöitä pikseleillä mutta niitten paikka muuttuu aina kun vaihtaa resoluutiota. Oisko tähän muuta keinoa, kuten että ohjelma rekisteröi onko kuula esim shape1:sen sisällä vai ulkopuolella.
Pasikki: mitä tarkoitat paikan muuttumista resoluutiolla? Jos tuota että tykki on aina formin keskellä, niin määrität vaan tykille kiinteän paikan ton tilalle että siirretään se keskelle. Ja shapeja ei kannata käyttää.
tarkoitan sitä että jos määritän pikseleillä paikan johon kuulalla yritetään osua ja pistän visuaalisesti sen päälle esim image1:sen, niin kun vaihdan resoluutiota kuvan paikka muuttuu. Vai voiko koodissa määrittää tietyn objektin sijainnin jotenkin?
-
tyhmiä kysymyksiä jo vuodesta 2004.  C Pasikki
Miten kuvan paikka muka muuttuu resoa vaihtaessa :o ja miksi pitäs käyttää imageja :o no kuitenki: koodissa voi objujen sijainteja muuttaa .left ja .top-hommilla. Tyyliin image1.left=0 heittää image1:n formin vasempaan laitaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.