finde den fehler nicht
Übersicht

disposalBetreff: finde den fehler nicht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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... ![]() ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
disposalBetreff: leider nein |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hab ich schon probiert...funktioniert leider auch nicht ![]() merkwürdig finde ich, dass es wirklich NUR dann abstürzt, wenn das bild teil2 (frame3) verwendet wird! |
||
![]() |
Shogo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du es mal im Debug modus gestartet? | ||
disposal |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich glaube anstelle von
Code: [AUSKLAPPEN] teilblz[0]=teil0
muesste es Code: [AUSKLAPPEN] teilblz[0]=copyimage(teil0)
heissen. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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... ![]() |
||
![]() |
das wurgelBetreff: das Bild |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group