Brauche hilfe bei eigenem Mapeditor[problem beim scrolling]
Übersicht

![]() |
eternitysoftBetreff: Brauche hilfe bei eigenem Mapeditor[problem beim scrolling] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo also ich habe jetzt angefangen mir selber ein kleinen mapeditor zu bauen (weil ich dachte das dass besser ist und ich es dann besser hinrkriege)
hier erstmal der Code soweit Code: [AUSKLAPPEN] ;setzt das Fenster
Graphics 1024,768,16,2 ;---- ;eingaben für die höhe breite und das Tile map_width=Input ("geben sie die Breite an ") map_height=Input ("geben sie die Höhe an ") tileset_laden$=Input ("name des Tileset ") Cls ;--- ;Ladet den Mauscursor Maus = LoadImage("data/maus.bmp") ;--- ;ladet das Tileset Tileset = LoadAnimImage("tiles/"+tileset_laden$,16,16,0,480) ;---- ;erstellt die Map Dim map (map_width, map_height) ;--- ;Macht die Variablen im Ganzen Programm verfügbar Global x,y,mx,my,mapx,mapy,tile = 1 ;--- ;Startet die Hauptschleife Repeat ;--- ;Setzt den Backbuffer SetBuffer BackBuffer() ;--- ;ESC-Taste zum beenden des programmes If KeyDown(1) Then End ;--- ;die array wird eingelesen und die map wird gemalt For x = 0 To map_width For y = 0 To map_height DrawImage Tileset,x*16,y*16,map(x,y) Next Next Flip Forever Also es klappt jetzt soweit ich bräuchte jetzt mal einen Denkanstoss denn ich wollte das so machen (zeig das mal als pic) http://www.rpgstation.de/prob/editor.PNG So wollte ich das aufgebaut haben Das mit den Buttons und Tiles ist ja eigentlich nur eine Kollisons abfrage und dann ob die Taste gedrückt wurde (Korrigiert mich wenn ich falsch liege) Mein Problem ist eher das Mit deM Scrollfenster (Mapfenster) Also das die Map nur da angezeigt wird und dann wenn die Map zu Groß ist das man dann Scrollen kann ich hoffe das man das jetzt versteht mfg |
||
- Zuletzt bearbeitet von eternitysoft am Mo, Jan 17, 2005 18:59, insgesamt einmal bearbeitet
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich Dich richtig verstehe ist das Scrolling Dein Problem? Für den Editor reicht es wohl wenn Tile-weise gescrollt wird. Leg Dir eine scroll-Variable an und verwende diese beim belegen und malen, etwa so:Code: [AUSKLAPPEN] DrawImage Tileset,x*16,y*16,map(x+scrollx,y+scrolly) Und beim belegen des Arrays in etwa das gleiche ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
eternitysoft |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja das könnte mir weiterhelfen danke
bloß geht das irgendwie das die map nur auf ein teil im Fenster angezeigt wird so das ich daneben noch buttons und dadrunter die tiles zur auswahl setzen kann? Weil das wäre dann eigentlich das größere Problem (mit dem Scrolling müsste ich hinkriegen danke nochmal ) mfg |
||
![]() |
DA |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin,
Einfach die Buttons und so nach der Map mahlen dan werden die Buttons nämlich über dei Map gezeichnet. Wen ich dich jetzt richtig verstanden habe. Edit: Ups falsch verstanden sorry ![]() Thx Darkangel |
||
Deutscher Blitz Basic Chat |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab mal den entsprechenden Teil aus meinem Mapeditor rauskopiert:Code: [AUSKLAPPEN] For layer=0 To maxlayer-1
Die Menüleiste ist bei mir 96 Pixel breit und auf der linken Seite, von daher das +96. So wird stets nur der sichtbare Teil gemalt und nebenbei kannst Du das auch im Spiel so einsetzen For y=starttiley To starttiley+viewheight For x=starttilex To starttilex+viewwidth If map(x,y,layer)<>0 And tile(map(x,y,layer),layer)<>0 And x<=width-1 And y<=height-1 If layerout(layer)=False DrawImage tile(map(x,y,layer),layer),96+vx*tilewidth,vy*tileheight EndIf vx=vx+1 Next vy=vy+1:vx=0 Next vx=0:vy=0 Next ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
eternitysoft |
![]() Antworten mit Zitat ![]() |
---|---|---|
So habe mir mal eine Scrollfunktion eingebaut und noch folgende Probleme
-In dem neuen Gescrollten bereich malt er die Tiles nicht -Er scrollt die Map in die Menüleisten(oben und links wo der abstand 96 definiert ist damit da die buttons hinkönnen) -Die Tiles werden nicht an der Cursor stelle gemalt sondern versetzt von den Cursor Aso und dann geht meine Speicherfunktion komischerweise nicht er speichert nur den namen des tiles ab also tileset_laden$ hoffe kann mir jemand helfen nochmal danke an Hubsi der mir soweit geholfen hat (bloß der meldet sich momentan per pm net) mfg Code: [AUSKLAPPEN] ;Macht die Variablen im Ganzen Programm verfügbar Global x,y,mx,my,mapx,mapy,tile = 1, endung$=".map", map_width, map_height,tileset_laden$ ;--- ;Fenster erstellen Graphics 1024,768,16,1 ;--- ;Setzt den Backbuffer SetBuffer BackBuffer() ;--- ; Grafiken laden immer erst nach Graphics, da dieser Befehl den Grakaspeicher entleert Neu = LoadImage ("data/neu.png") Speichern = LoadImage ("data/speichern.png") Laden = LoadImage ("data/laden.png") ;--- ;eingaben für die höhe breite und das Tile map_width=Input ("geben sie die Breite an ") map_height=Input ("geben sie die Höhe an ") tileset_laden$=Input ("name des Tileset ") ;--- ;Ladet den Mauscursor Maus = LoadImage("data/maus.bmp") ;--- ;ladet das Tileset Tileset = LoadAnimImage("tiles/"+tileset_laden$,16,16,0,480) ;---- ;erstellt die Map Dim map (map_width, map_height) ;--- ;Startet die Hauptschleife Repeat Cls ;--- ;ESC-Taste zum beenden des programs If KeyDown(1) Then End ;--- ;die array wird eingelesen und die map wird gemalt For x = 0 To map_width For y = 0 To map_height DrawImage Tileset,96+x*16+scrollx,96+y*16+scrolly,map(x,y) Next Next ;--- ;Setzt die Buttons und informationen DrawBlock Neu, 3,3 DrawBlock Speichern, 3,50 DrawBlock Laden, 3,97 Text 3,144,"Maphöhe:" Text 3,157,map_height Text 3,169,"Mapbreite:" Text 3,181,map_width Text 3,193,"Tileset:" Text 3,205,tileset_laden$ Text 3,217,"Maus X:" Text 3,229,mx Text 3,241,"Maus Y:" Text 3,253,my ;--- ;########################################################### ;das wird wieder geändert dient zum testen ;########################################################### 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(7) Then tile = 5 If KeyDown(8) Then tile = 6 If KeyDown(9) Then tile = 7 If KeyDown(10) Then tile = 8 If KeyDown(11) Then tile = 9 If KeyDown(12) Then tile = 10 If KeyDown(13) Then tile = 11 If KeyDown(14) Then tile = 12 If KeyDown(15) Then tile = 13 If KeyDown(16) Then tile = 14 If KeyDown(17) Then tile = 15 If KeyDown(18) Then tile = 16 ;########################################################### ;########################################################### If MouseDown(1) Then x = (mx)/16 y = (my)/16 map(x,y) = tile End If If MouseDown(2) Then x = (mx)/16 y = (my)/16 map(x,y) = 0 End If ;Ladet die Koordinaten des Cursors und malt ihn mx =MouseX() my =MouseY() DrawImage Maus, mx,my ;--- ;Button Kolision If ImagesCollide(Maus, mx, my,0, Neu, 3, 3, 0) Then If MouseDown(1) Then Neu () End If End If If ImagesCollide(Maus, mx, my,0, Speichern, 3, 50, 0) Then If MouseDown(1) Then Speichern () End If End If If ImagesCollide(Maus, mx, my,0, Speichern, 3, 97, 0) Then If MouseDown(1) Then Laden () End If End If ;--- ;Scrollabfrage If mx = 1023 then scrollx =scrollx-16 endif If mx = 0 then scrollx =scrollx+16 endif If my = 0 then scrolly =scrolly+16 endif If my = 767 then scrolly =scrolly-16 endif ;--- Flip Forever ;Die Functionen für Neu, Laden und Speichern Function Neu() End Function Function Laden() ladename$=Input ("Geben sie den Namen ein ") Read_Datei=ReadFile(ladename$+endung$) tileset_laden$ = ReadLine$(Read_Datei) For x = 0 To map_width For y = 0 To map_height map(x,y) = ReadInt (Read_Datei) Next Next CloseFile(Read_Datei) End Function Function Speichern() speichername$=Input ("Geben sie einen Namen ein ") Write_Datei=WriteFile(speichername$+endung$) WriteLine Write_datei, tileset_laden$ For x = 0 To map_width For y = 0 To map_height WriteInt Write_Datei, map(x,y) Next Next CloseFile (Write_datei) End Function ;--- |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group