Dim Maps erstellen

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Chester

Betreff: Dim Maps erstellen

BeitragFr, Aug 27, 2004 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi@all
Ich bins mal wieder

Arrow Wie erstelle ich eine Dim Map

Code: [AUSKLAPPEN]


Global baum = LoadImage("GFX/MAPS/MAP1/Baum.bmp")
ImageVi(baum, 0, 0, 0) ; selbst geschriebene Function bewirkt das gleiche                 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wie maskimage, baum,  255, 0, 255
Dim map1(100, 100)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

map1(1, 1) = baum
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;


Wie kann ich die Map ausgeben?
Und muss man wenn man will das man mit einem teil der Map kollidert
dann für jedes eigene Bild eine Kollisions Routine machen?

rambo256

BeitragFr, Aug 27, 2004 15:10
Antworten mit Zitat
Benutzer-Profile anzeigen
1.
Du gibst die Map aus,indem du mit einer Schleife die werte dieses Ararys ausliest und diese Werte den Bildern zuordnest.

Beispiel code:

Code: [AUSKLAPPEN]

For x = 0 To max_x
   For y = 0 To max_y
      DrawImage map1(x,y),x*tile_breite,y*tile_hoehe
   Next
Next



Ich persönlich ordne den Bildern Zahlen zu,anstatt deren namen.
Die
zahl ist dann auch direkt gleichbedeutend mit dem Frame,welchen das zu malende Bild inne hat.

Beispiel:
Code: [AUSKLAPPEN]
For x = 0 To max_x
   For y = 0 To max_y
      DrawImage Tile_gfx,x*tile_breite,y*tile_hoehe,map1(x,y)
   Next
Next


2.
Schaue in das Faq & tutorial Forum DivineDominion hat darüber ein tut geschrieben.Sehr empfehlenswert Very Happy
Asus F53z

Das Leben ist eine reine Konkatenation...

Chester

BeitragFr, Aug 27, 2004 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
kurz gesagt : HÄÄ????

rambo256

BeitragFr, Aug 27, 2004 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
was hast du denn nicht verstanden?
Asus F53z

Das Leben ist eine reine Konkatenation...

Chester

BeitragFr, Aug 27, 2004 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
das drawimage

Bms

BeitragFr, Aug 27, 2004 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
so aus einer datei auslesen:

Code: [AUSKLAPPEN]

dim feld(100,100)
leveldatei=readfile("level1.dat")
for zeile=0 to 100
 diezeile$=readline$(leveldatei)
 for spalte=0 to 100
  feld(spate,zeile)=asc(mid$(diezeile$,1))-47
 next
next
closefile leveldatei


und so in der Hauptschleife anzeigen:

Code: [AUSKLAPPEN]

for spalte=0 to 100
 for zeile=0 to 100
  select feld(spalte,zeile)
   case 1 drawimage baum,spalte*tilegroesse,zeile*tilegroesse
   case 2 ....
  end select
 next
next


Ich hab oben beim leveleinlesen die zeichen in die entspr. ascii codes umgewandelt ( ein integerfeld ist 4x schneller als ein string($)feld).
die zahlen bei select...case ___ musst du wahrscheinlich noch ändern.

grüße

Bms

BeitragFr, Aug 27, 2004 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
@ChEsTeR:
schau dir mal LOADANIMIMAGE in der Onlinehilfe an.

BladeRunner

Moderator

BeitragFr, Aug 27, 2004 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Bms: Das mit dem select-case meinst du nich ernst, oder? Für jedes verfi***e Tile eine extra Abfrage??? Das ist wahnwitz. Rambo hats schon richtig gezeigt: alle tiles in ein Animimage und per Framenummer aufrufen.

EDIT: Klar geht das auch. aber es ist schei**ndrec* unnötig bei 178 Tiles ebensoviele "Case"-Zeilen in den Rechner zu Hämmern (oder auch nur zu pasten) wenn du es mit einer Zeile genauso haben kannst...
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
  • Zuletzt bearbeitet von BladeRunner am Fr, Aug 27, 2004 15:21, insgesamt einmal bearbeitet

rambo256

BeitragFr, Aug 27, 2004 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ChEsTeR hat Folgendes geschrieben:
das drawimage


