Dim map funtzt immer noch nicht -.-

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Chester

Betreff: Dim map funtzt immer noch nicht -.-

BeitragFr, Aug 27, 2004 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
hier:
Code: [AUSKLAPPEN]

For x1 = 0 To 100
    For  y1 = 0 To 100
   map1(x1, y1) = Gras
    Next
Next
For x = 0 To 100
   For y = 0 To 100
       DrawImage map1(x,y), x*100, y*100
   Next
Next
 


Ich lade zuerst das Bild "GRAS" in alle Felder und dann geb ich sie aus .
Das müsste doch functionieren....tuts aber nicht -.-
 

hot-bit

Gast

BeitragFr, Aug 27, 2004 18:47
Antworten mit Zitat
Hi,

Vielleicht hilft dir das:

Code: [AUSKLAPPEN]
For yteilmap = 15 To -1 Step-1
    For xteilmap = 1 To 20
      DrawBlock tiles(map(1,ymap-yteilmap,xmap+xteilmap)),(xteilmap-1) Shl 5,yteilmap Shl 5+y_offset
    Next
Next


Ist ein Code-schnipsel aus Glöckner ..

Toni

Bfox

BeitragFr, Aug 27, 2004 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Das gib es doch nicht! Immer wieder solche Frage! Rolling Eyes

Code: [AUSKLAPPEN]

For x1 = 0 To 100
    For  y1 = 0 To 100
        map1(x1, y1) = 0
    Next
Next
For x = 0 To 100
   For y = 0 To 100
       If map1(x, y) = 0 Then 
          DrawImage Gras, x*Tilebreite, y*Tilehöhe
       Endif
   Next
Next
 


(nicht getestet!)

Statt Tilebreite einfach die breite des Tileseingeben und statt Tilehöhe einfach die Höhe des Tiles eingeben! (Na wer hätte das gedacht? Rolling Eyes )

Edit: Hab mich im Code verschrieben! Sorry!
Glauben ist Mangel an Wissen!
  • Zuletzt bearbeitet von Bfox am Fr, Aug 27, 2004 18:51, insgesamt einmal bearbeitet

Triton

BeitragFr, Aug 27, 2004 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Probiers mal so:

Code: [AUSKLAPPEN]

For x1 = 0 To 100
    For  y1 = 0 To 100
   map1(x1, y1) = 1
    Next
Next
For x = 0 To 100
   For y = 0 To 100
       if map1(x,y) = 1 then DrawImage gras, x*100+viewx, y*100+viewy
   Next
Next


so ist es 1.flexibler und 2. richtig. Viewx und viewy hab ich mal zusätzlich noch reingebaut - das kann man später zum scrollen nutzen.
  • Zuletzt bearbeitet von Triton am Fr, Aug 27, 2004 18:54, insgesamt einmal bearbeitet

Chester

BeitragFr, Aug 27, 2004 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Triton hat Folgendes geschrieben:
Probiers mal so:

Code: [AUSKLAPPEN]

For x1 = 0 To 100
    For  y1 = 0 To 100
   map1(x1, y1) = 1
    Next
Next
For x = 0 To 100
   For y = 0 To 100
       if map1(x1,y1) = 1 then DrawImage gras, x*100+viewx, y*100+viewy
   Next
Next

.


Array index out of bounds
funtzt net

Bfox

BeitragFr, Aug 27, 2004 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Er hat sich verschrieben! Rolling Eyes Must hier:
Code: [AUSKLAPPEN]
if map1(x1,y1) = 1 then DrawImage gras, x*100+viewx, y*viewy

x1 durch x ersetzen und y1 durch y ersetzen!
Glauben ist Mangel an Wissen!
  • Zuletzt bearbeitet von Bfox am Fr, Aug 27, 2004 18:54, insgesamt einmal bearbeitet
 

hot-bit

Gast

BeitragFr, Aug 27, 2004 18:54
Antworten mit Zitat
Hi,

und um dich noch mehr zu verwirren, ähhh, informieren, sooo werden die Tiles eingelesen:

Code: [AUSKLAPPEN]
filein=ReadFile("media\kurs"+level+".dat")
    hoch=ReadInt (filein) : breit=ReadInt (filein):ebe=ReadInt (filein)
    For z=1 To ebe
     For y = 1 To hoch
      For x = 1 To breit
         map(z,y,x)=ReadInt (filein)
      Next
     Next
    Next
    CloseFile(filein)


Nun hat jede Koordinate eine Zahl, und zum Anzeigen der Tiles, nimmst du meinen ersten Code ....

tiles() mußt du vorher aber dimensionieren ...

Toni

Chester

