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

![]() |
NDCBetreff: [Tutorial] Map-Editor für RPGs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leutz,
hab vor ein paar Tagen Blitz Basic entdeckt und gleich alles in mich geschlungen. Jetzt bin ich auf die Idee gekommen ein kleines RPG-Spielchen im Stil von Zelda und co. zu programmieren. Um zum Punkt zu kommen, da das meine erste Programmiersprache ist hoff ich das es selbstverständlich ist das ich nicht weiß wo genau ich anfangen soll. Was ich brauche ist ein Editor mit dem ich die Maps aufbauen kann. Klar kann ich von Niemandem verlangen das er mir die ganze Arbeit abnimmt, aber kann mir jemand irgendwie sagen woran ich mich da halten soll? Wie gesagt, weiß nicht wo ich anfangen soll Fettes Danke im Voraus!! MfG NDC |
||
- Zuletzt bearbeitet von NDC am So, März 28, 2004 15:28, insgesamt einmal bearbeitet
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ähm, das ist, jetzt Hart, der Anfang von dir ist gut, aber, da du erst einpaar tage, musst du es erstmal richtig lernen!
Sachen, die du umbedingt verstehen musst: -Mathematik ![]() - Dim - Arreys - Type - Arreys - If Then Elseif - Schleifen (Repeat until und wend while) - Functionen Wenn du das alles richtig verstehtst, erkläre ich es dir gerne weiter, aber das sind die grund voraussetzungen, für alles! |
||
between angels and insects |
![]() |
NDC |
![]() Antworten mit Zitat ![]() |
---|---|---|
Keine Angst, ich hab 3 verschiedene Tutorials hinter mir wo ich mir die ganzen Grundkenntnisse angeeignet hab, hatte viel Zeit *g*
Kann vielleicht noch nicht alles Optimal nutzen aber das gehört zum lernen dazu denk ich mal ![]() |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, nun, Wie Bastel ich einen RPG Editor, Teil1
Für B3D und B2D, eventuell läuft es auch auf Blitz + Wir initialisieren die Grafik Graphics 800,600,32,2 setbuffer backbuffer() Wir legen ein 2D Arrey an Dim Map(31,31) Wir Laden ein tileset Loadanimimage("Bilder.bmp",32, 32, 0, 5) Wir eröffnen die schleife Repeat Grafich noch etwas Cls Text 0,0,Hallo, das wir ein Editor Flip(true) Wir schließen die schleife Until keyhit(1) End Hast du mal ein Tileset?Dan könnte man es etwas besser machen! Code: [AUSKLAPPEN] Graphics 800,600,32,2
setbuffer backbuffer() Dim Map(31,31) Loadanimimage("Bilder.bmp",32, 32, 0, 5) Repeat Cls Text 0,0,"Hallo, das wird ein Editor" Flip(true) Until keyhit(1) End |
||
between angels and insects |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, wenn du das hast, ist der nächste Schritt,
Wenn du was nicht ganz verstehst, bitte sofort Stopp sagen! sonst, wird aus dir leider kein jfk oder ST, Bruzard, J0k3 oder Jan_ oder, wie sie alle heißen ... Code: [AUSKLAPPEN] ;Grafik initialisieren
Graphics 800,600,32,2 SetBuffer BackBuffer() ;Arreys und Globals Dim Map(31,31) Global Tileset ;load medias Load_Medias() Local X,Y Repeat Cls Draw() ; Zeichnet die Tiles Text 0,0,"RPG Editor - Entwicklungsstufe 2" Flip(True) Until KeyHit(1) End Function Draw(X=0,Y=0) Local Tile_X,Tile_Y For Tile_X = 0 To 31 For Tile_Y = 0 To 31 DrawBlock Tileset,Tile_X*32,Tile_Y*32,Map(Tile_X,Tile_Y) Next Next End Function Function Load_Medias() Tileset = LoadAnimImage("tiles.bmp",32, 32, 0, 8) End Function |
||
between angels and insects |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, nun noch mein geniales bildchen dazu. wenn jemand etwas besseres hat, immer zu!
Jan's Geniales _Tile-set (ca.1KB) -->Hier Klicken<-- Ach ja, Rechtschreibe fehler sind beabsichtigt, und dienen der allgemeinen Belustigung! |
||
between angels and insects |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bis hierhin alles verstanden?
Ja, Code: [AUSKLAPPEN] ;Grafik initialisieren
Graphics 800,600,32,2 SetBuffer BackBuffer() ;Arreys und Globals Dim Map(31,31) Global Tileset Load_Map();Lädt Map ;load medias Load_Medias() Local X,Y Local R,G,B,Rae=1,Gae=2,Bae=3 Repeat ;------------------------------------------------------ ;Kleiner Optisch schöner Effekt aber sonst keum 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 ; CLS wird nicht mehr benötigt, weil wir Tiles bentzten! Draw() ; Zeichnet die Tiles Mouse(MouseX(),MouseY()) ; Aufrufen, der Maus Zeichenfunction Text 0,0,"RPG Editor - Entwicklungsstufe 3" Flip(True) Until KeyHit(1) End Function Mouse(MMX,MMY) Rect Int(MMX/32)*32,Int(MMY/32)*32,32,32,0 ; Zeichnet Das 4Eck, an der Maus-Position End Function Function Load_Map(MapName$="") Local Tile_X,Tile_Y If MapName$="" Then ; Falls keine Map vorhanden ist, neue erstellen For Tile_X = 0 To 31 For Tile_Y = 0 To 31 Map(Tile_X,Tile_Y) = 0 ; Macht bei allen Tiles, Bild "0" Next Next Else ;Hier das Leden der Datei herrein End If End Function Function Draw(X=0,Y=0) Local Tile_X,Tile_Y For Tile_X = 0 To 31 For Tile_Y = 0 To 31 DrawBlock Tileset,Tile_X*32,Tile_Y*32,Map(Tile_X,Tile_Y) Next Next End Function Function Load_Medias() Tileset = LoadAnimImage("tiles.bmp",32, 32, 0, 8) End Function So, Das auch, wenn ja, dann Name, Datum, Klasse, 1. Klassenarbeit |
||
between angels and insects |
![]() |
NDC |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm... ...
So schwer ist das alles eigendlich garnicht, nur auf die Idee zu kommen kann manchmal echt lange dauern, oder? Ich glaub ich hätte für das alles wahrscheinlich länger als eine Woche gebraucht. ^^' ![]() ![]() Jedenfalls fettes Danke das du dir die Mühe machst. ![]() Warte schon gespannt auf die nächste Lektion ![]() |
||
Es gibt nur 10 Arten von Menschen,die die das Binär-System verstehen und die,die es nicht verstehen. |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was ist neu:
Bei Mausklick, Wird das neue Tile gesetzt, Tile auswahl (mit + & - ), Mehr Variablen benutzt --> Variabler ![]() Code: [AUSKLAPPEN] ;Grafik initialisieren
Graphics 800,600,32,2 SetBuffer BackBuffer() ;Arreys und Globals Dim Map(31,31) Global Tileset, TileSetDatei$ Global Tile_Auswahl Global Max_Tile ;Tasten Const Key_Plus = 78 Const Key_Minus = 74 Load_Map();Lädt Map ;load medias Load_Medias() Local X,Y Local R,G,B,Rae=1,Gae=2,Bae=3 Repeat Keyboard() ;------------------------------------------------------ ;Kleiner Optisch schöner Effekt aber sonst keum 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 ; CLS wird nicht mehr benötigt, weil wir Tiles bentzten! Draw() ; Zeichnet die Tiles Mouse(MouseX(),MouseY()) ; Aufrufen, der Maus Zeichenfunction Text 0,0,"RPG Editor - Entwicklungsstufe 4" Text 0,15,"+ & - Zum Tiles Wechseln" Flip(True) Until KeyHit(1) End Function Keyboard() ;Auswahl der Tiles, vorübergehend mit + und - If KeyHit(78) Then Tile_Auswahl=Tile_Auswahl+1 If KeyHit(74) Then Tile_Auswahl=Tile_Auswahl-1 If Tile_Auswahl<0 Then Tile_Auswahl=Max_Tile If Tile_Auswahl>Max_Tile Then Tile_Auswahl=0 End Function Function Mouse(MMX,MMY) Local Tile_X,Tile_Y Tile_X = Int(MMX/32) Tile_Y = Int(MMY/32) DrawBlock tileset,Tile_X*32,Tile_Y*32,Tile_Auswahl ;Zeichnet den Block, an die Mausposition, befohr er gesetzt wurde Rect Tile_X*32-1,Tile_Y*32-1,34,34,0 ; 4Eck noch etwas vergrößern Rect Tile_X*32,Tile_Y*32,32,32,0 ; Zeichnet Das 4Eck, an der Maus-Position If MouseDown(1) Then ;---------------------------------------------------- ;Das kommt später ; If Gui_overlap Then ; End If ;---------------------------------------------------- Map(Tile_X,Tile_Y)=Tile_Auswahl End If End Function Function Load_Map(MapName$="") Local Tile_X,Tile_Y If MapName$="" Then ; Falls keine Map vorhanden ist, neue erstellen For Tile_X = 0 To 31 For Tile_Y = 0 To 31 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 Else ;Hier das Laden der Datei herrein End If Return TileSetDatei$ End Function Function Draw(X=0,Y=0) Local Tile_X,Tile_Y For Tile_X = 0 To 31 For Tile_Y = 0 To 31 DrawBlock Tileset,Tile_X*32,Tile_Y*32,Map(Tile_X,Tile_Y) Next Next End Function Function Load_Medias() Max_Tile = 8 ; Wird Später noch aus der Datei gelesen Tileset = LoadAnimImage(TileSetDatei$,32, 32, 0, Max_Tile) End Function |
||
between angels and insects |
- Zuletzt bearbeitet von Jan_ am Do, März 25, 2004 15:15, insgesamt einmal bearbeitet
![]() |
NDC |
![]() Antworten mit Zitat ![]() |
---|---|---|
War schneller als du *lach* ![]() Ned bös sein, bin zwar ständig online doch nicht immer am PC, deswegen kann ich dir auch nicht immer schreiben das ich bisher alles kapiert hab. Doch ich werd mich schon täglich melden sofern Schule und Arbeit das zulässt. Nochmals Danke |
||
Es gibt nur 10 Arten von Menschen,die die das Binär-System verstehen und die,die es nicht verstehen. |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, jetzt funktioniert noch laden und speichern!
So welche verbrechen,mit Data, fangen wir erst garnicht an! Noch ein kleiner Bug behoben,hier und dort was rumgepinnselt, schaue dir einfach,die veränderungen an! Kann uns mal jemand seine Gui bereitstellen, das wir sie gleich einarbeiten? ???bitte bitte??? Code: [AUSKLAPPEN] ;Grafik initialisieren
Graphics 800,600,32,2 SetBuffer BackBuffer() ;Arreys und Globals Dim Map(31,31) Global Tileset, TileSetDatei$ Global Tile_Auswahl Global Max_Tile ;Tasten Const Key_Plus = 78 Const Key_Minus = 74 Const Key_F5 = 63 Load_Map("temp.map");Lädt Map ;load medias Load_Medias() Local X,Y Local R,G,B,Rae=1,Gae=2,Bae=3 Repeat Keyboard() ;------------------------------------------------------ ;Kleiner Optisch schöner Effekt aber sonst keum 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 ; CLS wird nicht mehr benötigt, weil wir Tiles bentzten! Draw() ; Zeichnet die Tiles Mouse(MouseX(),MouseY()) ; Aufrufen, der Maus Zeichenfunction Text 0,0,"RPG Editor - Entwicklungsstufe 4" Text 0,15,"+ & - Zum Tiles Wechseln" Text 0,30,"F5 zum Speichern" Flip(True) Until KeyHit(1) End Function Keyboard() ;Auswahl der Tiles, vorübergehend mit + und - If KeyHit(Key_F5) Then Save_Map If KeyHit(Key_Plus) Then Tile_Auswahl=Tile_Auswahl+1 If KeyHit(Key_Minus) Then Tile_Auswahl=Tile_Auswahl-1 If Tile_Auswahl<0 Then Tile_Auswahl=Max_Tile-1 If Tile_Auswahl>Max_Tile-1 Then Tile_Auswahl=0 End Function Function Mouse(MMX,MMY) Local Tile_X,Tile_Y Tile_X = Int(MMX/32) Tile_Y = Int(MMY/32) DrawBlock tileset,Tile_X*32,Tile_Y*32,Tile_Auswahl ;Zeichnet den Block, an die Mausposition, befohr er gesetzt wurde Rect Tile_X*32-1,Tile_Y*32-1,34,34,0 ; 4Eck noch etwas vergrößern Rect Tile_X*32,Tile_Y*32,32,32,0 ; Zeichnet Das 4Eck, an der Maus-Position If MouseDown(1) Then ;---------------------------------------------------- ;Das kommt später ; If Gui_overlap Then ; End If ;---------------------------------------------------- Map(Tile_X,Tile_Y)=Tile_Auswahl 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 31 For Tile_Y = 0 To 31 Map(Tile_X,Tile_Y) = ReadByte(Read_Datei) Next Next Else MapName$ = "" EndIf End If If MapName$="" Then ; Falls keine Map vorhanden ist, neue erstellen For Tile_X = 0 To 31 For Tile_Y = 0 To 31 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 (Mapname$) WriteLine Write_datei, TileSetDatei$ ; Speichert Tile-set Name For Tile_X = 0 To 31 For Tile_Y = 0 To 31 WriteByte Write_Datei,Map(Tile_X,Tile_Y) Next Next CloseFile(Write_Datei) End Function Function Draw(X=0,Y=0) Local Tile_X,Tile_Y For Tile_X = 0 To 31 For Tile_Y = 0 To 31 DrawBlock Tileset,Tile_X*32,Tile_Y*32,Map(Tile_X,Tile_Y) ;Teichnet, die Tiles Next Next End Function Function Load_Medias() Max_Tile = 8 ; Wird Später noch aus der Datei gelesen Tileset = LoadAnimImage(TileSetDatei$,32, 32, 0, Max_Tile) ;Lädt das Tile-set End Function |
||
between angels and insects |
![]() |
NDC |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du das eigendlich alles in dieser kurzen Zeit selbst programmiert Jan_?
Respekt ! Scheiße, das muss ich echt mal verdauen, ich glaub von allein wär ich echt nie drauf gekommen... ![]() ![]() ![]() Werd mir jetzt einfach mal den aktuellen Code Zeile für Zeile durchlesen und versuchen alles nachzuvollziehen. Thx. MfG NDC |
||
Es gibt nur 10 Arten von Menschen,die die das Binär-System verstehen und die,die es nicht verstehen. |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, aber nur Nebenbei geschrieben,
Man gewöhnt sich mit der Zeit an, nicht mehr über die Sachen nach zudenken, sondern, seine im Kopf schon fertigen lösungen, nur noch zu verbinden, kompatibel zu machen und zuschreiben. Zum vergleich, daran, habe ich ungefähr 30-60 min gessesen. Die Leute, welche ich oben mal aufgezählt habe, sind alle sehr gute Proger in BB, bestimmt nicht alle guten, aber eine Ganz Passabele auswahl. Ich Proge gerade DX-AS http://www.DX-AS.de So, morgen, machen wir weiter, bisdahin, möchte ich, das du auf deinen eigenen Rechner, mal alle Zahlen änderst, schaust, was ich gerechnet habe, lle Befehle durchgehst, und überlegst, warum gerade diese! Ich glaube, das kan in den Tut bereich. |
||
between angels and insects |
![]() |
Michi1988 |
![]() Antworten mit Zitat ![]() |
---|---|---|
What ne GUI. Blitz+?
Ich denke BB. Und: Wo sind die aufgezählten Leute die gut BB können? |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jan_ hat Folgendes geschrieben: sonst, wird aus dir leider kein jfk oder ST, Bruzard, J0k3 oder Jan_ oder, wie sie alle heißen ...
So, wie gesagt, fehlen bestimmt viele, aber die sind mir gerade eingefallen Das hier ist ne Gute Chance, das ich endlich mal nen RPG Editor Proge ![]() Achtet mal bitte im Tut forum auf das Tut von J0K3 Da niemand ne Gui gibt, machen wir uns selber eine, du öffnest im selben verzeichniss jetzt die Datei "Gui.bb" <-- Das wird eine Libary |
||
between angels and insects |
- Zuletzt bearbeitet von Jan_ am Fr, März 26, 2004 16:05, insgesamt 2-mal bearbeitet
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du diese Datei ausführst, passiert garnichts!
--> es ist eine Libary --> sie muss von anderen Programmen angesprochen werden. (bitte im gleichen odrner abspeichern) Gui.bb: Code: [AUSKLAPPEN] Type button ; legt ein arrey an, das Buttons speichert
Field x Field y Field Image Field Width Field Height Field Txt$ Field Clicked Field Clicktime End Type Function Button_Overlap(Colision_X,Colision_Y) ; Maustest, ob ein Button geklickt wird Local Rueckgabe For Knopf.Button = Each Button ; jeder Knopf If Colision_X > Knopf\X And Colision_X < Knopf\X+Knopf\width Then ; War die Maus im Button If Colision_Y > Knopf\Y And Colision_Y < Knopf\Y+Knopf\Height Then ; War die Maus im Button Rueckgabe=Knopf\image ; Rückgeben, welcher knopf gedrückt wurde Knopf\Clicktime = MilliSecs() ; Merken, wann geklickt wurde Knopf\Clicked = 1 ;Button wurde geklickt End If End If Next Return Rueckgabe ;Rückgeben des Buttons, der geklickt wurde End Function Function Draw_Buttons() ; Zeichnet die knöpfe Local Merk_Time Merk_time = MilliSecs() ; Millisecunden auffangen For Knopf.Button = Each Button ; jeder Knopf If Knopf\Clicked = 1 Then If (Merk_time-Knopf\Clicktime) > 200 Then Knopf\Clicked =0 ; läst den Button 0,2 sec gedrückt ausehen End If DrawBlock Knopf\Image,Knopf\X,Knopf\Y,Knopf\Clicked ; Zeichnet die Knöpfe Next End Function Function Create_Button(Txt$,X=0,Y=0,Width=100,Height=25) ; erstellt nen knopf Local Breite,Hoehe Breite=StringWidth (Txt$) ; Breite des Textes in Pixel Hoehe=StringHeight (Txt$) ; Höhe des Textes in Pixel If Breite > Width -10 Then ;Fallse der Text größer ist, als das Image werden soll, wird das image vergrößert Width= Breite + 10 End If If Hoehe > Height -4 Then Height= Hoehe + 4 End If Neuer_Knopf.button = New button ; in einen Type die Daten Speichern Neuer_Knopf\x=X Neuer_Knopf\Y=Y Neuer_Knopf\Width=Width Neuer_Knopf\Height=Height Neuer_Knopf\txt$=txt$ Neuer_Knopf\Clicked=0 Neuer_Knopf\Image=CreateImage(Width,Height,2) SetBuffer ImageBuffer(Neuer_Knopf\Image,0) ; Bild zum Drauf Zeichnen wählen Color 180,180,180 Rect 0,0,Width,Height ; Grauer Hintergrund Color 250,250,250 ;Helle Linien Line 0,0,0,Height Line 0,0,Width,0 Line 1,1,1,Height Line 1,1,Width,1 Color 100,100,100 ;Dunkle Linien Line Width-1,Height-1,1,Height-1 Line Width-1,Height-1,Width-1,1 Line Width-2,Height-2,2,Height-2 Line Width-2,Height-2,Width-2,2 Color 0,0,0 Text (Width/2),(Height/2),Txt$,1,1 ;Text SetBuffer ImageBuffer(Neuer_Knopf\Image,1) ; Bild, für einen gedrückten Knopf Color 180,180,180 Rect 0,0,Width,Height ; Grauer Hintergrund Color 100,100,100 ;Dunkle Linien Line 0,0,0,Height Line 0,0,Width,0 Color 250,250,250 ;Helle Linien Line Width-1,Height-1,1,Height-1 Line Width-1,Height-1,Width-1,1 Color 0,0,0 Text (Width/2),(Height/2),Txt$,1,1 ;Text Color 255,255,255 ; setzt wieder auf die Standart Farbe weiß! Return Neuer_Knopf\Image ; Rückgabe des Bildes, weil es ein einmaliger wert ist! End Function Function Del_Button(ImageNummer) ; Löscht einen Knopf For Knopf.Button = Each Button ; jeder Knopf If Knopf\Image = ImageNummer Then ; sucht den gewünschten knopf heraus FreeImage Imagenummer ; löscht das Bild Delete Knopf.Button ; Löscht den eintrag End If Next End Function Function Del_Gui() ; löscht alles For Knopf.Button = Each Button ; jeder Knopf FreeImage Knopf\Image ; Löscht die Bilder Delete Knopf.Button ; Löscht die Einträge Next End Function |
||
between angels and insects |
- Zuletzt bearbeitet von Jan_ am Fr, März 26, 2004 15:35, insgesamt einmal bearbeitet
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, wenn man nichts sieht, kannman nichts begreifen, darum,
bitte auch in den gleichen ordner ablegen! Du siehst, 2 Knöpfe zum anklicken! Aber nur sehr wenig quelltext, in dieser Datei, das macht, die Libary. GuiTest.bb Code: [AUSKLAPPEN] Graphics 640,480,32,2
Include "GUI.BB" ; Lädt unsere Libary btn_Start = Create_Button("Start Button",10,10) ;Button erstellen btn_Speichern = Create_Button("Speicher Button",10,100) ;2.Button erstellen SetBuffer BackBuffer() Repeat Cls ; hintergrund schwarz If MouseHit(1) Then Button_Overlap(MouseX(),MouseY()) ;beim mausklick testen, ob Knopf gedrückt wurde Draw_Buttons() ; Knöpfe Zeichnen Flip(True) Until KeyHit(1) Del_Gui() End |
||
between angels and insects |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, jetzt fügen wir die schöne Gui in den Editor ein!
Code: [AUSKLAPPEN] ;Rechtschreibe Fehler sind absichtlcih und dienen der Belustigung!
Include "GUI.bb" ; So, da laden wir unsere Libary ;Grafik initialisieren Graphics 800,600,32,2 ;Arreys und Globals Dim Map(31,31) Global G2W = GraphicsWidth()/2,G2H = GraphicsHeight()/2 ; Variablen, damit es nicht jedesmal neu berechnet werde muss Global Tileset, TileSetDatei$ Global Tile_Auswahl Global Max_Tile Global btn_Save,btn_Neu,btn_Laden;Gui Buttons ihre Handels ;Tasten Const Key_Plus = 78 Const Key_Minus = 74 Const Key_F5 = 63 Load_Map("temp.map");Lädt Map ;load medias Load_Medias() ;Gui Erstellen btn_Neu=Create_Button("Neues Level",10,10) btn_Save=Create_Button("Level Speichern",10,60) btn_Laden=Create_Button("Level Laden",10,110) ;hintergrund setzten SetBuffer BackBuffer() Local X,Y Local R,G,B,Rae=1,Gae=2,Bae=3 Repeat Keyboard() ;------------------------------------------------------ ;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 ; CLS wird nicht mehr benötigt, weil wir Tiles bentzten! Draw_tiles() ; Zeichnet die Tiles Mouse(MouseX(),MouseY()) ; Aufrufen, der Maus Zeichenfunction Draw_Buttons() ; Zeichnet die Knöpfe Text G2W,0,"RPG Editor - Entwicklungsstufe 5",1 Text G2W,15,"-Ein Tutorial von Jan Kuhnert-",1 Text G2W,30,"-Thema: Gui eingefügt-",1 Flip(True) Until KeyHit(1) End Function Keyboard() ;Auswahl der Tiles, vorübergehend mit + und - If KeyHit(Key_F5) Then Save_Map If KeyHit(Key_Plus) Then Tile_Auswahl=Tile_Auswahl+1 If KeyHit(Key_Minus) Then Tile_Auswahl=Tile_Auswahl-1 If Tile_Auswahl<0 Then Tile_Auswahl=Max_Tile-1 If Tile_Auswahl>Max_Tile-1 Then Tile_Auswahl=0 End Function Function Mouse(MMX,MMY) Local Tile_X,Tile_Y Tile_X = Int(MMX/32) Tile_Y = Int(MMY/32) DrawBlock tileset,Tile_X*32,Tile_Y*32,Tile_Auswahl ;Zeichnet den Block, an die Mausposition, befohr er gesetzt wurde Rect Tile_X*32-1,Tile_Y*32-1,34,34,0 ; 4Eck noch etwas vergrößern Rect Tile_X*32,Tile_Y*32,32,32,0 ; Zeichnet Das 4Eck, an der Maus-Position If MouseDown(1) Then Gui_Element=Button_Overlap(MMX,MMY) If Gui_Element <> 0 Then ; nur wenn ein Knopf gedrückt wurde reagieren If Gui_Element = btn_neu Then load_map() If Gui_Element = btn_save Then Save_map() If Gui_Element = btn_laden Then load_map("temp.map") Else Map(Tile_X,Tile_Y)=Tile_Auswahl ;ansonsten, Tile setzten End If 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 31 For Tile_Y = 0 To 31 Map(Tile_X,Tile_Y) = ReadByte(Read_Datei) Next Next Else MapName$ = "" EndIf End If If MapName$="" Then ; Falls keine Map vorhanden ist, neue erstellen For Tile_X = 0 To 31 For Tile_Y = 0 To 31 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 (Mapname$) WriteLine Write_datei, TileSetDatei$ ; Speichert Tile-set Name For Tile_X = 0 To 31 For Tile_Y = 0 To 31 WriteByte 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 31 For Tile_Y = 0 To 31 DrawBlock Tileset,Tile_X*32,Tile_Y*32,Map(Tile_X,Tile_Y) ;Zeichnet, die Tiles Next Next End Function Function Load_Medias() Max_Tile = 8 ; Wird Später noch aus der Datei gelesen Tileset = LoadAnimImage(TileSetDatei$,32, 32, 0, Max_Tile) ;Lädt das Tile-set End Function |
||
between angels and insects |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Für den nächste schritt, währe wichtig, zu wissen, wie Groß du die Tiles Haben willst!
8 (Nein, bitte nicht, ich bin alt, und kann nicht mehr so gut sehen ![]() 16 (RPG Maker 2000 Größe) 32 (Recht gute Größe) 64 (Naja, nur gut, wenn alle grafiken gerendert werden) 128 (viel zu groß aber natürlich machbar) Ich wollte nur noch mal betohnen, nach dem ich im ICQ angsprochen wurde, das ist alles von mir, nicht abgeschrieben, und Live erstellt! |
||
between angels and insects |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, ein paar Bugs raus, noch paar Buttons, Tile-Anzeige
Achtung, ich habe oben den Beitrag mit Gui.bb editiert, bitte, nochmal laden, da war ein kleiner Bug drin *g* Code: [AUSKLAPPEN] ;Rechtschreibe Fehler sind absichtlcih und dienen der Belustigung!
Include "GUI.bb" ; So, da laden wir unsere Libary ;Grafik initialisieren Graphics 800,600,24,2 ;Arreys und Globals Dim Map(31,31) Global G2W = GraphicsWidth()/2,G2H = GraphicsHeight()/2 ; Variablen, damit es nicht jedesmal neu berechnet werde muss Global Tileset, TileSetDatei$ Global Tile_Auswahl Global Max_Tile 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 Load_Map("temp.map");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! ;hintergrund setzten SetBuffer BackBuffer() Local X,Y Local R,G,B,Rae=1,Gae=2,Bae=3 Repeat Keyboard() ;------------------------------------------------------ ;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 ; CLS wird nicht mehr benötigt, weil wir Tiles bentzten! Draw_tiles() ; Zeichnet die Tiles Mouse(MouseX(),MouseY()) ; Aufrufen, der Maus Zeichenfunction Draw_Buttons() ; Zeichnet die Knöpfe Text G2W,0,"RPG Editor - Entwicklungsstufe 5",1 Text G2W,15,"-Ein Tutorial von Jan Kuhnert-",1 Text G2W,30,"-Thema: Gui eingefügt-",1 Flip(True) Until KeyHit(1) Save_map("Last_Change.tmp") ; notspeichern End Function Keyboard() ;Auswahl der Tiles, vorübergehend mit + und - If KeyHit(Key_F5) Then Save_Map ; If KeyHit(Key_Plus) Then Tile_Auswahl=Tile_Auswahl+1 ; If KeyHit(Key_Minus) Then Tile_Auswahl=Tile_Auswahl-1 End Function Function Mouse(MMX,MMY) Local Tile_X,Tile_Y Local Image_Wechsel Tile_X = Int(MMX/32) Tile_Y = Int(MMY/32) DrawBlock tileset,Tile_X*32,Tile_Y*32,Tile_Auswahl ;Zeichnet den Block, an die Mausposition, befohr er gesetzt wurde Rect Tile_X*32-1,Tile_Y*32-1,34,34,0 ; 4Eck noch etwas vergrößern Rect Tile_X*32,Tile_Y*32,32,32,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 Save_map() If Gui_Element = btn_laden Then load_map("temp.map") 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 SetBuffer ImageBuffer(btn_fenster); wir Zeichnen direckt in den Knopf das ausgewählte Tile herein! DrawBlock tileset,2,2,Tile_Auswahl SetBuffer BackBuffer() Image_Wechsel=0 End If End If End If If MouseDown(1) If Gui_Element + Maus_auf_Gui_angewandt=0 Then Map(Tile_X,Tile_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 31 For Tile_Y = 0 To 31 Map(Tile_X,Tile_Y) = ReadByte(Read_Datei) Next Next Else MapName$ = "" EndIf CloseFile Read_Datei End If If MapName$="" Then ; Falls keine Map vorhanden ist, neue erstellen For Tile_X = 0 To 31 For Tile_Y = 0 To 31 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 (Mapname$) WriteLine Write_datei, TileSetDatei$ ; Speichert Tile-set Name For Tile_X = 0 To 31 For Tile_Y = 0 To 31 WriteByte 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 31 For Tile_Y = 0 To 31 DrawBlock Tileset,Tile_X*32,Tile_Y*32,Map(Tile_X,Tile_Y) ;Zeichnet, die Tiles Next Next End Function Function Load_Medias() Max_Tile = 8 ; Wird Später noch aus der Datei gelesen Tileset = LoadAnimImage(TileSetDatei$,32, 32, 0, Max_Tile) ;Lädt das Tile-set End Function Mehr gibt es erst wieder Montag! |
||
between angels and insects |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group