Bild wird geladen, jedoch nicht "verwendet"
Übersicht

![]() |
Keine64MBBetreff: Bild wird geladen, jedoch nicht "verwendet" |
![]() Antworten mit Zitat ![]() |
---|---|---|
hallo, ich arbeite derzeit an einem minesweeper-Klon. Eigentlich habe ich ihn in Grundzügen fertig, doch werden die bilder zwar geladen, jedoch wird ein Fehler zurückgeliefert, solabld es verwendet wird. ("Image does not exist!") ich habe auch überprüft, ob die Bilder geladen werden, indem ich deren Identität imMenü ausgebe, die ungleich 0 ist.
Code: [AUSKLAPPEN] SeedRnd MilliSecs()
SetBuffer BackBuffer() AppTitle "Minesweeper Extreme" Dim feld(31, 23, 1) Global ende = False Global feld_image = LoadImage("gfx\feld.bmp") Global fahne_image = LoadImage("gfx\fahne.bmp") Global zeiger = LoadImage("gfx\zeiger.bmp") Global bombe = LoadImage("gfx\bombe.bmp") Global zeigerpos_x Global zeigerpos_y Graphics 1024, 768, 32, 6 timer = CreateTimer(30) font = LoadFont(Terminal, 32, 1) SetFont font Color 0, 0, $33FF00 Function setup() breite_1 = StringWidth("Minesweeper Extreme") pos_x_1 = 512 - breite_1/2 Text pos_x_1, 200, "Minesweeper Extreme" breite_2 = StringWidth("[Esc] : Quit") pos_x_2 = 512 - breite_2/2 Text pos_x_2, 240, "[Esc] : Quit" breite_3 = StringWidth("[Space] : Start Game") pos_x_3 = 512 - breite_3/2 Text pos_x_3, 280, "[Space] : Start Game" Text 400, 400, feld_image End Function Function setup_mines() For i = 0 To i = 150 rnd_x = Rnd(0, 31) rnd_y = Rnd(0, 23) feld(rnd_x, rnd_y, 1) = 9 ; ebene 1 enthält die felsinhalte Next End Function Function setup_numbers() For i=0 To i=31 For j=0 To j=23 zaehler_minen = 0 If Not feld(i, j, 1) = 9 If i<31 If feld(i+1, j, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf If i<31 And j<23 If feld(i+1, j+1, 1) = 1 Then zaehler_minen = zaehler_minen + 1 ; unbedingt Überprüfung auf array index out of bounds machen! EndIf If i>0 If feld(i-1, j, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf If i>0 And j>0 If feld(i-1, j-1, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf If j<23 If feld(i, j+1, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf If j>0 If feld(i, j-1, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf If i<31 And j<0 If feld(i+1, j-1, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf If i>0 And j<23 If feld(i-1, j+1, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf feld(i, j, 1) = zaehler_minen EndIf Next Next End Function Function drawmap() For i = 0 To 31 For j = 0 To 31 If feld(i, j, 0) = 0 Then DrawImage feld_image, i*32, j*32 ; 1 = unaufgedeckt ;) If feld(i, j, 0) = 2 Then DrawImage fahne_image, i*32, j*32 If feld(i, j, 0) = 1 If feld(i, j, 1) = 1 Then Text i*32, j*32, "1" If feld(i, j, 1) = 2 Then Text i*32, j*32, "2" If feld(i, j, 1) = 3 Then Text i*32, j*32, "3" If feld(i, j, 1) = 4 Then Text i*32, j*32, "4" If feld(i, j, 1) = 5 Then Text i*32, j*32, "5" If feld(i, j, 1) = 6 Then Text i*32, j*32, "6" If feld(i, j, 1) = 7 Then Text i*32, j*32, "7" If feld(i, j, 1) = 8 Then Text i*32, j*32, "8" EndIf Next Next update_zeigerpos() End Function Function update_zeigerpos() zeigerpos_x = MouseX()/32 zeigerpos_y = MouseY()/32 DrawImage zeiger, zeigerpos_x*32, zeigerpos_y*32 End Function Function update_zeigerclick() If MouseHit(1) If feld(zeigerpos_x, zeigerpos_y, 1) = 9 ende = True Else feld(zeigerpos_x, zeigerpos_y, 0) = 1 EndIf ElseIf MouseHit(2) feld(zeigerpos_x, zeigerpos_y, 0) = 2 EndIf End Function Function game() update_zeigerpos() update_zeigerclick() drawmap() End Function While Not KeyHit(1) setup() If KeyHit(57) setup_mines() setup_numbers() drawmap() While Not ende = True game() Wend EndIf Wend End Über Hilfe würde ich mich sehr freuen, Frohe weihnacht, Keine64MB |
||
Lador |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
In welcher Zeile zeigt denn der Debugger die Fehlermeldung an bzw. zu welchem Bild?
Eigentlich heißt "Image does not exist", dass es das Bild nicht gibt und es deswegen nicht verwendet werden kann. In BlitzBasic ist es doch so, dass es schon eine Fehlermeldung bei LoadImage() gibt, wenn es nicht existiert? MFG Lador |
||
Mein aktuelles Projekt:
2D-Rollenspiel "Iliran" Screenshot | Worklog Fortschritt: ca. 70% |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Fehler ist das Du nach dem laden der Bilder ein Graphics ausführst. Das räumt den ganzen Grafikspeicher aus. Sprich die Adressen stehen zwar noch in den Variablen, aber die Daten sind futsch. | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Keine64MB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke, das hat es gelöst ![]() |
||
(k)eine Signatur |
![]() |
Keine64MBBetreff: Problem - the next one |
![]() Antworten mit Zitat ![]() |
---|---|---|
So das waäre gelöst. Allerdings arbeiten die funktionen setup_mines() und setup_numbers nicht mehr ....
Code: [AUSKLAPPEN] SeedRnd MilliSecs()
SetBuffer BackBuffer() AppTitle "Minesweeper Extreme" Dim feld(31, 23, 1) Global ende = False Graphics 1024, 768, 32, 6 Global feld_image = LoadImage("gfx\feld.bmp") Global fahne_image = LoadImage("gfx\fahne.bmp") Global zeiger = LoadImage("gfx\zeiger.bmp") Global bombe = LoadImage("gfx\bombe.bmp") Global zeigerpos_x Global zeigerpos_y timer = CreateTimer(30) font = LoadFont(Terminal, 32, 1) SetFont font Color 0, 0, $33FF00 Function setup() breite_1 = StringWidth("Minesweeper Extreme") pos_x_1 = 512 - breite_1/2 Text pos_x_1, 200, "Minesweeper Extreme" breite_2 = StringWidth("[Esc] : Quit") pos_x_2 = 512 - breite_2/2 Text pos_x_2, 240, "[Esc] : Quit" breite_3 = StringWidth("[Space] : Start Game") pos_x_3 = 512 - breite_3/2 Text pos_x_3, 280, "[Space] : Start Game" End Function Function setup_mines() For i = 0 To i = 150 rnd_x = Rnd(0, 31) rnd_y = Rnd(0, 23) feld(rnd_x, rnd_y, 1) = 9 ; ebene 1 enthält die felsinhalte Next End Function Function setup_numbers() For i=0 To i=31 For j=0 To j=23 zaehler_minen = 0 If Not feld(i, j, 1) = 9 If i<31 If feld(i+1, j, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf If i<31 And j<23 If feld(i+1, j+1, 1) = 1 Then zaehler_minen = zaehler_minen + 1 ; unbedingt Überprüfung auf array index out of bounds machen! EndIf If i>0 If feld(i-1, j, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf If i>0 And j>0 If feld(i-1, j-1, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf If j<23 If feld(i, j+1, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf If j>0 If feld(i, j-1, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf If i<31 And j<0 If feld(i+1, j-1, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf If i>0 And j<23 If feld(i-1, j+1, 1) = 1 Then zaehler_minen = zaehler_minen + 1 EndIf feld(i, j, 1) = zaehler_minen EndIf Next Next End Function Function drawmap() Cls For i = 0 To 31 For j = 0 To 23 If feld(i, j, 0) = 0 Then DrawImage feld_image, i*32, j*32 ; 1 = unaufgedeckt ;) If feld(i, j, 0) = 2 Then DrawImage fahne_image, i*32, j*32 If feld(i, j, 0) = 1 If feld(i, j, 1) = 1 Then Text i*32, j*32, "1" If feld(i, j, 1) = 2 Then Text i*32, j*32, "2" If feld(i, j, 1) = 3 Then Text i*32, j*32, "3" If feld(i, j, 1) = 4 Then Text i*32, j*32, "4" If feld(i, j, 1) = 5 Then Text i*32, j*32, "5" If feld(i, j, 1) = 6 Then Text i*32, j*32, "6" If feld(i, j, 1) = 7 Then Text i*32, j*32, "7" If feld(i, j, 1) = 8 Then Text i*32, j*32, "8" EndIf Next Next update_zeigerpos() Flip End Function Function update_zeigerpos() zeigerpos_x = MouseX()/32 zeigerpos_y = MouseY()/32 DrawImage zeiger, zeigerpos_x*32, zeigerpos_y*32 End Function Function update_zeigerclick() If MouseHit(1) If feld(zeigerpos_x, zeigerpos_y, 1) = 9 ende = True Else feld(zeigerpos_x, zeigerpos_y, 0) = 1 EndIf ElseIf MouseHit(2) feld(zeigerpos_x, zeigerpos_y, 0) = 2 EndIf End Function Function game() update_zeigerpos() update_zeigerclick() drawmap() End Function While Not KeyHit(1) setup() If KeyHit(57) setup_mines() setup_numbers() drawmap() While Not ende = True game() Wend EndIf Wend End über erneute hilfe wäre ich wieder dankbar! |
||
(k)eine Signatur |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: BlitzBasic: [AUSKLAPPEN]
For i = 0 To i = 150 korrekt: BlitzBasic: [AUSKLAPPEN] For i = 0 To 150 ZEVS |
||
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Else![]() ![]() |
||
![]() |
Keine64MB |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke, dumm vo nmir | ||
(k)eine Signatur |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
unwissen != dumm ![]() |
||
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich würde mir aber grundsätzlich mal gedanken machen, wenn du so viele zeilen code hast und
1) ein sytax error (i = 150) vorliegt - sprich es gar nicht compilieren kann 2) quasi in zeile 1 (graphics) schon was schief läuft. das heißt ja quasi zwangsläufig, dass du all die zeilen on the fly geschrieben hast um dann festzustellen, dass nichts geht. du solltest - zumindest und gerade am anfang - schritt für schritt vorgehen. 5 zeilen code schreiben - schauen ob sie machen was du willst, weitere 5 zeilen - gucken, was passiert. etc. ansonsten habe ich beim überfliegen folgendes konstrukt gesehen: Code: [AUSKLAPPEN] If feld(i, j, 1) = 1 Then Text i*32, j*32, "1"
If feld(i, j, 1) = 2 Then Text i*32, j*32, "2" If feld(i, j, 1) = 3 Then Text i*32, j*32, "3" If feld(i, j, 1) = 4 Then Text i*32, j*32, "4" If feld(i, j, 1) = 5 Then Text i*32, j*32, "5" If feld(i, j, 1) = 6 Then Text i*32, j*32, "6" If feld(i, j, 1) = 7 Then Text i*32, j*32, "7" If feld(i, j, 1) = 8 Then Text i*32, j*32, "8" das ist grauselig... wie wärs mit einer zeile namens Text i*32, j*32, feld (i, j, 1) ? Stell dir vor du hast nicht 8 , sondern 2000000000 mögliche werte für das feld. und dann stell dir vor du willst sie alle um 4 pixel nach rechts verschieben. bei copy&paste wie du es hier gelöst hast sitzt du da ca 50 jahre am umschreiben - und mit meiner lösung ~2 sekunden ![]() |
||
![]() |
Keine64MB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der teil fiel mir auc herst später auf - stammte aus einem anderen programm von mir. Dort waren halt Bilder und keine Zahlen da, ich wollte etwas Zeit sparen. Mit meinem schlechten Stil - das ist eben noch in Arbeit ![]() ![]() ![]() |
||
(k)eine Signatur |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group