BeitragFr, Aug 27, 2004 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Bfox hat Folgendes geschrieben:

Code: [AUSKLAPPEN]

For x1 = 0 To 100
    For  y1 = 0 To 100
        map1(x1, y1) = 0
    Next
Next
For x = 0 To 100
   For y = 0 To 100
       If map1(x, y) = 0 Then 
          DrawImage Gras, x*Tilebreite, y*Tilehöhe
       Endif
   Next
Next
 



Das funtzt auch nit .
da passiert das gleiche wie bei mr
Das man die maus sieht aber der hintergrund ist schwarz

Bfox

BeitragFr, Aug 27, 2004 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du noch mehr Tiles im Bild?
Glauben ist Mangel an Wissen!

Chester

BeitragFr, Aug 27, 2004 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Bfox hat Folgendes geschrieben:
Er hat sich verschrieben! Rolling Eyes Must hier:
Code: [AUSKLAPPEN]
if map1(x1,y1) = 1 then DrawImage gras, x*100+viewx, y*viewy

x1 durch x ersetzen und y1 durch y ersetzen!


DA bleibt der Hintergrund auch schwarz

Chester

BeitragFr, Aug 27, 2004 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist bisher der einzigste tile
 

hot-bit

Gast

BeitragFr, Aug 27, 2004 18:59
Antworten mit Zitat
Hoi,

ich befürchte, bei meinem Code wird er nicht durchsteigen. Sad

Naja, wird schon werden ..

Toni

Bfox

BeitragFr, Aug 27, 2004 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Zeig mal mehr von deinem Code! Vllt hast du einene anderen Fehler!
Glauben ist Mangel an Wissen!
 

hot-bit

Gast

BeitragFr, Aug 27, 2004 19:02
Antworten mit Zitat
Hi,

ich verstehe das so, daß er eine Map mit 100*100 Feldern besetzen will.

Ist das richtig ?

Toni

Chester

BeitragFr, Aug 27, 2004 19:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier der Code:
Code: [AUSKLAPPEN]

Function ImageVi(bild, farbe1, farbe2, farbe3)
If farbe1 = 0 Then farbe1 = 255
If farbe2 = 0 Then farbe2 = 0
If farbe3 = 0 Then farbe3 = 255
MaskImage bild, farbe1, farbe2, farbe3
End Function
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


a# = 0

Global Loading = LoadAnimImage("GFX/Loading.bmp", 121, 23, 0, 3)

ImageVi(Loading, 0, 0, 0)
DrawImage Loading, 310, 210, a#

Global bGround = LoadImage("GFX/Menu/BackGround.bmp")

a# = a# + 1
DrawImage Loading, 310, 210, a#
If a# = 2 Then a# = 0
Global mouse = LoadImage("GFX/MENU/mouse.bmp")

a# = a# + 1
DrawImage Loading, 310, 210, a#
If a# = 2 Then a# = 0

Global NewGame0 = LoadImage("GFX/MENU/NewGame0.bmp")

a# = a# + 1
DrawImage Loading, 310, 210, a#
If a# = 2 Then a# = 0

Global Newgame1 = LoadImage("GFX/MENU/Newgame1.bmp")

a# = a# + 1
DrawImage Loading, 310, 210, a#
If a# = 2 Then a# = 0

Global Exit0 = LoadImage("GFX/MENU/Exit0.bmp")

a# = a# + 1
DrawImage Loading, 310, 210, a#
If a #= 2 Then a# = 0

Global Exit1 = LoadImage("GFX/MENU/Exit1.bmp")

a# = a# + 1
DrawImage Loading, 310, 210, a#
If a# = 2 Then a# = 0

Global gras = LoadImage("GFX/MAPS/MAP1/Gras.bmp")

a# = a# + 1
DrawImage Loading, 310, 210, a#
If a# = 2 Then a# = 0

ImageVi(Exit0, 0, 0, 0)
ImageVi(Exit1, 0, 0, 0)
ImageVi(NewGame0, 0, 0, 0)
ImageVi(NewGame1, 0, 0, 0)
ImageVi(gras, 0, 0, 0)
ImageVi(mouse, 0, 0, 0)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


Dim map1(100, 100)

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

Graphics 640, 480, 16, 1
SetBuffer BackBuffer()

MoveMouse 310, 210
exit_test0 = 0
new_test0 = 0
While Not KeyHit(1)

x_kor = MouseX()
y_kor = MouseY()
t1$ = "X:"
t2$ = " Y:"
t3$ = t1$ + x_kor
t4$ = t2$ + y_kor
t5$ = t3$ + t4$

