TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen
Registrieren Hilfe Community Downloads

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29.11.2004, 08:01   #1 (permalink)
cromelain
Gast
 

Beiträge: n/a

Standard Streetball in VB

Moin Jungs! Also wir haben heute Projektwoche in der Schule und müssen in Visual BAsic ein "Streetball Spiel" programmieren.

Der folgende Code ist vorhanden:

Code:
' Diese "Billigst-Version" kann immerhin die Ballbewegung real nachbilden! ...
' ... sonst aber auch nicht viel mehr.

' Es fehlen etliche Bedingungen, die formuliert werden müssen, z.B.:
' -- Abpraller an Wänden, Decke und Boden
' -- Bedingungen für Treffer
' -- Zählen der Treffer
' -- Gesamter Spielablauf für 2 Spieler ...
' -- Es könnten auch Bilder eines Balls (oder sogar ein ganzes Spielfeld
'    als Bild) geladen und entsprechend bewegt werden. (siehe
'    Beispiel "Fliegende Torte")

Option Explicit
' Farbnummern müssen Ganzzahlen sein, Integer reichen aber
' nicht aus, da die Farbnummern z.T. über 16 Mio. sind >> Long!
    Dim i As Integer, _
        X As Single, Y As Single, Kx As Single, Ky As Single, _
        dt As Single, v As Single, alpha As Single, _
        Vx As Single, Vy As Single, Entfernung As Single
    
    Const Hintergrund = vbBlack
    Const Vordergrund = vbRed
    Const Füllung = vbBlue
    Const Rahmenfarbe = vbYellow
    Const Linienstärke = 3

    Const pi = 3.1415926
    Const g = 9.81
    Const Radius = 0.2
    
    
Private Sub cmdEnde_Click()
    End
End Sub


Private Sub cmdTest_Click()
    Entfernung = Val(txtEntfernung.Text)
    If Entfernung > 10 Then Entfernung = 10
    If Entfernung < 1 Then Entfernung = 1
    txtEntfernung.Text = Format(Entfernung, "0.00")
End Sub


Private Sub cmdTurnier_Click()
' Zufallszahl von 1 bis 10m, aber hier nicht Ganzzahl, sondern mit Kommastellen!
    Entfernung = Rnd * 9 + 1  ' Hier NICHT Rnd * 10, da Int fehlt!!
    txtEntfernung.Text = Format(Entfernung, "0.00")
End Sub


Private Sub cmdWurf_Click()
    alpha = Val(txtWinkel.Text)      ' Abwurfwinkel
    v = Val(txtGeschwindigkeit.Text) ' Abwurfgeschwindikeit
    alpha = alpha / 180 * pi         ' alpha in Radiant umgerechnet
    v = v / 3.6                      ' v von km/h in m/s umgerechnet
    
    Vx = v * Cos(alpha)
    Vy = v * Sin(alpha)
    
    tmrBlinker.Enabled = False
    tmrBlinker.Enabled = True
    
    Call Übermalen          ' erst Übermalen des alten Balls
    Call KorbZeichnen       ' dann Korb neu zeichnen.
   
    X = 12 - Entfernung
    Y = 0       ' Ball liegt auf dem Boden! (evtl. auch Y = 1m o.ä. sinnvoll ...)
    i = 0
End Sub


Private Sub Form_load()
    tmrBlinker.Enabled = False
' Feld wird gezeichnet, Koordinaten werden festgelegt
    Call Grundeinstellungen
End Sub


Private Sub Grundeinstellungen()
    picStreetball.BackColor = Hintergrund
    picStreetball.DrawStyle = vbSolid
    picStreetball.ForeColor = Vordergrund
    picStreetball.DrawWidth = Linienstärke
    
    picStreetball.AutoRedraw = True ' sonst ist kein Überzeichnen möglich
    picStreetball.Scale (0, 5)-(12, 0) ' von oben links nach unten rechts
    dt = tmrBlinker.Interval / 1000 ' dt in Sekunden: Zeitintervall von einem Timer
                                    ' zum nächsten Timersprung -- in Sekunden!
    Call KorbZeichnen
End Sub


Private Sub tmrBlinker_Timer()
    Call Übermalen
                    ' Geschwindigkeit in X-Richtung (v*cos(alpha)) ändert sich nicht!
    Vy = Vy - g * dt        ' Geschwindigkeit in Y-Richtung (nach oben)
    X = X + Vx * dt         ' Position X  des Balls         (nach rechts)
    Y = Y + Vy * dt - 1 / 2 * g * dt ^ 2   ' Position Y     (nach oben)
    
    Call Ball
    
' Jetzt Fillstyle wieder zurücknehmen (sonst werden auch weitere Formen gefüllt)
    picStreetball.FillStyle = vbFSTransparent
End Sub


Private Sub Übermalen()
' Übermalen des alten Kreises
    picStreetball.FillColor = Hintergrund
    picStreetball.FillStyle = vbFSSolid
    picStreetball.Circle (X, Y), Radius, Hintergrund
End Sub


Private Sub Ball()
' Hier: Kreis mit "Füllung" (blau) und "Rahmenfarbe" (gelb)
    picStreetball.FillColor = Füllung
    picStreetball.FillStyle = vbFSSolid
    picStreetball.Circle (X, Y), Radius, Rahmenfarbe
End Sub


Private Sub KorbZeichnen()
' Abstand des Korbes (Vorderkante) von der Wand --> Normwert mir unbekannt! (1m gesetzt)
    Kx = 10.5
' Dies ist die Normhöhe eines Basketballs (3,05m).
    Ky = 3.05
' Durchmesser des Korbes? Normwert mir unbekannt --> hier einfach 0.5m gesetzt.
    picStreetball.Line (Kx, Ky)-(Kx + 0.9, Ky + 0.5), , B   ' Korb zeichnen
    picStreetball.Line (Kx + 0.9, Ky + 0.5)-(Kx + 1, Ky + 0.5)
End Sub
über option explicit steht mehr oder weniger der Auftrag!
Könnt ihr helfen??
  Mit Zitat antworten
Antwort

Stichworte
streetball


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:28 Uhr.






Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum, Datenschutz Copyright © 1999-2015 TweakPC, Alle Rechte vorbehalten, all rights reserved