Längere 2D-Welt
-
- Beiträge: 57
- Registriert: 31.08.2006 20:54
Längere 2D-Welt
Hi
Ich versuche, eine 2D-Welt zu gestalten. Man soll aber auch nach links und rechts gehen können. Nicht so wie bei Windows: Wenn die Maus links ist, geht es nicht weiter. Die Spielfigur soll nach links und rechts gehen können und der Bildschirm soll dabei mitscrollen. Geht das irgendwie?
Danke,
ComputerFreak_PB
Ich versuche, eine 2D-Welt zu gestalten. Man soll aber auch nach links und rechts gehen können. Nicht so wie bei Windows: Wenn die Maus links ist, geht es nicht weiter. Die Spielfigur soll nach links und rechts gehen können und der Bildschirm soll dabei mitscrollen. Geht das irgendwie?
Danke,
ComputerFreak_PB
PureBasic 4.0 Vollversion
aus deinem post geht leider nicht hervor, inwieweit du zumindest mit grundlegenden sachen zur darstellung vertraut bist..
zaphod hat hier schon mal einiges erklärt:
http://www.purebasic.fr/german/viewtopi ... ight=tiles
hier gibts ein einfaches map-beispiel, nur die bewegung findet mit tasten, nicht mit der maus statt:
http://www.purebasic.fr/german/viewtopi ... ht=#106177
..:
http://www.purebasic.fr/german/viewtopi ... hlight=map
zaphod hat hier schon mal einiges erklärt:
http://www.purebasic.fr/german/viewtopi ... ight=tiles
hier gibts ein einfaches map-beispiel, nur die bewegung findet mit tasten, nicht mit der maus statt:
http://www.purebasic.fr/german/viewtopi ... ht=#106177
..:
http://www.purebasic.fr/german/viewtopi ... hlight=map
Zuletzt geändert von #NULL am 18.09.2006 19:25, insgesamt 1-mal geändert.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
yo, ne TileMap ist das A und O für sowas.
eine durchgehende grafik würde extrem zuviel speicher brauchen.
such mal im forum, da gabs schon ne menge threads drüber.
auch in der Lounge wurde schon einiges über TileMaps geschrieben.
wenn dir dann konkrete fragen übrig bleiben, kannste ja noch mal nachhaken.
eine durchgehende grafik würde extrem zuviel speicher brauchen.
such mal im forum, da gabs schon ne menge threads drüber.
auch in der Lounge wurde schon einiges über TileMaps geschrieben.
wenn dir dann konkrete fragen übrig bleiben, kannste ja noch mal nachhaken.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
ganz einfach
du baust dir eine map aus bausteinen (jeder baustein soll gleichgroß sein) ein bausein ist z.B. Rasen, der andere Stein. jetzt brauchste nur 2 texturen. einmal den stein und den rasen. du erstellst einen array, der deine map sein soll:
Dim map(1000,1000)
jetzt musst du dir überlegen wie du jedes einzelnde Feld änderst(um deine map zu gestallten) wenn du das geschaft hast, dann musst du dir die größe deiner beiden bilder angucken(die müssen gleich groß sein!) und jetzt gibt es eine kleine formel um die anzuzeigen und die ganze map zu verschieben. achja die einzelnen felder sollten quadratisch sein:
x = 100 ;dies ist deine spielfigur (x achse)
y = 100 ;dies ist deine spielfigur (y achse)
for i = 0 to 1000
for j = 0 to 1000
displaysprite(map(i,j),i*bildlänge+x,j*bildlänge+y)
next j
next i
flipbuffers()
clearscreen(0)
Dim map(1000,1000)
jetzt musst du dir überlegen wie du jedes einzelnde Feld änderst(um deine map zu gestallten) wenn du das geschaft hast, dann musst du dir die größe deiner beiden bilder angucken(die müssen gleich groß sein!) und jetzt gibt es eine kleine formel um die anzuzeigen und die ganze map zu verschieben. achja die einzelnen felder sollten quadratisch sein:
x = 100 ;dies ist deine spielfigur (x achse)
y = 100 ;dies ist deine spielfigur (y achse)
for i = 0 to 1000
for j = 0 to 1000
displaysprite(map(i,j),i*bildlänge+x,j*bildlänge+y)
next j
next i
flipbuffers()
clearscreen(0)
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
@Brügge
es ist Unfug und für die Performance tödlich, ständig die Komplette Map zu Displayn.
man sollte immer nur einen Auschnitt darstellen, der grade so groß ist, den gesamten screen zu füllen.
z.b. für 32x32 Tiles auf nem 800er screen:
es ist Unfug und für die Performance tödlich, ständig die Komplette Map zu Displayn.
man sollte immer nur einen Auschnitt darstellen, der grade so groß ist, den gesamten screen zu füllen.
z.b. für 32x32 Tiles auf nem 800er screen:
Code: Alles auswählen
For t=0 to 19
For n=0 to 25
DisplaySprite(#Tilesetstart + Map( MapX + n, MapY + t ), FineScroll_X + 32 * n - 32, FineScroll_Y + 32 * t -32)
Next
Next
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 57
- Registriert: 31.08.2006 20:54
- Tafkadasom2k5
- Beiträge: 1578
- Registriert: 13.08.2005 14:31
- Kontaktdaten:
Hä? X und Y-Pixelwerte des Bildschrims kann man doch auslesen?
X_WertDesBildschirms/X_GrößeDerTiles = XAnzahl
Y_WertDesBildschirms/Y_GrößeDerTiles = YAnzahl
Wo ist denn da das Problem...
Gr33tz
Tafkadasom2k5
X_WertDesBildschirms/X_GrößeDerTiles = XAnzahl
Y_WertDesBildschirms/Y_GrößeDerTiles = YAnzahl
Wo ist denn da das Problem...

Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!