Warum geht das nicht?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen

@ndinho

Betreff: Warum geht das nicht?

BeitragSo, Dez 12, 2004 12:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 1024,768,16,1


tileset = LoadAnimImage("tileset.bmp",100,100,0,7)

Dim map(7,7)


Data 7, 5, 3, 7, 7, 7
Data 7, 6, 6, 7, 7, 7
Data 7, 6, 6, 7, 7, 7
Data 7, 6, 4, 2, 2, 3
Data 7, 4, 2, 2, 2, 1
Data 7, 7, 7, 7, 7, 7




For y = 0 To 7
For x = 0 To 7


Read map(x,y)
Next
Next


Repeat
SetBuffer BackBuffer()
If KeyDown(1) Then End


Cls


For y = 0 To 7
For x = 0 To 7
DrawImage tileset,x*100,y*100,map(x,y)
Next
Next

Flip
Forever



Bei mir steht dann immer: Out of Data

Was mache ich falsch?
User posted image

Mein PC: AMD 3000+ / 1024 DDR-Ramm 400 / Geforce 6800
Meine Lieblingsspiele: World of Warcraft, Warcraft III, Pro Evolutions Soccer 4, Blitz Basic Smile
 

noir

BeitragSo, Dez 12, 2004 12:30
Antworten mit Zitat
Benutzer-Profile anzeigen
du machst:

for i = 0 to 7 ....
-> d.h 0,1,2,3,4,5,6,7 = 8


und du gibst nur 6*6 werte an: du brauchst 8*8

du greifst in deiner schleife danach auf nicht vorhandene werte zu.
  • Zuletzt bearbeitet von noir am So, Dez 12, 2004 13:00, insgesamt einmal bearbeitet

Hubsi

BeitragSo, Dez 12, 2004 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Du brauchst 8*8 Werte Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

noir

BeitragSo, Dez 12, 2004 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
ups, tippfehler!! sry.

@ndinho

BeitragSo, Dez 12, 2004 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 1024,768,16,1


tileset = LoadAnimImage("tileset.bmp",100,100,0,7)

Dim map(8,8)


Data 7, 5, 3, 7, 7, 7
Data 7, 6, 6, 7, 7, 7
Data 7, 6, 6, 7, 7, 7
Data 7, 6, 4, 2, 2, 3
Data 7, 4, 2, 2, 2, 1
Data 7, 7, 7, 7, 7, 7




For y = 0 To 8
For x = 0 To 8


Read map(x,y)      ;<--------------Hier steht Out of Data
Next
Next


Repeat
SetBuffer BackBuffer()
If KeyDown(1) Then End


Cls


For y = 0 To 8
For x = 0 To 8
DrawImage tileset,x*100,y*100,map(x,y)
Next
Next

Flip
Forever



Es funktioniert immer noch nicht....
User posted image

Mein PC: AMD 3000+ / 1024 DDR-Ramm 400 / Geforce 6800
Meine Lieblingsspiele: World of Warcraft, Warcraft III, Pro Evolutions Soccer 4, Blitz Basic Smile
 

noir

BeitragSo, Dez 12, 2004 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
es kann ja net gehen du hast ja das falsche geändert................

For y = 0 To 8
For x = 0 To 8

falsch!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
dafür würdes du 9*9 werte brauchen
entweder du änderst dies in:
For y = 0 To 5
For x = 0 To 5

oder du muss deine datafelder erweitern
nochma zum mitschreiben:
data 1,2,3,4,5,6,7,8,9 das sind 9 werte du hast nur 6.
und da deine forschleife bei 0 anfängt würdest du noch einen wert mehr brauchen
 

noir

BeitragSo, Dez 12, 2004 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ok vielleicht verstehst du es so besser:

der fehler liegt einfach daran das du zuwenige daten in deinem data feld hast.

klar?

wenn du for i = 0 to 8 hast liest der computer 9 werte aus deinem data feld aus, du hast aber nur 6 also kommt eine fehlermeldung!

@ndinho

BeitragSo, Dez 12, 2004 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir kommt immer eine andere Fehlermeldung, dieses mal zum Beispiel

Code: [AUSKLAPPEN]
Graphics 1024,768,16,1


tileset = LoadAnimImage("tileset.bmp",100,100,0,7)

Dim map(7,7)


Data 7, 5, 3, 7, 7, 7
Data 7, 6, 6, 7, 7, 7
Data 7, 6, 6, 7, 7, 7
Data 7, 6, 4, 2, 2, 3
Data 7, 4, 2, 2, 2, 1
Data 7, 7, 7, 7, 7, 7




For y = 0 To 5
For x = 0 To 5


Read map(x,y)
Next
Next


Repeat
SetBuffer BackBuffer()
If KeyDown(1) Then End


Cls


