Spiel: Schütz den Bunker

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen

Xeres

Moderator

BeitragMo, Sep 20, 2010 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Zwei verschachtelte Schleifen:
Code: [AUSKLAPPEN]
Local x, y

For y=0 To 5
    For x=0 To 5
        Print(x+", "+y)
    Next
Next

WaitKey()


Raiden93 hat Folgendes geschrieben:
Und kann ich sag ich jetzt nochmal Hauptkategorien oder was das ist löschen sprich
Bitte deutsch oder englisch - andere Sprachen verstehe ich nicht fließend.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Raiden93

BeitragDi, Sep 21, 2010 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wie löse ich das
Code: [AUSKLAPPEN]
 If Spieler\Schuss_X =< 100
         Delete Spieler
      End If


Mein Type sieht wie folgt aus:
Code: [AUSKLAPPEN]
Type SpielerTyp
   Field X#, Y#, Speed# ;Bewegung
   Field Schaden# ;Schaden
   Field Schuss_X#, Schuss_Y#
   Field Leben# ;Leben
   Field Breite#,Hohe# ;Seiten
   Field Punkte# ;Status
End Type


Ich möchte nur das der Schuss gelöscht wird und nicht der Spieler also eigendlich Spieler\SchussX soll Deletet werden aber das geht ja nicht :/

Xeres

Moderator

BeitragDi, Sep 21, 2010 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Leg den Schuss als eigenständigen Type an. Sonst kannst du eh nur einen gleichzeitig haben... ist nicht besonders flexibel so.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Raiden93

BeitragDi, Sep 21, 2010 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok dann werde ich mal eine extra Type machen Wink

Raiden93

BeitragMi, Sep 22, 2010 10:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe es jetzt so gemacht aber irgendwie geht die For schleife nicht liegt das daran das man jede schleife nur 1 mal machen darf? z.b

Die Function
Code: [AUSKLAPPEN]
Function Spiel_GS_Kollision()
   For Gegner.GegnerTyp = Each GegnerTyp
      For Schuss.SchussTyp=Each SchussTyp
         If Schuss\X => Gegner\X And Schuss\X <= Gegner\X +50
            If Schuss\Y => Gegner\Y And Schuss\Y <= Gegner\Y -50
               Delete Gegner
               Delete Schuss
            End If
         End If
      Next
   Next
End Function


2Function
Code: [AUSKLAPPEN]
Function Spiel_Schuss_Erstellen()
   For Schuss.SchussTyp=Each SchussTyp
            ;Schuss Zeichen und Bewegung
      Color 255,255,0
      Oval Schuss\X,Schuss\Y,3,3
      Schuss\X = Schuss\X -3
      
      Next
      If MouseHit(1) ;Maus links Schuss Erstellen
         Schuss=New SchussTyp
         Schuss\Speed=Rnd(0.01,0.25)
         Schuss\Y = MouseY() +3
         Schuss\X = 710
      End If
End Function

Xeres

Moderator

BeitragMi, Sep 22, 2010 10:26
Antworten mit Zitat
Benutzer-Profile anzeigen
"Geht nicht" ist keine Fehlerbeschreibung. Aber das Problem ist ja deutlich: Du löschst Gegner und Schuss, die Variablen werden NULL - und dann läuft die innere Schleife Weiter, Schuss enthält wieder ein gültiges Objekt, aber Gegner ist immer noch NULL - Fehler beim zugriff auf ein nicht vorhandenes Objekt.
1) Objekt über ein Field zum löschen markieren und später entfernen
2) Innere Schleife mit Exit verlassen.

Man kann die Schleifen selbstverständlich so oft verwenden wie es einem nötig erscheint...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Raiden93

BeitragMi, Sep 22, 2010 10:38
Antworten mit Zitat
Benutzer-Profile anzeigen
So sollte es glaube besser sein.Sorry wenn ich wieder was falsch gemacht habe aber will es ja irgendwann mal kapieren^^
Code: [AUSKLAPPEN]
Function Spiel_GS_Kollision()
   For Gegner.GegnerTyp = Each GegnerTyp
      For Schuss.SchussTyp=Each SchussTyp
         If Schuss\X => Gegner\X And Schuss\X <= Gegner\X +50
            If Schuss\Y => Gegner\Y And Schuss\Y <= Gegner\Y +50
               Delete Gegner
               Delete Schuss
               Exit
            End If
         End If
      Next
   Next
   
   If MouseHit(1) ;Maus links Schuss Erstellen
      For s=1 To 2
         Schuss=New SchussTyp
         Schuss\Speed=Rnd(0.01,0.25)
         Schuss\Y = MouseY() +3
         Schuss\X = 710
      Next
   End If

   If NeueGegner=True Then
      NeueGegner=False
      For i=1 To 5
         Gegner=New GegnerTyp
         Gegner\X = Rand(-50,-550)
         Gegner\Y = Rand(50,550)
      Next
   EndIf
   
   If KeyHit(57)
      NeueGegner = True
   End If
End Function



EDIT:
Habs geschafft Wink

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group