Tile Auswahl
Übersicht

SevenBetreff: Tile Auswahl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Tag,
ich habe mir Robs Tutorial angeschaut und ich verstehe da eine Sache nicht. Es geht um folgenden Code (Kommentare habe ich hierfür entfernt): BlitzBasic: [AUSKLAPPEN]
Wo genau steht, dass die Variable Tile die unterschiedlichen Tiles übernimmt. Ich habe ein wenig daran gebastelt und wenn ich noch eine Graphic laden lasse, dann kann diese als Tile mit einbezogen werden. Ich verstehe nur, wie gesagt, nicht, wo gesagt wurde, dass das so getan werden soll. 2. Nebenfrage, die mir gerade eingefallen ist; Wieso steht Setbuffer ![]() ![]() |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei den Grafiken handelt es sich um sog. TileSets. d.h. dass mehrere Tiles zu einem Bild zusammengefügt sind. Alle Teilbilder sind dabei in einer Reihe nebeneinander. Undmit LoadAnimImage() werden sie gemeinsam geladen werden.
Mit den Tasten <1> bis <6> kannst du in deinem Beispiel dann eine Variable Tile% auf wahlweise 1 bis 5 setzen und so eine Map mit Werten füllen. Aus den Werten wird später der Screen erstellt. Eine 1 bedeutet darin, dass an dieser Stelle das 1. Teil-Tile aus dem Gesamtbild gemalt werden soll. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Wieso steht Setbuffer Backbuffer() in der Schleife? Stimmt, ist ein Fehlerchen. Es reicht das einmal nach Graphics zu setzen.
|
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Midimaster
Etwa so weit habe ich es auch verstanden. Tile bekommt einen Wert, dieser wird an die Array weitergegeben, die Array wird durchgearbeitet und je nach Wert wird eine bestimmte graphic aus einer Datei gezeichnet. Ich verstehe aber nicht, wo die Überlieferung stattfindet. Wo wird gesagt, dass z.B. bei dem Wert 3 in map(3,7) das 3. Teilbild ( bzw. das 4. Ich glaube die 0 wird mitgezählt...) der Datei genommen wird? |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN] LoadAnimImage("tileset.bmp",32,32,0,6) Bildpfad ist klar, dann folgen Breite und Höhe eines Frames. 0 Bedeutet oben links an zu fangen und nichts zu überspringen. Insgesamt sollen 6 Frames {0,1,2,3,4,5} ausgelesen werden. Falls man nur LoadImage verwendet, ist das Bild übrigens Frame 0. Kannst du auch alles in der Online Hilfe nachschlagen ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich glaub ich bin zu undeutlich^^
Die Frames sind mir schon ein Begriff, aber im Programm steht doch nirgendwo etwas in der Art: If Tile = 1 Then Frame 0 Gut, Frame ist kein Befehl, aber sowas ähnliches hätte ich erwartet. Das man die Frames Manuel den verschiedenen Werten der Variable zuweisen muss. Offenbar muss man das aber nicht tun, oder ich habe etwas übersehen und darauf bezieht sich meine Frage ![]() |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
nein, TILE ist eine Variable die du mit der Tastatur veränderst. Ihr Wert wird dann in MAP() eingetragen.
BlitzBasic: [AUSKLAPPEN] ;1. die Tastatur setzt Tile: das ganze ist in 3 zeilen verarbeitet! |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
- Zuletzt bearbeitet von Midimaster am Di, Dez 06, 2011 20:55, insgesamt einmal bearbeitet
![]() |
Blitzcraft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If KeyDown(2) Then tile = 1
If KeyDown(3) Then tile = 2 If KeyDown(4) Then tile = 3 If KeyDown(5) Then tile = 4 If KeyDown(6) Then tile = 5 If KeyDown(7) Then tile = 0 Hier wird je nach gedrükter Taste ein Wert an tile übergeben. Code: [AUSKLAPPEN] If MouseDown(1) Then
scroll() map(mapx,mapy) = tile End If Und wenn die Maus gedrückt ist wird dann dieser Wert zu map(mapx,mapy) gegeben. ![]() EDIT: Mist er war schneller ![]() |
||
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ahhhsoooo, jetzt sehe ich es endlich xD
Danke an alle^^ DrawImage tileset,x*32,y*32,map(x,y) Bei Drawimage ist es ja möglich als 4. Wert das zu zeichnende Frame zu bestimmen und darauf habe ich nicht geachtet ![]() Das einfachste sieht man immer nicht... Danke nochmal. ^^ |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nebenbei noch, bevor sich das bei Dir festsetzt, Handles sind immer Integer. Siehe dazu Deine Speicher-, bzw. Laderoutine ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Meinst du wegen ReadLine![]() ![]() Danke für die Anmerkung. Ist zwar nicht mein Code, aber gesehen habe ich es auch nicht ![]() |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, es geht darum, dass ReadFile![]() ![]() BlitzBasic: [AUSKLAPPEN] karte% = WriteFile("map1.map") ;Man beachte das Prozentzeichen Ansonsten stimmt es: Integrer brauchen (prinzipiell) weniger Speicherplatz als Zeilen und können besser als Zahlen eingelesen werden. Dafür machen sie die Datei mit normalen Texteditoren unlesbar. ZEVS |
||
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ahso, dass war gemeint.
Gut, daran werde ich denken, danke ![]() |
||
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Da fällt mir noch was ein:
Nehmen wir mal an, dass das hier der Bildschirm ist: Code: [AUSKLAPPEN] +--------------------+ | | | [Screen] | | | | | +--------------------+ Und nun werden die tiles reingezeichnet: Code: [AUSKLAPPEN] +--------------------+ |43120312013019393021| |40593920491292041023| |20002031405675346576| |12305434535763426804| +--------------------+ Dabei liegt der Anfangspunkt oben links in der ersten Zeile, also bei 0|0 und ich will diesen Punkt ändern. Sagen wir mal meine Tiles haben eine Größe von 32 x 32 und ich will, dass die Oben 100 Pixel nicht von den Tiles benutzt werden. Und hier nun mein Wahres Problem: Ich will, dass diese 100 Pixel auch beim Scrolling frei bleiben. Das ganze hat einfach den Sinn, dass ich in diesen 100 Pixel eine Leiste Platzieren will. Außerdem hatte ich das Problem auch in einem anderen Bereich und dass habe ich nicht ganz zufrieden stellend gelöst... |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also: Du willst nicht den ganzen Bildschirm voll zeichnen? Dann musst du 100px Konstant beim Zeichnen hinzu addieren.
Vielleicht hilft dir auch ViewPort ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ViewPort![]() und ich werde den auch sicher noch anwenden. Hie würde ich aber eine andere Lösung vorziehen. 100px hinzurechnen funktioniert nicht so wirklich. Dann wird einfach alles um 100 px nach unten verschoben, also die erste Zeile bleibt dann wirklich frei, aber wenn ich runter scrolle, benutzt er die 100 px wieder. |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du verhindern möchtest, dass in den oberen 100px irgendwelche Tiles gezeichnet werden, also alle, die darüber gehen, abgeschnitten werden, dann musst du ViewPort![]() ZEVS |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn die Zeichenroutine nicht da anfängt, wo du es ihr aufträgst, machst du etwas verkehrt. ![]() Über die Scroll-Variablen findest du raus, welche Tiles gezeichnet werden müssen. Nur die, die wirklich zu sehen sind, werden auch gezeichnet. Wenn du dann noch Kartenränder hast (man zeichnet ja immer ganze Tiles) die mit nichts anderem übermalt werden, benutzt du Viewport. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Xeres
Die Zeichenroutine fängt ja da an, wo ich es sage, aber eben nur am Anfang. Sobald ich runter scrolle, werden die 100 bedeckt, weil die 100 px addiert nur den ganzen Bereich um 100 px verschieben. Ein Befehl wie ViewPort ![]() Ist das wirklich der Weg, den man normalerweise nutzen würde? Ein dropdown menü mit scrolling benötigt doch das selbe Prinzip, nicht wahr? Würde man da auch mit ViewPort ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jop. probier es doch einfach mal aus ![]() |
||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group