[Tutorial] Map-Editor für RPGs
Übersicht

![]() |
joKe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also wenne direkte Hilfe bei irgendetwas kleinem brauchst
dann kannste dir ICQ zulegen und mich anlabern My ICQ Number : 145340212 Also ich mein jetzt kein ganzes Programm debuggen helfen sondern so kleiner Probleme ... da bin ich gerne zur Stelle ... mfg j0k3 |
||
Projekt: Pollux Renegades Coop
[Maschine: Intel DualCore2 2x 3Ghz | 4096 DRR2 | GeForce GTX 260 Ultra] |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, nächste Lektion:
--> hier Klicken (445 KB im .RAR Format) <-- Bitte mal Laden, damit alle, auf dem gleichen Stand sind! Ich habe mal alles in Ordner gekliedert, ne Dateinamen abfrage geschrieben, Configdatei mit auslesen, und noch ein paar fehler beseitigt. Noch etwas zu der GUI, jene ist zweckgebunden --> nicht für Spiele geeignet, dafür müsste man sie stark umgestallten! |
||
between angels and insects |
IonPainter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm das is schon richtig geil Jan_ cool das du dir mit einem Neueinsteiger soviel Mühe machst, vllt sollte das ein gewillter Mod mal nach FAQ & Tutorials verschieben... 8)
edit: hätt noch ein paar vorschläge: ![]() ![]() ![]() ![]() ![]() |
||
- Zuletzt bearbeitet von IonPainter am Mo, März 29, 2004 12:01, insgesamt einmal bearbeitet
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Jan, das ist echt voll nice was du da machst! Respekt! Nun sag mal, wie sieht das nun aus, darf man den frei verwenden oder nur per nachfrage? wenn ja, dann sei das hiermit getan ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sao, habe die Alten mal zusammen, gesammelt!
-->Hier Klicken (ca. 10KB in .Rar)<-- |
||
between angels and insects |
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
hey, ich finds auch echt nobel von dir das du nen Tut zu nem Mapeditor machst!! Schade nur das wir Mappy nehmen *schluchz* , aber mach ma weiter , werde bestimmt nochmal darauf zurückkommen , weiter so ! ![]() |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey,
Das ist ein Tut, natürlich frei, Aber, du angehalten, meinen Namen in die Credits zu schreiben. Jedenfalls währe dass sehr nett! Ansonsten, kannst du es benutzten, missbrauchen, umgestallten,. kopieren, löschen, 5000 auf deiner Festplatte Speichern usw. Und sogar weiterverschenken! Du darfst es bei deinen Komerziellen Produkten mitverkaufen (aber dann sollte schon Credits rein) Und du darfst davon --> LERNEN <-- |
||
between angels and insects |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, scrolling, ist da.
Ion, Was mutiplayer für nen Editor? was / wie soll das gehen? Code: [AUSKLAPPEN] ;Rechtschreibe Fehler sind absichtlcih und dienen der Belustigung!
Include "GUI.bb" ; So, da laden wir unsere Libary ;Configurationen Laden ConfigDatei=ReadFile ("config.cfg") X_Aufloesung = ReadLine(ConfigDatei) Y_Aufloesung = ReadLine(ConfigDatei) Farbtiefe = ReadLine(ConfigDatei) Fenstermodus = ReadLine(ConfigDatei) CloseFile ConfigDatei ;Grafik initialisieren Graphics X_Aufloesung,Y_Aufloesung,Farbtiefe,Fenstermodus HidePointer ; Damit verstecken wir die Maus! ;Arreys und Globals Global Map_Width = 31, Map_Height = 31 ; Map höhe und breite Dim Map(Map_Width,Map_Height) Global G2W = GraphicsWidth()/2,G2H = GraphicsHeight()/2 ; Variablen, damit es nicht jedesmal neu berechnet werde muss Global Tileset, TileSetDatei$ Global Tile_Auswahl Global Mouse_GFX ; Mausbild Global Max_Tile Global Map_X,Map_Y ; Position des Bildschirms Global TileSize = 32 ; Setzt die Tile größe! Global btn_Save,btn_Neu,btn_Laden,Btn_Beenden;Gui Buttons ihre Handels Global btn_next,btn_last,Btn_Fenster;Gui Buttons ihre Handels Global Maus_auf_Gui_angewandt ; wird gebraucht, weil sonst etwas sehr unschönes passiert! ;Tasten Const Key_Plus = 78 Const Key_Minus = 74 Const Key_F5 = 63 Const Key_UP = 200 Const Key_Left = 203 Const Key_Right = 205 Const Key_Down = 208 Get_Data_Name() Load_Map(Chat_Rueckgabe$);Lädt Map ;load medias Load_Medias() ;Gui Erstellen btn_beenden=Create_Button("Beenden des Editor",10,160) btn_Neu=Create_Button("Neues Level",10,10) btn_Save=Create_Button("Level Speichern",10,60) btn_Laden=Create_Button("Level Laden",10,110) btn_next=Create_Button("Nächstes Tile",GraphicsWidth()-150,10) btn_last=Create_Button("Vorheriges Tile",GraphicsWidth()-150,110) btn_fenster=Create_Button("",GraphicsWidth()-150,50,36,36) ; So, in dieses Fenster, kommt das Aktuelle Tile immer rein! Tile_in_Button_Zeichnen(btn_fenster) ; Das wir am anfang, schon das tile im Button haben ;hintergrund setzten SetBuffer BackBuffer() Local X,Y Local MMX,MMY Local R,G,B,Rae=1,Gae=2,Bae=3 Repeat Keyboard() MMX= MouseX() : MMY = MouseY() ;------------------------------------------------------ ;Kleiner Optisch schöner Effekt aber sonst kaum nutzten R=R+Rae G=G+Gae B=B+Bae If R> 255 Then R= 255: Rae = Rand(-5,-1) If G> 255 Then G= 255: Gae = Rand(-5,-1) If B> 255 Then B= 255: Bae = Rand(-5,-1) If R< 0 Then R= 0: Rae = Rand(1,5) If G< 0 Then G= 0: Gae = Rand(1,5) If B< 0 Then B= 0: Bae = Rand(1,5) Color R,G,B ;------------------------------------------------------ Cls Draw_tiles(Map_X,Map_Y) ; Zeichnet die Tiles Mouse(MMX,MMY) ; Aufrufen, der Maus Zeichenfunction Gui_Control ; Zeichnet die Knöpfe Text G2W,0,"RPG Editor - Entwicklungsstufe 9",1 Text G2W,15,"-Ein Tutorial von Jan Kuhnert-",1 Text G2W,30,"-Thema: Scorling-",1 DrawImage Mouse_GFX,MMX,MMY Flip(True) Until KeyHit(1) Save_map("Last_Change.tmp") ; notspeichern End Function Keyboard() If KeyHit(Key_F5) Then Save_Map ;Bewegen der Karte bei Cursortastendruck! ;--------------------------------------------- If Map_Y < 0 ;Wenn im Spielfeld bereich die Maus ist! If KeyDown(Key_UP) Then Map_Y= Map_Y+1 End If If Map_Y > -Map_Width +(G2H / (TileSize/2)) If KeyDown(Key_DOWN) Then Map_Y= Map_Y-1 End If If Map_X < 0 If KeyDown(Key_LEFT) Then Map_X= Map_X+1 End If If Map_X > -Map_Height+(G2W / (TileSize/2)) If KeyDown(Key_RIGHT) Then Map_X= Map_X-1 End If ;--------------------------------------------- End Function Function Mouse(MMX,MMY) Local Tile_X,Tile_Y Local Image_Wechsel, Gui_Element Tile_X = Int(MMX/TileSize) Tile_Y = Int(MMY/TileSize) Text 0,200,(Tile_X-Map_X) + " x " + (Tile_Y-Map_Y) DrawBlock tileset,Tile_X*TileSize,Tile_Y*TileSize,Tile_Auswahl ;Zeichnet den Block, an die Mausposition, befohr er gesetzt wurde DrawImage Mouse_GFX,MMX,MMY Rect Tile_X*TileSize-1,Tile_Y*TileSize-1,TileSize+2,TileSize+2,0 ; 4Eck noch etwas vergrößern Rect Tile_X*TileSize,Tile_Y*TileSize,TileSize,TileSize,0 ; Zeichnet Das 4Eck, an der Maus-Position If MouseHit(1) Then Gui_Element=Button_Overlap(MMX,MMY) If Gui_Element <> 0 Then ; nur wenn ein Knopf gedrückt wurde reagieren Maus_auf_Gui_angewandt=1 If Gui_Element = btn_neu Then load_map() If Gui_Element = btn_save Then Get_Data_Name() Save_map(Chat_Rueckgabe$) End If If Gui_Element = btn_laden Then Get_Data_Name() load_map(Chat_Rueckgabe$) End If If Gui_Element = btn_beenden Then Save_map("Last_Change.tmp"): End ; Notspeichern und beenden If Gui_Element = btn_next Then Tile_Auswahl=Tile_Auswahl+1:Image_Wechsel= 1 If Gui_Element = btn_last Then Tile_Auswahl=Tile_Auswahl-1:Image_Wechsel= 1 If Image_Wechsel= 1 Then ; wenn das tile gewechselt wurde, Bild ändern,überprüfen If Tile_Auswahl<0 Then Tile_Auswahl=Max_Tile-1 If Tile_Auswahl>Max_Tile-1 Then Tile_Auswahl=0 Tile_in_Button_Zeichnen(btn_fenster) ; Tile in Button Zeichnen Image_Wechsel=0 End If End If End If If MouseDown(1) If Gui_Element + Maus_auf_Gui_angewandt=0 Then Map(Tile_X-Map_X,Tile_Y-Map_Y)=Tile_Auswahl ;ansonsten, Tile setzten End If Else Maus_auf_Gui_angewandt=0 End If End Function Function Load_Map(MapName$="") Local Tile_X,Tile_Y If MapName$<>"" Then ; Lädt, wenn ein Map Name angegeben wurde Read_Datei=ReadFile("Maps\"+MapName$) If read_Datei <> 0 Then ; Falls, keine Datei davon vorhanden, wird nicht geladen, sondern neue erstellt TileSetDatei$ = ReadLine$(Read_Datei) For Tile_X = 0 To Map_Width For Tile_Y = 0 To Map_Height Map(Tile_X,Tile_Y) = ReadInt(Read_Datei) Next Next CloseFile Read_Datei Else MapName$ = "" EndIf End If If MapName$="" Then ; Falls keine Map vorhanden ist, neue erstellen For Tile_X = 0 To Map_Width For Tile_Y = 0 To Map_Height Map(Tile_X,Tile_Y) = 0 ; Macht bei allen Tiles, Bild "0" Next Next TileSetDatei$ = "tiles.bmp"; Wird Später noch aus der Datei gelesen End If Return TileSetDatei$ End Function Function Save_Map(Mapname$="temp.map") ;Speichert die Map Local Tile_X,Tile_Y Write_Datei=WriteFile ("Maps\"+Mapname$) WriteLine Write_datei, TileSetDatei$ ; Speichert Tile-set Name For Tile_X = 0 To Map_Width For Tile_Y = 0 To Map_Height WriteInt Write_Datei,Map(Tile_X,Tile_Y) Next Next CloseFile(Write_Datei) End Function Function Draw_Tiles(X=0,Y=0) Local Tile_X,Tile_Y For Tile_X = 0 To Map_Width For Tile_Y = 0 To Map_Height DrawBlock Tileset,(X+Tile_X)*TileSize,(Y+Tile_Y)*TileSize,Map(Tile_X,Tile_Y) ;Zeichnet, die Tiles Next Next End Function Function Load_Medias() Local Read_Image ;------------------------------------------------------------------------------------ ;Hiermit ermitteln wir, wieviele Tiles in einen Bild sind, ;indem wir, (X_pixel * Y_Pixel)/ 32² rechnen Read_Image=LoadImage("GFX\Tilesets\"+TileSetDatei$) Max_Tile=(ImageWidth(Read_Image)/TileSize)*(ImageHeight(Read_Image)/TileSize) FreeImage Read_Image ;------------------------------------------------------------------------------------ If Mouse_GFX <> 0 Then FreeImage Mouse_GFX Mouse_GFX = LoadImage("GFX\Pointer.bmp") ; Lädt mauszeiger MaskImage Mouse_GFX,255,0,255 ;schneidet die Lilanen Stellen aus dem Bild heraus If Tileset <> 0 Then FreeImage Tileset Tileset = LoadAnimImage("GFX\Tilesets\"+TileSetDatei$,TileSize, TileSize, 0, Max_Tile) ;Lädt das Tile-set End Function Function Tile_in_Button_Zeichnen(Button) SetBuffer ImageBuffer(Button); wir Zeichnen direckt in den Knopf das ausgewählte Tile herein! DrawBlock tileset,2,2,Tile_Auswahl SetBuffer BackBuffer() End Function Function Get_Data_Name() Repeat ; Damit kein Buchstabe mehr im Puffer ist! Ascii=GetKey(); Damit kein Buchstabe mehr im Puffer ist! Until Ascii = 0; Damit kein Buchstabe mehr im Puffer ist! CopyRect 0,0, GraphicsWidth(), GraphicsHeight(), 0, 0 ,FrontBuffer() ,BackBuffer() CreateWindow("Datei eingeben",100,100) ; Fenster erstellen SetBuffer BackBuffer() Repeat Gui_Control() ; Gui Zeichnen Flip Until Chat_Rueckgabe$ <> "" End Function |
||
between angels and insects |
- Zuletzt bearbeitet von Jan_ am Mi, März 31, 2004 10:13, insgesamt einmal bearbeitet
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, ich werde mir die Auswahl, der DAteien nochmal überlegen, die ist nicht so gt gelungen!
https://www.blitzforum.de/viewtopic.php?t=866 <-- So, BruZard hat da ja mal was gemacht! bitte herunterladen und die "*.decls" in BlitzBasicOrdner setzten und dann die DLL in den gleichen ordner, wie die bb Quelltextdatei! So, und dass wollen wir, von dort! Code: [AUSKLAPPEN] ;THX an BruZard dafür, das er die Lib 4 Free gibt
;http://www.blitzforum.de/viewtopic.php?t=866 ;thema, wie benutzte ich diese Lib! ;btools_requester.dll <-- die benutzte Datei ;BTLoadFile$(title$,Startpfad$,Dateityp$) <-- die wichtigen befehle ;BTSaveFile$(title$,Startpfad$,Dateityp$) <-- die wichtigen befehle Graphics 640,480,24,2 Speicher_Datei$ = BTSaveFile("Speichern",CurrentDir$ () + "Maps\",".map") ; Speicherpfad ermitteln Lade_Datei$ = BTLoadFile("Laden",CurrentDir$ () + "Maps\",".map") ; Ladepfad ermitteln RuntimeError "Speicher Datei: "+Speicher_Datei$+", Lade Datei: "+Lade_Datei$ |
||
between angels and insects |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, nun, mit den Windows Dateiauswahl.
veränderungen sind zu finden in: -GetDataName -Load_Map -Save_Map -Load_Medias Editor.bb : Code: [AUSKLAPPEN] ;Rechtschreibe Fehler sind absichtlcih und dienen der Belustigung!
Include "GUI.bb" ; So, da laden wir unsere Libary ;Configurationen Laden ConfigDatei=ReadFile ("config.cfg") X_Aufloesung = ReadLine(ConfigDatei) Y_Aufloesung = ReadLine(ConfigDatei) Farbtiefe = ReadLine(ConfigDatei) Fenstermodus = ReadLine(ConfigDatei) CloseFile ConfigDatei ;Grafik initialisieren Graphics X_Aufloesung,Y_Aufloesung,Farbtiefe,Fenstermodus HidePointer ; Damit verstecken wir die Maus! ;Arreys und Globals Global Map_Width = 31, Map_Height = 31 ; Map höhe und breite Dim Map(Map_Width,Map_Height) Global G2W = GraphicsWidth()/2,G2H = GraphicsHeight()/2 ; Variablen, damit es nicht jedesmal neu berechnet werde muss Global Tileset, TileSetDatei$ Global Tile_Auswahl Global Mouse_GFX ; Mausbild Global Max_Tile Global Map_X,Map_Y ; Position des Bildschirms Global TileSize = 32 ; Setzt die Tile größe! Global btn_Save,btn_Neu,btn_Laden,Btn_Beenden;Gui Buttons ihre Handels Global btn_next,btn_last,Btn_Fenster;Gui Buttons ihre Handels Global Maus_auf_Gui_angewandt ; wird gebraucht, weil sonst etwas sehr unschönes passiert! ;Tasten Const Key_Plus = 78 Const Key_Minus = 74 Const Key_F5 = 63 Const Key_UP = 200 Const Key_Left = 203 Const Key_Right = 205 Const Key_Down = 208 Get_Data_Name() Load_Map(Chat_Rueckgabe$);Lädt Map ;load medias Load_Medias() ;Gui Erstellen btn_beenden=Create_Button("Beenden des Editor",10,160) btn_Neu=Create_Button("Neues Level",10,10) btn_Save=Create_Button("Level Speichern",10,60) btn_Laden=Create_Button("Level Laden",10,110) btn_next=Create_Button("Nächstes Tile",GraphicsWidth()-150,10) btn_last=Create_Button("Vorheriges Tile",GraphicsWidth()-150,110) btn_fenster=Create_Button("",GraphicsWidth()-150,50,36,36) ; So, in dieses Fenster, kommt das Aktuelle Tile immer rein! Tile_in_Button_Zeichnen(btn_fenster) ; Das wir am anfang, schon das tile im Button haben ;hintergrund setzten SetBuffer BackBuffer() Local X,Y Local MMX,MMY Local R,G,B,Rae=1,Gae=2,Bae=3 Repeat Keyboard() MMX= MouseX() : MMY = MouseY() ;------------------------------------------------------ ;Kleiner Optisch schöner Effekt aber sonst kaum nutzten R=R+Rae G=G+Gae B=B+Bae If R> 255 Then R= 255: Rae = Rand(-5,-1) If G> 255 Then G= 255: Gae = Rand(-5,-1) If B> 255 Then B= 255: Bae = Rand(-5,-1) If R< 0 Then R= 0: Rae = Rand(1,5) If G< 0 Then G= 0: Gae = Rand(1,5) If B< 0 Then B= 0: Bae = Rand(1,5) Color R,G,B ;------------------------------------------------------ Cls Draw_tiles(Map_X,Map_Y) ; Zeichnet die Tiles Mouse(MMX,MMY) ; Aufrufen, der Maus Zeichenfunction Gui_Control ; Zeichnet die Knöpfe Text G2W,0,"RPG Editor - Entwicklungsstufe 10",1 Text G2W,15,"-Ein Tutorial von Jan Kuhnert-",1 Text G2W,30,"-Thema: Dateiauswahl-",1 DrawImage Mouse_GFX,MMX,MMY Flip(True) Until KeyHit(1) Save_map("Last_Change.tmp") ; notspeichern End Function Keyboard() If KeyHit(Key_F5) Then Save_Map ;Bewegen der Karte bei Cursortastendruck! ;--------------------------------------------- If Map_Y < 0 ;Wenn im Spielfeld bereich die Maus ist! If KeyDown(Key_UP) Then Map_Y= Map_Y+1 End If If Map_Y > -Map_Width +(G2H / (TileSize/2)) If KeyDown(Key_DOWN) Then Map_Y= Map_Y-1 End If If Map_X < 0 If KeyDown(Key_LEFT) Then Map_X= Map_X+1 End If If Map_X > -Map_Height+(G2W / (TileSize/2)) If KeyDown(Key_RIGHT) Then Map_X= Map_X-1 End If ;--------------------------------------------- End Function Function Mouse(MMX,MMY) Local Tile_X,Tile_Y Local Image_Wechsel, Gui_Element Tile_X = Int(MMX/TileSize) Tile_Y = Int(MMY/TileSize) Text 0,200,(Tile_X-Map_X) + " x " + (Tile_Y-Map_Y) DrawBlock tileset,Tile_X*TileSize,Tile_Y*TileSize,Tile_Auswahl ;Zeichnet den Block, an die Mausposition, befohr er gesetzt wurde DrawImage Mouse_GFX,MMX,MMY Rect Tile_X*TileSize-1,Tile_Y*TileSize-1,TileSize+2,TileSize+2,0 ; 4Eck noch etwas vergrößern Rect Tile_X*TileSize,Tile_Y*TileSize,TileSize,TileSize,0 ; Zeichnet Das 4Eck, an der Maus-Position If MouseHit(1) Then Gui_Element=Button_Overlap(MMX,MMY) If Gui_Element <> 0 Then ; nur wenn ein Knopf gedrückt wurde reagieren Maus_auf_Gui_angewandt=1 If Gui_Element = btn_neu Then load_map() If Gui_Element = btn_save Then Get_Data_Name() Save_map(Chat_Rueckgabe$) End If If Gui_Element = btn_laden Then Get_Data_Name() load_map(Chat_Rueckgabe$) End If If Gui_Element = btn_beenden Then Save_map("Last_Change.tmp"): End ; Notspeichern und beenden If Gui_Element = btn_next Then Tile_Auswahl=Tile_Auswahl+1:Image_Wechsel= 1 If Gui_Element = btn_last Then Tile_Auswahl=Tile_Auswahl-1:Image_Wechsel= 1 If Image_Wechsel= 1 Then ; wenn das tile gewechselt wurde, Bild ändern,überprüfen If Tile_Auswahl<0 Then Tile_Auswahl=Max_Tile-1 If Tile_Auswahl>Max_Tile-1 Then Tile_Auswahl=0 Tile_in_Button_Zeichnen(btn_fenster) ; Tile in Button Zeichnen Image_Wechsel=0 End If End If End If If MouseDown(1) If Gui_Element + Maus_auf_Gui_angewandt=0 Then Map(Tile_X-Map_X,Tile_Y-Map_Y)=Tile_Auswahl ;ansonsten, Tile setzten End If Else Maus_auf_Gui_angewandt=0 End If End Function Function Load_Map(MapName$="") Local Tile_X,Tile_Y If MapName$<>"" Then ; Lädt, wenn ein Map Name angegeben wurde Read_Datei=ReadFile(MapName$) If read_Datei <> 0 Then ; Falls, keine Datei davon vorhanden, wird nicht geladen, sondern neue erstellt TileSetDatei$ = ReadLine$(Read_Datei) For Tile_X = 0 To Map_Width For Tile_Y = 0 To Map_Height Map(Tile_X,Tile_Y) = ReadInt(Read_Datei) Next Next CloseFile Read_Datei Else MapName$ = "" EndIf End If If MapName$="" Then ; Falls keine Map vorhanden ist, neue erstellen For Tile_X = 0 To Map_Width For Tile_Y = 0 To Map_Height Map(Tile_X,Tile_Y) = 0 ; Macht bei allen Tiles, Bild "0" Next Next TileSetDatei$ = "tiles.bmp"; Wird Später noch aus der Datei gelesen End If Return TileSetDatei$ End Function Function Save_Map(Mapname$="temp.map") ;Speichert die Map Local Tile_X,Tile_Y Map_X=0:Map_Y=0 ; wenn ne map geladen wurde, wirder Oben links anzeigen! Write_Datei=WriteFile (Mapname$) WriteLine Write_datei, TileSetDatei$ ; Speichert Tile-set Name For Tile_X = 0 To Map_Width For Tile_Y = 0 To Map_Height WriteInt Write_Datei,Map(Tile_X,Tile_Y) Next Next CloseFile(Write_Datei) End Function Function Draw_Tiles(X=0,Y=0) Local Tile_X,Tile_Y For Tile_X = 0 To Map_Width For Tile_Y = 0 To Map_Height DrawBlock Tileset,(X+Tile_X)*TileSize,(Y+Tile_Y)*TileSize,Map(Tile_X,Tile_Y) ;Zeichnet, die Tiles Next Next End Function Function Load_Medias() Local Read_Image ;------------------------------------------------------------------------------------ ;Hiermit ermitteln wir, wieviele Tiles in einen Bild sind, ;indem wir, (X_pixel * Y_Pixel)/ 32² rechnen Read_Image=LoadImage("GFX\Tilesets\"+TileSetDatei$) Max_Tile=(ImageWidth(Read_Image)/TileSize)*(ImageHeight(Read_Image)/TileSize) FreeImage Read_Image ;------------------------------------------------------------------------------------ If Mouse_GFX <> 0 Then FreeImage Mouse_GFX ; Löschen, wenn schon vorhanden! Mouse_GFX = LoadImage("GFX\Pointer.bmp") ; Lädt mauszeiger MaskImage Mouse_GFX,255,0,255 ;schneidet die Lilanen Stellen aus dem Bild heraus If Tileset <> 0 Then FreeImage Tileset ; Löschen, wenn schon vorhanden! Tileset = LoadAnimImage("GFX\Tilesets\"+TileSetDatei$,TileSize, TileSize, 0, Max_Tile) ;Lädt das Tile-set End Function Function Tile_in_Button_Zeichnen(Button) SetBuffer ImageBuffer(Button); wir Zeichnen direckt in den Knopf das ausgewählte Tile herein! DrawBlock tileset,2,2,Tile_Auswahl SetBuffer BackBuffer() End Function Function Get_Data_Name() Chat_Rueckgabe$ = BTLoadFile$("Laden",CurrentDir() ,"Map Dateien") End Function |
||
between angels and insects |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Neuer Tag, neues glück, version 11:
-Tilesetauswahl -Variable Mapgrößen -Variable Tile Set größen -Dateiformat änderungen Code: [AUSKLAPPEN] ;Rechtschreibe Fehler sind absichtlcih und dienen der Belustigung!
Include "GUI.bb" ; So, da laden wir unsere Libary ;Configurationen Laden ConfigDatei=ReadFile ("config.cfg") X_Aufloesung = ReadLine(ConfigDatei) Y_Aufloesung = ReadLine(ConfigDatei) Farbtiefe = ReadLine(ConfigDatei) Fenstermodus = ReadLine(ConfigDatei) CloseFile ConfigDatei ;Grafik initialisieren Graphics X_Aufloesung,Y_Aufloesung,Farbtiefe,Fenstermodus HidePointer ; Damit verstecken wir die Maus! ;Arreys und Globals Global Map_Width = 31, Map_Height = 31 ; Map höhe und breite Dim Map(0,0) Global G2W = GraphicsWidth()/2,G2H = GraphicsHeight()/2 ; Variablen, damit es nicht jedesmal neu berechnet werde muss Global Tileset, TileSetDatei$ Global Tile_Auswahl Global Mouse_GFX ; Mausbild Global Max_Tile Global Map_X,Map_Y ; Position des Bildschirms Global TileSize = 32 ; Setzt die Tile größe! Global btn_next_size1, btn_last_size1, btn_next_size2, btn_last_size2, btn_ok; Gui Buttons, für die Mapsize Global btn_Save,btn_Neu,btn_Laden,Btn_Beenden;Gui Buttons ihre Handels Global btn_next,btn_last,Btn_Fenster;Gui Buttons ihre Handels Global Maus_auf_Gui_angewandt ; wird gebraucht, weil sonst etwas sehr unschönes passiert! ;Tasten Const Key_Plus = 78 Const Key_Minus = 74 Const Key_F5 = 63 Const Key_UP = 200 Const Key_Left = 203 Const Key_Right = 205 Const Key_Down = 208 Get_Data_Name() Load_Map(Chat_Rueckgabe$);Lädt Map ;load medias Load_Medias() ;Gui Erstellen btn_beenden=Create_Button("Beenden des Editor",10,160) btn_Neu=Create_Button("Neues Level",10,10) btn_Save=Create_Button("Level Speichern",10,60) btn_Laden=Create_Button("Level Laden",10,110) btn_next=Create_Button("Nächstes Tile",GraphicsWidth()-150,10) btn_last=Create_Button("Vorheriges Tile",GraphicsWidth()-150,110) btn_fenster=Create_Button("",GraphicsWidth()-150,50,36,36) ; So, in dieses Fenster, kommt das Aktuelle Tile immer rein! Tile_in_Button_Zeichnen(btn_fenster) ; Das wir am anfang, schon das tile im Button haben ;hintergrund setzten SetBuffer BackBuffer() Local X,Y Local MMX,MMY Local R,G,B,Rae=1,Gae=2,Bae=3 Repeat Keyboard() MMX= MouseX() : MMY = MouseY() ;------------------------------------------------------ ;Kleiner Optisch schöner Effekt aber sonst kaum nutzten R=R+Rae G=G+Gae B=B+Bae If R> 255 Then R= 255: Rae = Rand(-5,-1) If G> 255 Then G= 255: Gae = Rand(-5,-1) If B> 255 Then B= 255: Bae = Rand(-5,-1) If R< 0 Then R= 0: Rae = Rand(1,5) If G< 0 Then G= 0: Gae = Rand(1,5) If B< 0 Then B= 0: Bae = Rand(1,5) Color R,G,B ;------------------------------------------------------ Cls Draw_tiles(Map_X,Map_Y) ; Zeichnet die Tiles Mouse(MMX,MMY) ; Aufrufen, der Maus Zeichenfunction Gui_Control ; Zeichnet die Knöpfe Text G2W,0,"RPG Editor - Entwicklungsstufe 11",1 Text G2W,15,"-Ein Tutorial von Jan Kuhnert-",1 Text G2W,30,"-Thema: Daten für Neue Map-",1 DrawImage Mouse_GFX,MMX,MMY Flip(True) Until KeyHit(1) Save_map("Last_Change.tmp") ; notspeichern End Function Keyboard() If KeyHit(Key_F5) Then Save_Map ;Bewegen der Karte bei Cursortastendruck! ;--------------------------------------------- If Map_Y < 0 ;Wenn im Spielfeld bereich die Maus ist! If KeyDown(Key_UP) Then Map_Y= Map_Y+1 End If If Map_Y > -Map_Width +(G2H / (TileSize/2)) If KeyDown(Key_DOWN) Then Map_Y= Map_Y-1 End If If Map_X < 0 If KeyDown(Key_LEFT) Then Map_X= Map_X+1 End If If Map_X > -Map_Height+(G2W / (TileSize/2)) If KeyDown(Key_RIGHT) Then Map_X= Map_X-1 End If ;--------------------------------------------- End Function Function Mouse(MMX,MMY) Local Tile_X,Tile_Y Local Image_Wechsel, Gui_Element Tile_X = Int(MMX/TileSize) Tile_Y = Int(MMY/TileSize) Text 0,200,(Tile_X-Map_X) + " x " + (Tile_Y-Map_Y) DrawBlock tileset,Tile_X*TileSize,Tile_Y*TileSize,Tile_Auswahl ;Zeichnet den Block, an die Mausposition, befohr er gesetzt wurde DrawImage Mouse_GFX,MMX,MMY Rect Tile_X*TileSize-1,Tile_Y*TileSize-1,TileSize+2,TileSize+2,0 ; 4Eck noch etwas vergrößern Rect Tile_X*TileSize,Tile_Y*TileSize,TileSize,TileSize,0 ; Zeichnet Das 4Eck, an der Maus-Position If MouseHit(1) Then Gui_Element=Button_Overlap(MMX,MMY) If Gui_Element <> 0 Then ; nur wenn ein Knopf gedrückt wurde reagieren Maus_auf_Gui_angewandt=1 If Gui_Element = btn_neu Then load_map() If Gui_Element = btn_save Then Get_Data_Name() Save_map(Chat_Rueckgabe$) End If If Gui_Element = btn_laden Then Get_Data_Name() load_map(Chat_Rueckgabe$) End If If Gui_Element = btn_beenden Then Save_map("Last_Change.tmp"): End ; Notspeichern und beenden If Gui_Element = btn_next Then Tile_Auswahl=Tile_Auswahl+1:Image_Wechsel= 1 If Gui_Element = btn_last Then Tile_Auswahl=Tile_Auswahl-1:Image_Wechsel= 1 If Image_Wechsel= 1 Then ; wenn das tile gewechselt wurde, Bild ändern,überprüfen If Tile_Auswahl<0 Then Tile_Auswahl=Max_Tile-1 If Tile_Auswahl>Max_Tile-1 Then Tile_Auswahl=0 Tile_in_Button_Zeichnen(btn_fenster) ; Tile in Button Zeichnen Image_Wechsel=0 End If End If End If If MouseDown(1) If Gui_Element + Maus_auf_Gui_angewandt=0 Then Map(Tile_X-Map_X,Tile_Y-Map_Y)=Tile_Auswahl ;ansonsten, Tile setzten End If Else Maus_auf_Gui_angewandt=0 End If End Function Function Load_Map(MapName$="") Local Tile_X,Tile_Y If MapName$<>"" Then ; Lädt, wenn ein Map Name angegeben wurde Read_Datei=ReadFile(MapName$) If read_Datei <> 0 Then ; Falls, keine Datei davon vorhanden, wird nicht geladen, sondern neue erstellt TileSetDatei$ = ReadLine$(Read_Datei) Map_Width = ReadInt(Read_Datei) Map_height = ReadInt(Read_Datei) Dim Map(Map_Width,Map_Height) Tile_size = ReadInt(Read_Datei) For Tile_X = 0 To Map_Width For Tile_Y = 0 To Map_Height Map(Tile_X,Tile_Y) = ReadInt(Read_Datei) Next Next CloseFile Read_Datei Else MapName$ = "" EndIf End If If MapName$="" Then ; Falls keine Map vorhanden ist, neue erstellen ; btn_next_size, btn_last_size, btn_ok Get_Map_Daten() Dim Map(Map_Width,Map_Height) For Tile_X = 0 To Map_Width For Tile_Y = 0 To Map_Height Map(Tile_X,Tile_Y) = 0 ; Macht bei allen Tiles, Bild "0" Next Next End If Return TileSetDatei$ End Function Function Save_Map(Mapname$="temp.map") ;Speichert die Map Local Tile_X,Tile_Y Map_X=0:Map_Y=0 ; wenn ne map geladen wurde, wirder Oben links anzeigen! Write_Datei=WriteFile (Mapname$) WriteLine Write_datei, TileSetDatei$ ; Speichert Tile-set Name WriteInt Write_datei, Map_Width WriteInt Write_datei, Map_height WriteInt Write_datei, Tile_size For Tile_X = 0 To Map_Width For Tile_Y = 0 To Map_Height WriteInt Write_Datei,Map(Tile_X,Tile_Y) Next Next CloseFile(Write_Datei) End Function Function Draw_Tiles(X=0,Y=0) Local Tile_X,Tile_Y For Tile_X = 0 To Map_Width For Tile_Y = 0 To Map_Height DrawBlock Tileset,(X+Tile_X)*TileSize,(Y+Tile_Y)*TileSize,Map(Tile_X,Tile_Y) ;Zeichnet, die Tiles Next Next End Function Function Load_Medias() Local Read_Image ;------------------------------------------------------------------------------------ ;Hiermit ermitteln wir, wieviele Tiles in einen Bild sind, ;indem wir, (X_pixel * Y_Pixel)/ 32² rechnen Read_Image=LoadImage(TileSetDatei$) Max_Tile=(ImageWidth(Read_Image)/TileSize)*(ImageHeight(Read_Image)/TileSize) FreeImage Read_Image ;------------------------------------------------------------------------------------ If Mouse_GFX <> 0 Then FreeImage Mouse_GFX ; Löschen, wenn schon vorhanden! Mouse_GFX = LoadImage("GFX\Pointer.bmp") ; Lädt mauszeiger MaskImage Mouse_GFX,255,0,255 ;schneidet die Lilanen Stellen aus dem Bild heraus If Tileset <> 0 Then FreeImage Tileset ; Löschen, wenn schon vorhanden! Tileset = LoadAnimImage(TileSetDatei$,TileSize, TileSize, 0, Max_Tile) ;Lädt das Tile-set End Function Function Tile_in_Button_Zeichnen(Button) SetBuffer ImageBuffer(Button); wir Zeichnen direckt in den Knopf das ausgewählte Tile herein! DrawBlock tileset,2,2,Tile_Auswahl SetBuffer BackBuffer() End Function Function Get_Data_Name(Name$ = "Laden",File$ = "Map Dateien") Chat_Rueckgabe$ = BTLoadFile$(Name$,CurrentDir() ,File$ ) End Function Function Get_Map_Daten() Local ende = 0 Local groesse = 32 Get_Data_Name("Tileset wählen","Bilddatei") If Chat_Rueckgabe$ = "" Then Chat_Rueckgabe$ = "GFX\Tilesets\tiles.bmp" TileSetDatei$ =Chat_Rueckgabe$ If Mouse_GFX <> 0 Then FreeImage Mouse_GFX ; Löschen, wenn schon vorhanden! Mouse_GFX = LoadImage("GFX\Pointer.bmp") ; Lädt mauszeiger MaskImage Mouse_GFX,255,0,255 ;schneidet die Lilanen Stellen aus dem Bild heraus btn_next_size1=Create_Button("größer",10,10) btn_last_size1=Create_Button("kleiner",10,70) btn_next_size2=Create_Button("größer",150,10) btn_last_size2=Create_Button("kleiner",150,70) btn_ok=Create_Button("OK",10,100) SetBuffer BackBuffer() Repeat Cls If MouseHit(1) Then Gui_Element=Button_Overlap(MMX,MMY) If Gui_Element = btn_ok Then ende = 1 If Gui_Element = btn_next_size1 Then groesse = groesse *2 If Gui_Element = btn_last_size1 Then groesse = groesse /2 If Gui_Element = btn_next_size2 Then size = size *2 If Gui_Element = btn_last_size2 Then size = size /2 If Groesse < 8 Then groesse = 8 If Groesse > 128 Then groesse = 128 If size < 8 Then size = 8 If size > 2048 Then size = 2048 End If Text 10,50,"Tilesize: " + groesse Text 150,50,"Mapsize: " +size +"x"+size MMX= MouseX() : MMY = MouseY() Gui_Control DrawImage Mouse_GFX,MMX,MMY Flip(True) Until ende = 1 Del_Gui() Map_Width = size-1: Map_Height = size-1 TileSize = groesse End Function |
||
between angels and insects |
Rancis^Ditch |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jan_ das haste echt Supi gemacht!
Es wäre nett wenn du das alles als *.rar bzw. *.zip machen würdest! Ich würde das dann mal Uploaden!!! Bye |
||
Mit freundlichen Grüßen
Rancis |
x.Force |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jo wird mir ein bisschen unübersichtlich ![]() |
||
AMD Athlon XP 2000+ | 1024mb DDR-Ram | Asus Radeon 9600XT | BENQ FP757 17°Zoll TFT Was kümmert mich mein Geschwätz von gestern? (Konrad Adenauer) -.- |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
hat jemand noch die letzte Gui.bb? | ||
between angels and insects |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group