illegal memory adress (nach 7 gegnern)
Übersicht

da_pollerBetreff: illegal memory adress (nach 7 gegnern) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] ;variablen******************************************************* Global mausx,mausy Global framenummer Global bild Global bild2 Global bild3 Global gegnererschaffen Global mh Global kills Global gegnertimer Global gegnertimerrun=1 Global schwierigkeit schwierigkeit=1000 ;grafik und bilder*********************************************** Graphics 800,600,16,2 SetBuffer BackBuffer() AppTitle("poller's chaos proggi") ClsColor 255,255,255 bild3=LoadAnimImage("bild3.bmp",40,40,0,2) MaskImage bild3,255,255,255 MidHandle bild3 bild2=LoadAnimImage("bild2.bmp",120,40,0,2) MaskImage bild2,255,255,255 bild=LoadAnimImage ("bild.bmp",40,40,0,6) MaskImage bild,255,255,255 ;type gegner------------------------------------ Type Tgegner Field x Field y Field sterb Field sterb2 Field sterbtimer End Type ;Type schuss------------------------------------ Type Tschuss Field x Field y Field fortsch Field doe End Type ;hauptschleife*********************************************************** While Not KeyHit(1) ClsColor 255,0,255 Cls ;mausabfrage------------------------------------------ If MouseHit(1) Then mh=1 Else mh=0 EndIf ;buttonbild--------------------------------------------- If ImageRectCollide (bild2,500,400,0,mausx-1,mausy-1,2,2) Then DrawImage bild2,500,400,1 Else DrawImage bild2,500,400,0 EndIf ;gegnerershaffen------------------------------ If gegnertimerrun=1 Then gegnertimer=MilliSecs() gegnertimerrun=0 EndIf If MilliSecs()>gegnertimer+schwierigkeit Then gegner.Tgegner=New Tgegner gegner\x=Rnd(20,780) gegner\y=Rnd(20,580) gegner\sterb=0 gegner\sterb2=0 gegner\sterbtimer=MilliSecs() gegneranzahl=gegneranzahl+1 gegnertimerrun=1 EndIf ;gegner--------------------------------------- For gegner.Tgegner=Each Tgegner If Not ImagesCollide(bild2,500,400,0,bild3,gegner\x,gegner\y,0) If gegner\sterb=0 DrawImage bild3,gegner\x,gegner\y,0 EndIf Else gegneranzahl=gegneranzahl-1 Delete gegner.Tgegner EndIf If MilliSecs()>gegner\sterbtimer+3500 Then If gegner\sterb=0 looser=looser+1 Delete gegner.Tgegner EndIf EndIf Next For gegner.Tgegner=Each Tgegner If ImageRectCollide(bild3,gegner\x,gegner\y,0,mausx-1,mausy-1,2,2) If mh=1 gegner\sterb=1 EndIf EndIf If gegner\sterb=1 Then gegner\sterb2=gegner\sterb2+1 DrawImage bild3,gegner\x,gegner\y,1 EndIf If gegner\sterb2>10 Then gegneranzahl=gegneranzahl-1 kills=kills+1 Delete gegner.Tgegner EndIf Next ;smileybild------------------------------------------------------------ DrawImage bild,100,100,framenummer framenummer=framenummer+1 If framenummer>5 Then framenummer=0 ;schuss---------------------------------------------------------------- If mh=1 Then schuss.Tschuss =New Tschuss schuss\x=mausx schuss\y=mausy schuss\fortsch=1 schuss\doe=1 EndIf For schuss.Tschuss =Each Tschuss If schuss\doe=1 Color 255,0,0 Oval schuss\x-schuss\fortsch,schuss\y-schuss\fortsch,schuss\fortsch*2,schuss\fortsch*2 schuss\fortsch=schuss\fortsch+1 If schuss\fortsch>20 Then Delete schuss.Tschuss EndIf Next ;mauszeug-------------------------------------------------------------- mausx=MouseX() mausy=MouseY() Color 0,0,0 Line mausx -10,mausy,mausx+10,mausy Line mausx,mausy -10,mausx,mausy+10 Oval mausx-8,mausy-8,16,16,0 ;statustexte----------------------------------------------------------------- Text 1,1,"mausx: " +mausx Text 1,20,"mausy: " +mausy Text 1,40,"framenummer: " +framenummer Text 1,60,"gegneranzahl: " +gegneranzahl Text 1,80,"looser: " +looser Text 1,100,"kills: " +kills Flip Wend End irgendwie bekomm ich da immer nach genau 7 erschaffenen gegnern nen illegal memory adress ergibt für mich keinen sinn warum,... wo ca könnte der fehler herkommen? |
||
![]() |
Pdd |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schonmal Den Debugger angeworfen? ![]() |
||
Lieber Apfel als Birne. |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm wenner an is heißts objact does not exist.... komisch komisch kapier den fehler irgendwie nicht wo der sein könnte..
edit der fehler kommt in folgender zeile: Code: [AUSKLAPPEN] If MilliSecs()>gegner\sterbtimer+3500 Then
|
||
![]() |
Pdd |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann hast du wahrscheinlich das Tyoe gelöscht, und jetzt versucht er drauf zuzugreifen ![]() |
||
Lieber Apfel als Birne. |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aber wo wäre das komm da irgendwie nicht drauf...
irgendwie spinnt der type seit ich die gegner per zeit erschaffe edit: gelöst!!! musste die abfrage für das töten des gegners(wenn er 3.5 sec existiert) in ne eigene for next schleife packen |
||
- Zuletzt bearbeitet von da_poller am Di, Dez 12, 2006 21:32, insgesamt einmal bearbeitet
![]() |
Pdd |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] For gegner.Tgegner=Each Tgegner
If Not ImagesCollide(bild2,500,400,0,bild3,gegner\x,gegner\y,0) If gegner\sterb=0 DrawImage bild3,gegner\x,gegner\y,0 EndIf Else gegneranzahl=gegneranzahl-1 Delete gegner.Tgegner ; <- hier wird er gelöscht! EndIf If MilliSecs()>gegner\sterbtimer+3500 Then ; <- hier versuchts du noch auf eine Eigenschaft zuzugreifen! If gegner\sterb=0 looser=looser+1 Delete gegner.Tgegner EndIf EndIf Next |
||
Lieber Apfel als Birne. |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jup hab ich in dem moment wo dus getippt hast gesehen danke für die hilfe siehe über dir da steht wie ich gelöst hab(fals es interessiert ^^)
danke für die hilfe!! |
||
JanK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich bin der Meinung, dass es ein einfaches Exit nach dem Delete auch getan hätte.
Sry wenn ich Falsch liege ![]() |
||
Ich habe keine Zeit, mich zu beeilen.
The Pollux Conflict || The Pollux Renegades || Lipstick-live.de |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group