kleiner spaceshooter

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

 

pinochino

BeitragSo, Jun 19, 2011 23:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Haha... Wenn gegnercounter keinen "Grundwert" hat kann er da natürlich auch nichts draufzählen xD



Danke

Midimaster

BeitragSo, Jun 19, 2011 23:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Deine Formulierung ist etwas sonderbar, aber scheinbar hast du die Problemstelle ja gefunden.

Gegnercounter wird bei jedem For/EACH natürlich immer weiter hochgezählt und erreicht deshalb nie den Zustand kleiner als der Level zu sein. Richtig wäre GegnerCounter for der FOR/EACH jedesmals wieder auf 0 zu setzen.
 

pinochino

BeitragSo, Jun 19, 2011 23:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt.
Meine Formulierung war nicht nur Sonderbar, sondern völlig Falsch. Very Happy

Hab einfach sofort das erste geschrieben was mir in den Sinn kam und erst nach meinem Post nochmal drüber nachgedacht. Da hab ich dann auch Gemerkt das ich Blödsinn geschrieben habe da der Counter ja immer 1 Speichert und somit niemals die Bedingung für Create_Gegner() erfüllt.

Midimaster

BeitragSo, Jun 19, 2011 23:50
Antworten mit Zitat
Benutzer-Profile anzeigen
wie kommst du jetzt wieder drauf, dass der Counter 1 speichert? bei mir zählt der hoch bis 1000.

Hast Du den DEBUGLOG überhaupt eingebaut und im Debug-Fenster beobachtet, was geschieht?
 

pinochino

BeitragSo, Jun 19, 2011 23:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist späääät ...



wenn ich nicht gegnercounter=0 vor der for-schleife definiere,

zählt er bis über tausend ....

bei gegnercounter=0 vor der for schleife

zählt er 0 erstellt einen gegner und zählt dann solange eins bis gegner deleted wird und zählt dann wieder 0 und so weiter Very Happy

EDIT: und ja ich hab ihn eingebaut
Code: [AUSKLAPPEN]
DebugLog gegnercounter + " " + player_level

Midimaster

BeitragMo, Jun 20, 2011 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
aber müßten denn Gegner, die das Spielfeld links verlassen haben, nicht auch DELETEd werden oder vielleicht wieder rechts reinkommen?

ändere den code in:

BlitzBasic: [AUSKLAPPEN]
          Local gegnercounter%=0
For g.gegner = Each gegner
DebugLog "Gegner vorhanden bei " + g\x
gegnercounter=gegnercounter+1
 

pinochino

BeitragMo, Jun 20, 2011 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja.
Gegner die x<=0 sind werden deleted

counter ist dann wieder 0

und create_gegner schafft daraufhin einen neuen

Habe den Code hinterher wieder so hingebügelt das die gegner bei x=830 erstellt werden

und bei x<0 deleted werden


EDIT: Code: [AUSKLAPPEN]
Const xmax=800, ymax=600
Graphics xmax,ymax,16,2
SetBuffer BackBuffer()

Global fps=CreateTimer(60)

Global playerx# = 30
Global playery# = ymax/2
Global playerspeed# = 5
Global player_last_schuss
Global player_level = 1

Global playergfx=LoadImage("gfx\raumschiff.png")
MidHandle playergfx

Global schussgfx=LoadImage("gfx\schuss.png")
MidHandle schussgfx
RotateImage schussgfx, 90

Global gegnergfx=LoadImage("gfx\gegnerschiff.png")
MidHandle gegnergfx
RotateImage gegnergfx, -90

Type schuss

   Field x#
   Field y#
   Field speed#
   Field tot
   
End Type

Type gegner

   Field x#
   Field y#
   Field speed#
   Field tot
   
End Type


Repeat
WaitTimer(fps)
      

      DrawImage playergfx, playerx,playery
   
   
      If KeyDown(200) Then
         playery=playery-playerspeed
      EndIf
      
      If KeyDown(208) Then
         playery=playery+playerspeed
      EndIf
      
      If playery>600 Then playery=playery-playerspeed
      If playery<0 Then playery=playery+playerspeed
      
      If KeyDown(57)And player_last_schuss<MilliSecs() Then 
            
            create_schuss(playerx,playery,10)
            player_last_schuss=MilliSecs()+1000
         
      EndIf
      
         For s.schuss = Each schuss
            DrawImage schussgfx,s\x,s\y
         
            s\x=s\x+10
         
            If s\x>800 Then s\tot =1
         
            If s\tot = 1 Then Delete s.schuss
      
         Next
      
          Local gegnercounter=0
            For g.gegner = Each gegner
            DebugLog "Gegner vorhanden bei " + g\x
            gegnercounter=gegnercounter+1
               
               DrawImage gegnergfx,g\x,g\y
               
               If g\x<=0 Then g\tot=1
               
               
                  g\x=g\x-g\speed
                  
                     
                     
                        For s.schuss = Each schuss
                           
                           If ImagesCollide(gegnergfx,g\x,g\y,0,schussgfx,s\x,s\y,0) Then
                           
                              s\tot=1
                              g\tot=1
                              
                           
                           EndIf
                        Next
                        
                        
                        
                        
                     If g\tot=1 Then
                        Delete g.gegner
                     EndIf
                     
                     

                     
            Next
                     
         
            
             
            DebugLog gegnercounter + " " + player_level
            If gegnercounter<player_level Then 
            
               create_gegner()
                  
            EndIf   
            
            
            

            
            
            
            
               
      
            
             
      
Flip 0
Cls
Until KeyHit(1)
End


Function create_schuss(x#,y#,speed#)

   s.schuss = New schuss
   
      s\x = x
      s\y = y
      s\speed= speed
      
End Function

Function create_gegner()

   g.gegner = New gegner
   
      g\x= 830
      g\y= Rand(10,590)
      g\speed= 3
   


End Function 




Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group