type problem nr.2
Übersicht

SchoaschBetreff: type problem nr.2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi ![]() also ich hab die Übung schon ein wenig ausgebaut --> is schon son richtiges minigame nur fehlt mir noch der endgegner...den hab ich so gut wie fertig nur gibt es da ein winzig kleines prob. also man muss gegen den Boss wasserkugeln schießen und der schießt Feuerkugeln zurück...ich hab das mit den Leben und so schon fertig (außer das man nicht sterben kann aber das mach ich später, sonst kann man net gut testen) aber ich will das mit Code: [AUSKLAPPEN] If RectsOverlap(s\x,s\y,20,20,gs\x,gs\y,20,1) Then Delete gs.Schuss2 Delete s.Schuss machen das wenn die sich überlappen, dass sie dann verschwinden. Ich hab mal versucht das wo einzubaun und hab das schon gehabt das die verschwinden aber wenn das gegangen is, hat was anderes VOLL gesponnen. ich hab wegen den 2 types (gegnerische schüsse, meine schüsse) zwei for-next schleifen gebraucht (For s.schuss = each schuss - For gs.schuss2 = each schuss) und in keine von den beiden kann ich den Befehl reingeben. hab schon probiert eine schleife in die andere zu geben... aber nie bin ich ans richtige ergebnis gekommen ich hoffe ihr könnt mir helfen, hier ist der code vom boss: Code: Function Bosseins(Wasservorrat) aaa = 1 Leben = 3 LebenF = 10 wzahler = 10 wzahler2 = 80 Repeat Color 0,0,255 wzahler = wzahler + 1 If wzahler >= 10 And wasservorrat > 0 And MouseHit(1) Or aaa = 1 Then wzahler = 0 s.schuss = New schuss s\x = MouseX() If aaa = 1 Then s\x = - 50 s\y = 600 s\geschwindigkeit = 2 wasservorrat = wasservorrat -1 aaa = 0 EndIf wzahler2 = wzahler2 + 1 If wzahler2 >= 80 Then wzahler2 = 0 gs.schuss2 = New schuss2 gs\x = Rnd(0,800) gs\y = - 20 gs\geschwindigkeit = 1 EndIf Color 255,0,0 For gs.schuss2 = Each schuss2 gs\y = gs\y + gs\geschwindigkeit Oval gs\x,gs\y,20,20,1 If gs\y >= 601 Then Leben = Leben - 1 Delete gs.schuss2 Next Color 0,0,255 For s.Schuss = Each Schuss s\y = s\y - s\geschwindigkeit Oval s\x,s\y,20,20,1 If RectsOverlap(s\x,s\y,20,20,0,0,800,50) Then LebenF = LebenF - 1 Delete s.Schuss EndIf Next Color 255,0,0 Rect 0,0,800,50 Color 0,255,0 Text 100,20,"Leben der Feuerwand: " + LebenF Text 0,50, Leben Color 50,50,255 Rect 5,590,Wasservorrat,10 Flip Cls Until KeyHit(1) End Function und hier die zwei types: Type Schuss Field x Field y Field Geschwindigkeit End Type Type Schuss2 Field x Field y Field Geschwindigkeit End Type danke schon mal im vorraus: Schoasch ~Editiert~ [ code ] [ /code ] Tag angefügt. MfG D2006 |
||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verwendest du für die Schüsse keine Bilder??
Falls ja, kannst du das ganz einfach mit if imagescollide machen. Ich mein wenn du schon ein game daraus machen wilsst, wärs ja vllt besser wenn du n bild verwendest. Was anderes fällt mir sonst auch nich ein, sry. Aber noch was: Ich glaube, dass du nicht einfach nen neuen Thread mit dem gleichem Thema aufmachen darfst, nur weil es sich im alten Thread keiner mehr anschaut. mfg marius |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
SchoaschBetreff: aha |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aso ![]() |
||
Schoasch |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
schade ![]() |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du sagst, dass folgende zeile nicht funktioniert, wenn du sie in beide schleifen einbringst:
Zitat: If RectsOverlap(s\x,s\y,20,20,gs\x,gs\y,20,1) Then Delete gs.Schuss2 Delete s.Schuss
Aber du sagst nicht, was nicht funktioniert, gibt es keine kollision oder bekommst du ne fehlermeldung? |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
Schoasch |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja fehlermeldung- er sagt das das object nicht existiert (object does not excist) ![]() |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
das ist natürlich klar, weil das Objekt aus der ersten Schleife solange benötigt und geprüft wird, bis die 2. Schleife einmal ganz durch gelaufen ist, wenn du nun aber ein Objekt aus der ersten Schleife löscht, ist es nicht mehr existent und die nächste Prüfung ergibt einen Fehler.
Ich weiß nicht genau, ob es so funktioniert, aber kannst du ja mal ausprobieren: setze hinter Delete (Objekt) ein "Exit" damit springst du aus der Schleife und es beginnt die nächste, wenn ein Exit nicht reichen sollte probier es mal mit 2en. Ansonsten bringe eine Hilfsvariable mit ein, die nur 0 oder 1 zugewiesen bekommt, sollte eine Kollision stattfinden, ädere den Wert diese Eintrags und am Ende der Schleife prüfst du diese Variable und wenn sie den gewissen wert(0 oder 1) hat, dann löscht du sie erst, somit ist das Objekt bei allen Prüfungen existent und es kommt zu keinem Fehler mehr. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group