exit_test =  ImagesOverlap(mouse, x_kor, y_kor,Exit0, 240, 250)
exit_test2 = GetMouse()
new_test =  ImagesOverlap(mouse, x_kor, y_kor, NewGame0, 240, 160)
new_test2 = GetMouse()
Cls

TileBlock bground, 640, 480

Text 20, 20, t5$
If exit_test = 0 Then Exit_test0 = 0
If exit_test = 1 Then Exit_test0 = 1
If Exit_test0 = 0 Then DrawImage Exit0, 240, 250
If exit_test0 = 1 Then DrawImage exit1, 240, 250
If Exit_test = 1 Then
   If exit_test2 = 1 Then End
EndIf

If new_test = 0 Then new_test0 = 0
If new_test = 1 Then new_test0 = 1
If new_test0 = 0 Then DrawImage NewGame0, 240, 160
If new_test0 = 1 Then DrawImage NewGame1, 240, 160
If new_test = 1 Then
   If new_test2 = 1 Then game() 
EndIf
DrawImage mouse, x_kor, y_kor
Flip
Wend
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function game()
MoveMouse 310, 210

For x1 = 0 To 100
    For  y1 = 0 To 100
   map1(x1, y1) = 1
    Next
Next
For x = 0 To 100
   For y = 0 To 100
       If map1(x,y) = 1 Then DrawImage Gras, x*100+viewx, y*100+viewy
   Next
Next
 
While Not KeyHit(1)

x_kor = MouseX()
y_kor = MouseY()
Cls

DrawImage mouse, x_kor, y_kor

Flip
Wend
End Function
 

David

BeitragFr, Aug 27, 2004 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Irgendwie scheinst du's doch noch nicht kapiert zu haben.

Du musst alle deine Tiles in ein Tileset (einzelne Datei) zusammenfassen.

Hierbei muss jedes Tile natürlich die gleiche Größe haben, sonst kannst du das laden mit LoadAniImage vergessen.

Jetzt ist jeder Frame ein bestimmtes Tile, z.B. Frame 1 ist dein Grastile, Frame 2 dein Lavatile usw...

Nun weist du ja welches Tile welche Framenummer hat und kannst dementsprechend die Nummern auf deiner Map verteilen.

Wenn du nun deine Karte zeichnen willst, musst du nurnoch den Frame mit der Nummer des jeweiligen Index zeichnen.

Pseudocode:
Code: [AUSKLAPPEN]

TileSet = LoadAniImage( "Tiles.bmp" )
;...
Dim Map( 100, 100 )
;...

for x = 0 to 100
  for y = 0 to 100
    DrawImage( TileSet, x * 32, y * 32, Map( x, y ) ) ; Falls die Tiles 32*32 Pixel groß sind
  next
next


Easy oder?
Jetzt musst du noch eventuell zwei Variablen für das "scrollen" deiner Map reinbringen. Fertig.

grüße

P.S.: Wieso hast du diese recht bescheuerte Funktion geschrieben?
Code: [AUSKLAPPEN]

Function ImageVi(bild, farbe1, farbe2, farbe3)
If farbe1 = 0 Then farbe1 = 255
If farbe2 = 0 Then farbe2 = 0
If farbe3 = 0 Then farbe3 = 255
MaskImage bild, farbe1, farbe2, farbe3
End Function


Die 255 hat ja schon ihren Sinn...
http://bl4ckd0g.funpic.de

Bms

BeitragSa, Aug 28, 2004 8:34
Antworten mit Zitat
Benutzer-Profile anzeigen
@ChEsTeR:
das mit
Code: [AUSKLAPPEN]

for x=0 to 100
 for y=0 to 100
  if map1(x,y)=0 then drawimage ...
 next
next


muss zwischen das while ... wend in deiner game-funktion.
dein fehler:
bei dir wird es vor der schleife gemalt, durch cls aber sofort wieder gelöscht. (bissl sinnlos Very Happy )
 

David

BeitragSa, Aug 28, 2004 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Und wenn er das so mach? Trozdem ist es Schwachsinn...

grüße
http://bl4ckd0g.funpic.de

Chester

BeitragSa, Aug 28, 2004 13:27
Antworten mit Zitat
Benutzer-Profile anzeigen
ich bin ein fauler mensch ich Spar mir das MaskImage Very Happy
Die Map funtzt jetzt halbwegs.
Nur wie funtz das mit dem Srolling?
 

storzi

BeitragSa, Aug 28, 2004 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
oben hast du doch schon einen code mit scrolling...


einfach aus dem x und y folgendes machen:

x+scrollx
y+scrolly



jetzt veränder die werte für scrollx und scrolly mal, dann siehst du wie das geht Wink
http://www.splattergamez.de

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group