Problem bei Gegnererstellung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Pingu_Killer

Betreff: Problem bei Gegnererstellung

BeitragFr, Aug 11, 2006 12:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi leutz,

Ich schreibe gerade einen Weltraumshooter, habe gerade die codes für das erstellen von Gegnern eingegeben und wollte das Spiel testen. Doch dann kam eine Fehlermeldung vom Compiler ( Sad ): "Out of Data". Der Compiler zeigte an das sich der Fehler bei "Restore gegner" befindet. In der Zeile " Read ID, x, y" (Ich habe den codeblock gelb makiert). Was bedeutet das? Wie kann ich das beheben?

Code: [AUSKLAPPEN]

Graphics 640,480,16,1

SetBuffer BackBuffer()   

ClsColor 0, 0, 0
Global enemy = LoadImage("enemy.bmp")
MaskImage enemy, 255, 0, 255
Global rs = LoadImage("rs2.bmp")
MaskImage rs, 255, 0, 255
Global shoot = LoadImage("shoot.bmp")
MaskImage shoot, 255, 0, 255
Global rs_pos_x = 270
Global rs_pos_y = 360

Type gegner
Field ID
Field x
Field y
End Type
;------------------------------
Restore gegner
Read anz
For i = 0 To anz                  
   i.gegner = New gegner         
   Read ID, x, y    
   i\x = x
   i\y = y
Next
;------------------------------

Type shoot
 
    Field x,y

End Type



Const rauf = 200, runter = 208, rechts = 205, links = 203, schuss = 57


Repeat
Cls

DrawEnemy()
MoveEnemy()
Shoot()
MoveRs()
DrawImage rs, rs_pos_x, rs_pos_y

Flip

Until KeyHit(1)
End

Function MoveRs()
    If KeyDown(rauf) Then
       rs_pos_y = rs_pos_y -2
       If rs_pos_y =< 300 Then rs_pos_y = 300
   
    ElseIf KeyDown(runter) Then
       rs_pos_y = rs_pos_y +3
       If rs_pos_y => 440 Then rs_pos_y = 440


    ElseIf KeyDown(rechts) Then
       rs_pos_x = rs_pos_x +3
       If rs_pos_x => 597 Then rs_pos_x = 597

    ElseIf KeyDown(links) Then
       rs_pos_x = rs_pos_x -3
       If rs_pos_x =< 0 Then rs_pos_x = 0

EndIf
End Function

Function shoot()

If KeyHit(schuss) Then

    s.shoot = New shoot
    s\x = rs_pos_x
    s\y = rs_pos_y

EndIf

For s.shoot= Each shoot

    DrawImage shoot, s\x, s\y
    s\y=s\y  - 10
    If s\y < 1 Then Delete s



Next

End Function

Function DrawEnemy()
   For i.gegner = Each gegner   
      If i\ID = 2 Then   
         DrawImage enemy, i\x, i\y   
      EndIf
   Next
End Function




Function MoveEnemy()
   For i.gegner = Each gegner   
      If i\ID = 2 Then    
         i\x = i\x +2   
      EndIf      
   Next
End Function

.gegner
Data 2
Data 2, 32, 32
Data 2, 96, 64

StepTiger

BeitragFr, Aug 11, 2006 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
das muss
Code: [AUSKLAPPEN]
read i\ID
read i\x
read i\y


heißen Wink
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Pingu_Killer

BeitragFr, Aug 11, 2006 12:54
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab das aus nem tutorial, und da ging das. Naja, ich hab das so gemacht wie du es gesagt hast, aber der Fehler besteht immer noch. "Out of Data" wird bei "Read ID" angezeigt.
Hast de ne idee was da der fehler ist?
Was bedeutet "Out of data"?

StepTiger

BeitragFr, Aug 11, 2006 13:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Out of data zeigt eigentlich an, dass das Data Feld, was du abfragen möchtest, nicht existiert.

Du hast zu viele Abfragen drinne:

du zählst von 0 bis anz
anz ist 2
aber du hast nur 2 daten felder übrig.

Also muss das heißen
Code: [AUSKLAPPEN]
for i=1 to anz


Und noch ein Fehler.

wenn du die for next schleife mit der variable i nimmst, dann darfst du kein i.Gegner=new Gegner machen

also anderer variablenname

dein read geht auch aber dann muss es heißen
z.B.
Code: [AUSKLAPPEN]

for i=1 to anz
   z.gegner=New gegner
   read z\ID,z\x,z\y
next
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group