was gibt es denn da nicht zu verstehen? sry,aber ich wüsste jetzt nicht,was daran so kompliziert ist.
Welcher Parameter macht dir "angst" ? Very Happy
Asus F53z

Das Leben ist eine reine Konkatenation...

Bms

BeitragFr, Aug 27, 2004 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
geht auch.

Chester

BeitragFr, Aug 27, 2004 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
rambo256 hat Folgendes geschrieben:



DrawImage map1(x,y),x*tile_breite,y*tile_hoehe



das x mal tile breite und y mal tile höhe

Bms

BeitragFr, Aug 27, 2004 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn du rechteckige tiles hast, schon.
bei quadratischn tiles ischs ja ok.

rambo256

BeitragFr, Aug 27, 2004 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist einfach zu erklären.
diese Parameter stehen ja für die x und y koordinate. s.onlinehilfe.

du musst ja die tiles immer verschieben,denn sonst würdest du sie alle auf einen Fleck zeichnen lassen,das wollen wir ja nicht.
deswegen müssen wir sie nach rechts,bzw. auch nach unten "verschieben".
Asus F53z

Das Leben ist eine reine Konkatenation...

Bms

BeitragFr, Aug 27, 2004 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn du rechteckige tiles hast, schon.
bei quadratischn tiles ischs ja ok.

Chester

BeitragFr, Aug 27, 2004 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wie verschiebe ich sie?

BladeRunner

Moderator

BeitragFr, Aug 27, 2004 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
simple Mathematik mein guter:
x*tile_breite ergibt die x-Position deines Bildes, y*tile_hoehe die y-Posi.
DENN: wenn du in deiner Karte zB Position (3,5) am Zeichnen bist hättest Du 3*Breite eines Tiles als X und 5* Hoehe eines Tiles als Y....

Wenn Du das noch nit verstehst, such dir entweder ein anderes Hobby oder mach was leichteres bis du es verstehst. Ich persönlich empfehle jedoch ausprobieren bis der Arzt kommt.

EDIT: Bms könntest du dich etwas verständlicher ausdrücken? Und hast du auch nur ansatzweise Ahnung davon was du hier verzapfst...? Was hat das ganze damit zu tun ob die Tiles rechteckig oder quadratisch sind?
Wenn man keine Ahnung hat .... Rolling Eyes
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
  • Zuletzt bearbeitet von BladeRunner am Fr, Aug 27, 2004 15:28, insgesamt einmal bearbeitet

Chester

BeitragFr, Aug 27, 2004 15:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaub dann muss ich warten bis der Artzt kommt

BladeRunner

Moderator

BeitragFr, Aug 27, 2004 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Chester: jetzt mal für gaanz Kleine Kinder:
Du setzt bei einer DimKarte dein bild aus vielen kleinen Bildern (den Tiles) zusammen.
Idealerweise haben diese Tiles alle die selbe Grösse. Bsp: 32*48 pixel (echt nur ein vollkommen bedeutungsloses Bsp, hätte auch 14*12 schreiben können).
Der Bildschirm hat Koordinaten, von 0,0 (links oben) wird die X-Koordinate nach rechts größer und Y nach unten größer.
Deine Dimkarte enthält jetzt nur zahlen welche dir sagen welches Tile an welcher stelle des Bildschirms zu zeichnen ist.
Beispiel: map(5,3)=1 heisst: male als fünftes Tile in Xrichtung und 3es in y-Richtung das Tile mit der Nummer 1.
Damit du nun dein Bild an der richtigen Stelle malst musst du also den x und y wert der Dim-map mit der Größe der Tiles multiplizieren. (bei den 32*48 tiles also: 5*32(=160) und 3*48(=144). Also malst du dein bild an die stelle 160,144.).

Da du x und y in einer Schleife durchlaufen lässt die die ganze Karte erfasst, hast du am Schluss den Bildschirm voller Tiles- deiner Karte nämlich.
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

Chester

BeitragFr, Aug 27, 2004 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiss jetzt wenigstens was du meinst thx
  • Zuletzt bearbeitet von Chester am Fr, Aug 27, 2004 15:48, insgesamt einmal bearbeitet
 

David

BeitragFr, Aug 27, 2004 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Wenn du die "Logik" nicht verstanden hast, kannst du die rechnung auch nicht verstanden haben.
Dabei ist es tatsächlich total trivial!!!

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

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group