For y = 0 To 5
For x = 0 To 5
DrawImage tileset,x*100,y*100,map(x,y)      ;<------------ image frame out of range
Next
Next

Flip
Forever
User posted image

Mein PC: AMD 3000+ / 1024 DDR-Ramm 400 / Geforce 6800
Meine Lieblingsspiele: World of Warcraft, Warcraft III, Pro Evolutions Soccer 4, Blitz Basic Smile

Waveblue

BeitragSo, Dez 12, 2004 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 1024,768,16,1


tileset = LoadAnimImage("tileset.bmp",100,100,0,7)

Dim map(8,8)

.map
Data 7, 5, 3, 7, 7, 7
Data 7, 6, 6, 7, 7, 7
Data 7, 6, 6, 7, 7, 7
Data 7, 6, 4, 2, 2, 3
Data 7, 4, 2, 2, 2, 1
Data 7, 7, 7, 7, 7, 7



restore map
For y = 0 To 5
For x = 0 To 5


Read map(x,y)     
Next
Next


Repeat
SetBuffer BackBuffer()
If KeyDown(1) Then End


Cls


For y = 0 To 8
For x = 0 To 8
DrawImage tileset,x*100,y*100,map(x,y)
Next
Next

Flip
Forever

so funzt das jedenfalls jetzt bei mir!
Fehlermeldung:"Image does not exist!
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
  • Zuletzt bearbeitet von Waveblue am So, Dez 12, 2004 17:17, insgesamt 2-mal bearbeitet
 

noir

BeitragSo, Dez 12, 2004 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
der code stimmt jetzt:

es kann nur noch daran liegen:
LoadAnimImage("tileset.bmp",100,100,0,7)


poste ma die fehlermeldung

es kann sein das die grafik z.b zu klein.
 

getlose

BeitragSo, Dez 12, 2004 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
image frame out of range


ja, dann weißt du doch jetzt was los ist,
hast es doch selbst dahin geschrieben.

@ndinho

BeitragSo, Dez 12, 2004 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
das schon, aber ich weiß nicht, was das für ein Fehler ist Embarassed
User posted image

Mein PC: AMD 3000+ / 1024 DDR-Ramm 400 / Geforce 6800
Meine Lieblingsspiele: World of Warcraft, Warcraft III, Pro Evolutions Soccer 4, Blitz Basic Smile
 

D²O

BeitragSo, Dez 12, 2004 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieviele Frames hat den Dein Tile, 7 oder ?

Dann noch, setbuffer backbuffer() kommt nicht in den Mainloop, setze es gleich unter Graphics.

Lade doch einfach mal das Bild hoch, dann kann es beser verfolgen.


Edit: Lerne auch noch den Debugger zu benutzen, der kann einen echt gut helfen .
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK;
 

noir

BeitragSo, Dez 12, 2004 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
ndinho dein code war richtig, bis auf die grafik vielleicht

aber @waveblue du hast einen hammermäßigen fehler reingehauen!!!!!!!!!!!!!!!!
 

noir

BeitragSo, Dez 12, 2004 17:01
Antworten mit Zitat
Benutzer-Profile anzeigen
du darfst du nicht restore in die schleife setzten, da wird das datafeld doch immer wieder von vorne ausgelesen.
sonst kämme es ja auch zu einer fehlermeldugn.
du hast ja eine schleife 0-8 und auch wieder zu wenig data werte, nur durch deinen zweiten fehler mit dem restore taucht der erste fehler nicht auf... und der zweite fehler is ein logischer fehler... der code läuft aber völlig falsch Exclamation


For y = 0 To 8
For x = 0 To 8

Restore map <------------ fehler
Read map(x,y)
Next
Next

das das keiner gemerkt hat..........

Waveblue

BeitragSo, Dez 12, 2004 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
hoppla, mein fehler Embarassed


Code: [AUSKLAPPEN]
Graphics 1024,768,16,1


tileset = LoadAnimImage("tileset.bmp",100,100,0,7)

Dim map(7,7)


Data 7, 5, 3, 7, 7, 7 ,2,2
Data 7, 6, 6, 7, 7, 7 ,2,2
Data 7, 6, 6, 7, 7, 7 ,2,2
Data 7, 6, 4, 2, 2, 3 ,2,2
Data 7, 4, 2, 2, 2, 1 ,2,2
Data 7, 7, 7, 7, 7, 7 ,2,2
Data 7, 4, 2, 2, 2, 1 ,2,2
Data 7, 7, 7, 7, 7, 7 ,2,2




For y = 0 To 7
For x = 0 To 7


Read map(x,y)     
Next
Next


Repeat
SetBuffer BackBuffer()
If KeyDown(1) Then End


Cls


For y = 0 To 8
For x = 0 To 8
DrawImage tileset,x*100,y*100,map(x,y)
Next
Next

Flip
Forever


Du hast einfach mehr datas gelesen, als da sind! Wink

