Tile Auswahl

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

 

Seven

BeitragMo, Dez 19, 2011 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Also im Grunde Funktioniert es ja, aber den Befehl werde ich häufiger benutzen müssen
und mir stellt sich die Frage, ob sich das nicht auch eleganter lösen lässt.

Und überhaupt; Wie kann man Viewport öfter als 2 mal verwenden?
Mir fällt gerade nur Front und Backbuffer ein, wobei ich bisher nur Backbuffer
benutzt habe.

BladeRunner

Moderator

BeitragMo, Dez 19, 2011 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Indem du ihn mehrfach im Source stehen hast?
Wie wäre es mit Code deinerseits, dann sehen wir vielleicht wo es hakt.
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
 

Seven

BeitragMo, Dez 19, 2011 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Nagut, hier ist es:

BlitzBasic: [AUSKLAPPEN]
FPS = CreateTimer(60)

Dim map(30,16)
Graphics 800,600,16,3
SetBuffer BackBuffer()

Tileset = LoadAnimImage("tileset.bmp",106,196,0,4)
Global x,y,mx,my,mapx,mapy,tile,TileH, TileW, XPos, YPos
Tile = 1

Repeat
If KeyDown(1) Then End
;Scrolling und einfache Scrollgrenzen
XPos=XPos+(KeyDown(32)-KeyDown(30)) *50 ;X
If XPos < 0 Then XPos = 0
YPos=YPos+(KeyDown(31)-KeyDown(17)) *50 ;Y
If YPos < 0 Then YPos = 0

For x = 0 To 29
For y = 0 To 15
DrawImage tileset,x*106-XPos,y*196-YPos+100,map(x,y) ;Tile wird gemalt. Man beachte +100 beim Y Wert
Next
Next

If KeyDown(2) Then tile = 1
If KeyDown(3) Then tile = 2
If KeyDown(4) Then tile = 3

mx = MouseX()
my = MouseY()

If MouseDown(1) Then
scroll()
map(mapx,mapy) = tile
End If

If MouseDown(2) Then
scroll()
map(mapx,mapy) = 0
End If

Flip 0
WaitTimer FPS
Forever
;---------------------------------------------------
;---------------------------------------------------
;---------------------------------------------------
Function scroll()
;scrolling
mapx = (mx+XPos)/106
mapy = (my+YPos)/196
;Grenzen, da es sonst zu einer Array index out of...
;Meldung führen würde.
If mapx > 30 Then mapx = 30
If mapy > 16 Then mapy = 16
End Function


(Das ist nicht der original Code, aber er ist kürzer und einfacher,
auch wenn die oberen Scrolling Grenzen fehlen)

Mit Viewport sehe das so aus:

BlitzBasic: [AUSKLAPPEN]

FPS = CreateTimer(60)

Dim map(30,16)
Graphics 800,600,16,3
SetBuffer BackBuffer()
Viewport 0, 100, 800, 600

Tileset = LoadAnimImage("tileset.bmp",106,196,0,4)

; [ ... ]


Also am ende macht Viewport wirklich das, was ich will,
aber ich kann das doch nicht mehrmals im selben buffer nutzen,
oder?

Xeres

Moderator

BeitragMo, Dez 19, 2011 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum sollte es nicht möglich sein?
Und: warum probierst du es nicht aus? Das Experiment verschafft dir schnell Klarheit.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Seven

BeitragMo, Dez 19, 2011 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Tatsächlich; Es geht Very Happy

Was sagt man dazu. Danke sehr.
Das bringt mich weiter:)

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group