finde den fehler nicht

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

disposal

Betreff: finde den fehler nicht

BeitragSa, Dez 08, 2007 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
tach zusammen!
ich programmiere noch nicht sehr lange und versuche mich das erste mal mit types, funktionen, usw... (darum entschuldigt wenn der code vielleicht etwas strange aussieht... Wink -> is ja noch lange nicht fertig! Wink)
ich bin daran einen tetris klon in BB2 zu schreiben.
zum problem:
immer wenn das teil2 (nur im frame=3) den boden berührt, stürzt das spiel ab und die nachricht "illegal memory adress" wird angezeigt.
an den bitmaps kanns nicht liegen, die hab ich weiss nicht wie vielmal genau kontrolliert!
die teile haben übrigens die abmessungen 100x100 und sind zu viert in einem bitmap zusammengefasst

wer schön wenn mir jemand helfen könnte!
THX

der code:
Code: [AUSKLAPPEN]

Graphics 800,600,32,1

Global teil0 = LoadAnimImage ("gfx/teil0.bmp",100,100,0,4)
Global teil1 = LoadAnimImage ("gfx/teil1.bmp",100,100,0,4)
Global teil2 = LoadAnimImage ("gfx/teil2.bmp",100,100,0,4)
Global teil3 = LoadAnimImage ("gfx/teil3.bmp",100,100,0,4)
Global teil4 = LoadAnimImage ("gfx/teil4.bmp",100,100,0,4)
Global teil5 = LoadAnimImage ("gfx/teil5.bmp",100,100,0,4)
Global teil6 = LoadAnimImage ("gfx/teil6.bmp",100,100,0,4)
Global begrenzung = LoadImage ("gfx/begrenzung.bmp")
Global boden = LoadImage ("gfx/boden.bmp")
Global randrechts = LoadImage ("gfx/randrechts.bmp")
Global randlinks = LoadImage ("gfx/randlinks.bmp")


MaskImage teil0,255,0,255
MaskImage teil1,255,0,255
MaskImage teil2,255,0,255
MaskImage teil3,255,0,255
MaskImage teil4,255,0,255
MaskImage teil5,255,0,255
MaskImage teil6,255,0,255
MaskImage begrenzung,255,0,255
MaskImage randrechts,255,0,255
MaskImage randlinks,255,0,255


;legt teile 0-6 in ein blitzarray
Global teilblz[6]
   teilblz[0]=teil0
   teilblz[1]=teil1
   teilblz[2]=teil2   
   teilblz[3]=teil3   
   teilblz[4]=teil4   
   teilblz[5]=teil5   
   teilblz[6]=teil6

; sorte = welches teil, frame = in welcher position das teil ist
Global x=175,y=50,frame=0,sorte=Rand(0,6)

Cls
Locate 250,300
Global geschw = Input("Gib die gewünschte Geschwindigkeit an: ")

;legt den type teiltyp an, der die daten der liegenden teile speichert
Type teiltyp
   Field teilx
   Field teily
   Field teilframe
   Field teilsorte
End Type

Global a.teiltyp


Repeat
   SetBuffer BackBuffer()
   Cls
   
   ; zeichnet das spielfeld
   spielfeld()
      
   ; steuerung des aktuellen teiles
   y = y+geschw
   steuerung()   
      
   ; legt den rand des spielfeldes fest
   randspielfeld()
      
   ;zeichnet aktuelles teil
   aktteil()
   
   ; zeichnet liegende teile
   liegendeteile()
   
   ; prüft ob die teile den boden berühren, wenn ja -> legt sie in teiltyp ab und setzt die daten für den neuen stein wieder auf die anfangswerte
   bodenkolission()
   
      
   Flip
Until KeyHit(1)

End




Function spielfeld()
   DrawImage begrenzung,100,95
   DrawImage boden,95,500
   DrawImage randrechts,350,95
   DrawImage randlinks,95,95
End Function
   