Ein Dim-Feld(7,7) hat übrigens 8*8 Spalten!
Die 0.Spalten nämlich !
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
  • Zuletzt bearbeitet von Waveblue am So, Dez 12, 2004 17:28, insgesamt 2-mal bearbeitet

Hubsi

BeitragSo, Dez 12, 2004 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Erst denken, dann coden:BlitzBasic: [AUSKLAPPEN]
Graphics 1024,768,16,1
SetBuffer BackBuffer() ; Hier den Buffer wählen
tileset = LoadAnimImage(\"tileset.bmp\",100,100,0,7)
Dim map(5,5) ; Speicherplatz ist wertvoll

Data 6,4,2,6,6,6 ; Data-Feld berichtigt
Data 6,5,5,6,6,6
Data 6,5,5,6,6,6
Data 6,5,3,1,1,0
Data 6,3,1,1,1,0
Data 6,6,6,6,6,6

For y = 0 To 5
For x = 0 To 5
Read map(x,y)
Next
Next

Repeat
If KeyDown(1) Then End
Cls

For y = 0 To 5
For x = 0 To 5
DrawImage tileset,x*100,y*100,map(x,y)
Next
Next

Flip
Forever
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

noir

BeitragSo, Dez 12, 2004 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
jetzt muss ich wohl auch noch was zum besten geben *g

REPEAT
IF KEYDOWN(1) THEN END
FOREVER

das würde ich einfach in

repeat
until keyhit(1)
end

ändern, is kürzer


und nimm nicht so ne große auflösung,wenn du ein jump and run spiel machen willst oder so, reicht 800*600 massig. bei 1024*769 kannst du ja das ganze level auf einem bildschirm anzeigen Wink

@ndinho

BeitragSo, Dez 12, 2004 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, es funzt!!!!
So ein Forum ist doch was geiles!!!
User posted image

Mein PC: AMD 3000+ / 1024 DDR-Ramm 400 / Geforce 6800
Meine Lieblingsspiele: World of Warcraft, Warcraft III, Pro Evolutions Soccer 4, Blitz Basic Smile

@ndinho

BeitragSo, Dez 12, 2004 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
jetzt hab ich aber ein anderes Problem:

Ich will für meinen Vater zu weihnachten ein kleines Rennspiel machen.
Für die Strecke brauchte ich das tileset und wenn ich das Spiel starte, erscheint erst das Auto und wenn ich auf esc klicke erscheint erst die Strecke


Code: [AUSKLAPPEN]
Graphics 640, 480



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Grafiken

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
hintergrund = LoadImage("hintergrund.bmp")
links = LoadImage("Data/Grafiken/links.bmp")
rechts = LoadImage("Data/Grafiken/rechts.bmp")
strecke1 = LoadImage("strecke.bmp")
a=LoadImage("Data/Grafiken/fahrtrichtung/vorne.bmp")
b=LoadImage("Data/Grafiken/fahrtrichtung/unten.bmp")
c=LoadImage("Data/Grafiken/fahrtrichtung/rechts.bmp")
d=LoadImage("Data/Grafiken/fahrtrichtung/links.bmp")



SetBuffer BackBuffer()


Repeat
Cls






speed = 1

If KeyHit(200) Or JoyY()<-0.5 dir=0
If KeyHit(205) Or JoyX()>0.5 dir=1
If KeyHit(208) Or JoyY()>0.5 dir=2
If KeyHit(203) Or JoyX()<-0.5 dir=3


Select dir
Case 0 y=y-speed
Case 1 x=x+speed
Case 2 y=y+speed
Case 3 x=x-speed
End Select



If dir=0 DrawImage a,x,y
If dir=1 DrawImage c,x,y
If dir=2 DrawImage b,x,y
If dir=3 DrawImage d,x,y

Flip
Until KeyHit(1)



 ; Hier den Buffer wählen
tileset = LoadAnimImage("tileset.bmp",100,100,0,7)
Dim map(5,5) ; Speicherplatz ist wertvoll

Data 6,4,2,6,6,6   ; Data-Feld berichtigt 
Data 6,5,5,6,6,6 
Data 6,5,5,6,6,6 
Data 6,5,3,1,1,2 
Data 6,3,1,1,1,0 
Data 6,6,6,6,6,6 

 For y = 0 To 5
 For x = 0 To 5
Read map(x,y) 
Next 
Next 

Repeat 
If KeyDown(1) Then End   
Cls 

For y = 0 To 5 
For x = 0 To 5 
DrawImage tileset,x*100,y*100,map(x,y) 
Next 
Next 
 
Flip 
Forever










User posted image

Mein PC: AMD 3000+ / 1024 DDR-Ramm 400 / Geforce 6800
Meine Lieblingsspiele: World of Warcraft, Warcraft III, Pro Evolutions Soccer 4, Blitz Basic Smile

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group