RPG game

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: RPG game

BeitragSa, Apr 15, 2006 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
habe da mal so ne interesannte frage ( für mich interesannt ) es gibt ja tolle RPG tutorials aus dennen man lernen kann nur leider werden diese immer mit einem dim Map(x,y) gemacht, aber wenn man so ein game machen möchte wie z.b. sim city das is imprinzip ja nix anderes als RPG, so nun habe ich mir gedacht man kann ja eine map erstellen die 600x600 pixel gross ist aber die karte verlangsammt dadurch extrem, wenn man scrollen möchte. so und nun meine frage wie kann man das besser machen das es a) schneller geht und b) simcity ist nix anderes als ein 2d game imprinzip nur die häuser gehen in der höhe, ich meine das zu malen ist einfach aber wie kann ich das machen das man dahinter eine strasse erbauen kann usw.

es wäre cool wenn jemand so ein code hat oder ein tutorial, ansonsten bin ich dankbar für jede antwort.
 

Dreamora

BeitragSa, Apr 15, 2006 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
1) Das geht genau gleich wie in RPGs. Sorg dafür, dass nur die Tiles gezeichnet werden, die aktuell effektiv im Bild sind.

2) Indem du eine Funktion schreibst, die aus der Mauskoordinate errechnet, welches Tile (Feld auf der Karte) darunter ist. Wenn dann die Maus für die Strasse gezogen wird, berechnest du einfach die Linie die daraus entstehen müsste, indem du an Start- und Zielposition das Feld berechnest (was dir ja eindeutige Feldkoordinaten ergibt).
Es interssiert einem ja nicht, auf welches Gebäude die Maus zeigt (also was davor hoch geht), sondern auf was am Boden die Maus bei dieser Koordinate zeigen würde. So arbeitet Sim City ja auch.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Goodjee

BeitragSa, Apr 15, 2006 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
guck mal auf der robsite das isometrietutorial:

HIER klicken
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

DerHase

BeitragSa, Apr 15, 2006 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau Dir mal das an:Einfaches und schnelles Tilemap Scrolling. Es ist nur ein Beispiel, versuch es zu verstehen und nachzuvollziehen. Seh die einzelnen Tiles als Grundstückchen, auf die Du etwas setzen kannst. Du weisst deren Position schon quasi, da sie ja auch an bestimmten Positionen gezeichnet werden Wink

Mathias-Kwiatkowski

BeitragSa, Apr 15, 2006 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
hi danke an DERHASE aber ich verstehe eines nicht,

ich habe eine maus miteingebunden und nun ist es so:
BlitzBasic: [AUSKLAPPEN]

;Grafikmodus etc. initialisieren
Graphics 640, 480, 32,2



SetBuffer BackBuffer()
maus=LoadImage("Data\maus.png")
Global Sets0=LoadAnimImage("data\000.png",32,32,0,9)

MaskImage maus,255,0,128

;Variablen der "Kamere"
Global cam_x
Global cam_y
Global cam_speed = 32

;Die Tilemap wird hier erstellt
Dim map(2000,2000)
For x = 0 To 1999
For y = 0 To 1999
map(x,y) = Rnd(8)
Next
Next






;Die Hauptschleife
While Not KeyHit(1)

Cam_Control()

DrawTileMap()
DrawImage maus, MouseX(),MouseY()

For x = 0 To 640 Step 32
For y = 0 To 480 Step 32
Color 0,0,0
If MouseX()>x And MouseX()<x+32 And MouseY()>y And MouseY()<y+32 Then Rect x,Y,32,32,0

Next
Next



Color 0,0,0
Text 0,0,cam_x+" "+cam_y
Flip

Wend


Function DrawTileMap()
cam_x_div = cam_x / 32
cam_y_div = cam_y / 32

;Malt 21*16 Tiles statt 100*100 Tiles
For x = cam_x_div To cam_x_div + 20
For y = cam_y_div To cam_y_div + 15


DrawImage Sets0,x*32-cam_x,y*32-cam_y,map(x,y)

Next
Next

End Function
Function Cam_Control()

If KeyDown(203) Then cam_x = cam_x - cam_speed
If KeyDown(205) Then cam_x = cam_x + cam_speed
If KeyDown(200) Then cam_y = cam_y - cam_speed
If KeyDown(208) Then cam_y = cam_y + cam_speed

If MouseX()>0 And MouseX()<10 Then cam_x = cam_x - cam_speed
If MouseX()>640-10 And MouseX()<640 Then cam_x = cam_x + cam_speed
If MouseY()>-2 And MouseY()<10 Then cam_y = cam_y - cam_speed
If MouseY()>480-10 And MouseY()<480 Then cam_y = cam_y + cam_speed

If KeyHit(16) And cam_speed < 10 Then cam_speed = cam_speed + 1
If KeyHit(30) And cam_speed > 1 Then cam_speed = cam_speed - 1


If cam_x < 0 Then cam_x = 0
If cam_y < 0 Then cam_y = 0
If cam_x > 31552*2-192 Then cam_x = 315520*2-192
If cam_y > 63072-32 Then cam_y = 63072-32

End Function


mein problem ist nun wie volgt ich möchte mit der maus auf ein TILE klicken und er soll mir sagen welche ziffer dieser hat, das muss ich ja auch wissen wenn ich ein haus bauen möchte oder so, aber wie mache ich das ich die X,Y Koordinate rausbekomme

ich habe extra alles zum download gestellt vieleicht kann mir ja jemand sagen wie das mit der maus gehen soll ,, danke im vorraus

downloadlink
http://purechannel.ath.cx/RPG-CITY.rar

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Apr 15, 2006 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Indem du bei der Mapbewegung erstmal nicht +/- 32 machst, sondern +/- 1... Damit hättest du deine Mapposition. Erst beim zeichnen der Tiles multiplizierst du die Position mit 32!!! Deine Mausposition ist dann zB mx=MouseX()/32... Die Mapposition, auf welchem Tile sich letztendlich deine Maus befindet ist dann: cam_x + mx´´´.

DerHase

BeitragSo, Apr 16, 2006 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
He Mathias, schreib doch mal ob es geklappt hat oder nicht?

Code: [AUSKLAPPEN]
Function SuperSelectoRRR()
   xt =  ((MouseX()+cam_x)/32)
   yt =  ((MouseY()+cam_y)/32)

   x = xt *32 -cam_x
   y = yt *32 -cam_y

   Text 10,10,"Tilemapwert:"+tilemap(xt,yt)
   Text 10,30,"Tilemap X-Postion:"+xt
   Text 10,50,"Tilemap y-Postion:"+yt

   Rect x, y ,32,32,0
End Function


Wenn es nicht geklappt hat, dann kuck Dir mal die Funktion hier an, kannst Du in den anderen Code einbauen. Aber Du musst auch nachvollziehen, was da passiert, denn sonst hat es keinen Wert.

Mathias-Kwiatkowski

BeitragDi, Apr 18, 2006 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
hi hase Smile es hat wunderbar geklappt danke dir

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group