Function steuerung()
   If KeyHit(203) Then x = x-25
   If KeyHit(205) Then x = x+25
   If KeyHit(200) Then frame = frame + 1
   If frame = 4 Then frame = 0
End Function   



Function randspielfeld()
   If ImagesCollide (teilblz[sorte],x,y,frame,randlinks,95,95,0) Then x=x+25
   If ImagesCollide (teilblz[sorte],x,y,frame,randrechts,350,95,0) Then x=x-25
End Function



Function aktteil()
   DrawImage (teilblz[sorte],x,y,frame)
End Function



Function liegendeteile()
   For a.teiltyp = Each teiltyp
      DrawImage (teilblz[a\teilsorte],a\teilx,a\teily-1,a\teilframe)
   Next
End Function



Function bodenkolission()
   If ImagesCollide (boden,95,500,0,teilblz[sorte],x,y,frame) Then
      
      a.teiltyp = New teiltyp
      a\teilx = x
      a\teily = y
      a\teilframe = frame
      a\teilsorte = sorte
      
      x = 175
      y = 50
      frame = 0
      sorte = Rand(0,6)
   
   EndIf
End Function



EDIT: CodeTags eineditiert. Bitte benutzen! MfG BladeRunner
  • Zuletzt bearbeitet von disposal am Sa, Dez 08, 2007 16:33, insgesamt 3-mal bearbeitet

Foppele

BeitragSa, Dez 08, 2007 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich kann leider nicht testen obs daran liegt, weil ich dann alle Bilder in deinem Code ersetzen müsste.
Aber ersetzt doch mal die Zeile

a = New teiltyp

durch

a.teiltyp= New teiltyp
 

disposal

Betreff: leider nein

BeitragSa, Dez 08, 2007 15:00
Antworten mit Zitat
Benutzer-Profile anzeigen
hab ich schon probiert...funktioniert leider auch nicht Sad aber danke trotzdem für die schnelle antwort!

merkwürdig finde ich, dass es wirklich NUR dann abstürzt, wenn das bild teil2 (frame3) verwendet wird!

Shogo

BeitragSa, Dez 08, 2007 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du es mal im Debug modus gestartet?
 

disposal

BeitragSa, Dez 08, 2007 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Shogo hat Folgendes geschrieben:
Hast du es mal im Debug modus gestartet?


der debug modus färbt die zeile
If ImagesCollide (boden,95,500,0,teilblz[sorte],x,y,frame) Then
rot.
aber ich kann den fehler dennoch nicht finden
 

Rocys

BeitragSo, Dez 09, 2007 3:10
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaube anstelle von
Code: [AUSKLAPPEN]
teilblz[0]=teil0


muesste es

Code: [AUSKLAPPEN]
teilblz[0]=copyimage(teil0)


heissen.

BladeRunner

Moderator

BeitragSo, Dez 09, 2007 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
in BB sind imagehandles Integer, also geht die erste Variante durchaus.

Mir stellt sich vielmehr die Frage warum Du deine images erst in 6 getrennte Variabeln lädst und dann erst in ein Array packst.

Code: [AUSKLAPPEN]
For i = 0 to 6
    image[i] = loadanimimage("pfad/name"+i+".png",....)
next


tut es da doch einwandfrei....
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

disposal

BeitragSo, Dez 09, 2007 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für den tipp, funktioniert wunderbar.
aber das problem mit dem teil2, frame3 existiert leider weiterhin.
inzwischen sieht mein code ziemlich anders aus...(ich habe bemerkt, dass es wohl recht schwierig wird die ausgefüllten linien zu löschen, wenn ich ganze teile hinlege und nicht einzelne blöcke...das hab ich jetzt behoben...doch das hat mein problem auch nicht verändert... Sad)

das wurgel

Betreff: das Bild

BeitragFr, Dez 28, 2007 5:02
Antworten mit Zitat
Benutzer-Profile anzeigen
vielleicht liegts ja am Bild das es nicht klappt. Könnt ja sein, dass das Bild nen Pixel zu groß oder zu klein ist.
1 ist ungefähr 3

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group