Dim Maps erstellen
Übersicht

![]() |
ChesterBetreff: Dim Maps erstellen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi@all
Ich bins mal wieder ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
kurz gesagt : HÄÄ???? | ||
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
was hast du denn nicht verstanden? | ||
Asus F53z
Das Leben ist eine reine Konkatenation... |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
das drawimage | ||
![]() |
Bms |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ChEsTeR:
schau dir mal LOADANIMIMAGE in der Onlinehilfe an. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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" ? ![]() |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
![]() |
Bms |
![]() Antworten mit Zitat ![]() |
---|---|---|
geht auch. | ||
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn du rechteckige tiles hast, schon.
bei quadratischn tiles ischs ja ok. |
||
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn du rechteckige tiles hast, schon.
bei quadratischn tiles ischs ja ok. |
||
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und wie verschiebe ich sie? | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 .... ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaub dann muss ich warten bis der Artzt kommt | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiss jetzt wenigstens was du meinst thx | ||
- Zuletzt bearbeitet von Chester am Fr, Aug 27, 2004 15:48, insgesamt einmal bearbeitet
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group