Spiel: Schütz den Bunker
Übersicht

![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 :/ |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok dann werde ich mal eine extra Type machen ![]() |
||
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
"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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group