Längere 2D-Welt

Anfängerfragen zum Programmieren mit PureBasic.
ComputerFreak_PB
Beiträge: 57
Registriert: 31.08.2006 20:54

Längere 2D-Welt

Beitrag von ComputerFreak_PB »

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
PureBasic 4.0 Vollversion
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Natürlich geht das. Informiere dich mal über eine Technik die sich Tilemapping nennt.
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

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
Zuletzt geändert von #NULL am 18.09.2006 19:25, insgesamt 1-mal geändert.
my pb stuff..
Bild..jedenfalls war das mal so.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

ganz einfach

Beitrag von Brügge »

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)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@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:

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.
ComputerFreak_PB
Beiträge: 57
Registriert: 31.08.2006 20:54

Beitrag von ComputerFreak_PB »

ok. danke
PureBasic 4.0 Vollversion
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

@kaeru

das habe ich in meinen spielen auch aber ich wusste jetzt nicht welche auflösung er nimmt und daher weiß ich auch nicht wie viele bausteine in einem fenster passen ....
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

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
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!
Antworten