Illegal memory address

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Yankee

Betreff: Illegal memory address

BeitragDi, Apr 18, 2006 10:59
Antworten mit Zitat
Benutzer-Profile anzeigen
So ich brauch eure hilfe bei einem bug.
Wie in der Ueberschrift schon steht, kommt immer "Illegal memory address".
Ich wollte mal fragen, wieso der das immer macht. Davor hat das Spiel noch functioniert, aber jetzt kommt immer dieser bug...
Brauche Hilfe bitte... Sad

Wenns euch was nuetzt, hier der Code: Rolling Eyes
Code: [AUSKLAPPEN]

Global feind = LoadImage("anime.bmp")
Global me = LoadImage("me.bmp")
Global rocket = LoadImage("rocket.bmp")
Global anime_rocket = LoadImage("anime_rocket.bmp")

Global schuss = LoadSound("shoot.wav")
Global tot = LoadSound("boom.wav")

Global me_x = 320
Global me_y = 420

Global rocket_fired = False
Global rocket_x = 0
Global rocket_y = 0

Global feind_x = 320
Global feind_y = 15
Global feind_speed = 2

Global anime_rocket_x = 0
Global anime_rocket_y = 0
Global feind_fired = False

Global score = 0




Graphics 640, 480, 16, 1

SetBuffer BackBuffer()



While True

   Cls
   
   pruefetasten
   moveanime
   update
   
   Flip
   
Wend


Function pruefetasten()

   If KeyDown(203) Then me_x = me_x - 3
   If KeyDown(205) Then me_x = me_x + 3
   
   If rocket_fired = False
   
      If KeyHit(57) Then
         rocket_fired = True
         rocket_x = me_x + 35
         rocket_y = me_y + 10
         PlaySound schuss
      EndIf
   EndIf
   
   If me_x < 0 Then me_x = 0
   If me_x > 550 Then me_x = 550
   
End Function

Function moveanime()
   
   If rocket_fired = False Then
      If feind_x > 524 Or feind_x < 0 Then feind_speed =-feind_speed
      feind_x = feind_x + feind_speed
   EndIf
   
   
   ;automatisch ausweichen
   If rocket_fired = True Then

      If rocket_x =< feind_x Then
         
         If feind_speed < 0 Then
            feind_speed =-feind_speed
         EndIf
         
      Else
      
         If feind_speed >= 0 Then
            feind_speed =-feind_speed
         EndIf
                  
      EndIf
         
      feind_x = feind_x + feind_speed
      If feind_x < 0 Then feind_speed = -feind_speed
      If feind_x > 524 Then feind_speed = -feind_speed
      
   EndIf                 
   
End Function

Function update()

   If rocket_fired Then
   
      rocket_y = rocket_y - 3
      DrawImage rocket, rocket_x, rocket_y
      
      If ImagesCollide(rocket, rocket_x, rocket_y,0, feind, feind_x, feind_y,0) Then
         PlaySound tot
         score = score + 100
         If feind_speed < 0 Then
            feind_speed = feind_speed - 1
         Else
            feind_speed = feind_speed + 1
         EndIf
         
         rocket_fired = False
         feind_x = Rnd(0,524)
      EndIf
      
      If rocket_y < 0 Then
         score = score - 20
         rocket_fired = False
      EndIf
      
   ;anime fire or not?
   If feind_fired = False Then
      no_fire = Rnd(0,100)
      If no_fire = Rnd(0,100) Then
         feind_fired = True
         anime_rocket_x = feind_x
         anime_rocket_y = feind_y + 10
         PlaySound schuss
      EndIf
   EndIf
   
   ;if anime_fired then...
   If feind_fired Then
      anime_rocket_y = anime_rocket_y + 4
      If ImagesCollide(anime_rocket,anime_rocket_x,anime_rocket_y,0,feind,feind_x,feind_y,0) Then
         score = score - 100
         PlaySound tot
         anime_fired = False
      EndIf
      DrawImage anime_rocket, anime_rocket_x, anime_rocket_y
   EndIf
   

   EndIf
   
   If KeyHit(16) Then End
   
   If score < -100 Then End   

   Text 320, 0, score
   DrawImage me, me_x, me_y
   DrawImage feind, feind_x, feind_y
   
End Function

Also, man ist ein Raumschiff und muss den computer abschie(scharfes s)en. Der computer geht immer hin uns her, bis man
schie(scharfes s)t. Der computer kann aber auch schie(scharfes s)en, aber das kommt nicht so oft vor...
Bitte brauche Hilfe. Cool

Danke Yankee Sad
 

HW

BeitragDi, Apr 18, 2006 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mir deinen langen Code jetzt nicht durchgelesen, aber ich würde dir raten, beim testen den Debugger anzuschalten, da er genauere Fehlermeldungen ausgibt und die fehlerhafte Zeile markiert. Im Debugmode kommen Illegal Memory Adress und Memory Access Violation nämlich äußerst selten vor.

Yankee

BeitragDi, Apr 18, 2006 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Soo... ich hab jezt ein bisschen selber rumgeschaut^^ und dabei entdeckt, dass der Fehler ihrgendwo bei me_x oder me_y ist. Komisch ist jetzt aber, dass der Fehler immer wechselt. Also manchmal ist der Fehler bei me_x oder bei me_y, aber manchmal auch bei feind_x oder bei feind_y..... Ich finde das wird immer schwerer, oder? Also waehre dankbar, wenn ihr mir safgt, genau wo. Wink

Danke Yankee

Kryan

BeitragDi, Apr 18, 2006 11:45
Antworten mit Zitat
Benutzer-Profile anzeigen
sag doch einfach, was für eine fehlermeldung kommt wenn du den debugger angeschalten hast (program->debug enabled). und am besten noch, welche zeile im debugger markiert ist Wink

wir wären dir zutiefst verbunden!
 

feider

ehemals "Decelion"

BeitragDi, Apr 18, 2006 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Kann es sein, dass du eines der Bilder gelöcht hast?
Oder dass du eines vrschoben hast?

cu
wammerl

Yankee

BeitragDi, Apr 18, 2006 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab extra nochmal nachgeschaut, aber des ist da im ordner, also muesste es eigentlich functionieren, was es aber net tut... Sad
Waehre dankbar, wenn ihr euch das nochmal durchschaut und mir den Fehler sagt, wenn ihr ihn findet...
danke Yankee

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group