Editor für Rollenspiel
Übersicht

fritzi-zBetreff: Editor für Rollenspiel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
ich hab ein problem, ich wollte mal eine art Rollenspiel versuchen, und dachte mir da ist es einfacher wenn ich einen editor dafür mache. Ich dachte mir das so, das ich mit dem Befehl dim Felder erstell (in diesem fall 32*32 Pixel groß) und den feldern dann zahlenzuweisen kann die für verschiedene arten von Landschaften stehen, die ich dann später als txt datei abspeichern will. Das Problem ist folgendes, ich hab keine ahnung wie ich es anstellen soll, ohne seitenalng zu programmieren, das wenn ich auf ein quadrat klicke, es auch der richtigen dim-variabeln die Zahl zugewiesen werden kann, ich post euch mal den quelltext versuchts vielleicht selber mal aus. Naja ich hab halt echt kein plan. mfg fritzi-z AppTitle "Editor" Graphics 1024,768,32,2 nix=LoadImage("0.jpg") zaun=LoadImage("zaun.jpg") gebuesch=LoadImage("gebuesch.jpg") cursor=LoadImage("cursor.bmp") Dim feld(20,16) ;Hauptschleife Repeat Cls ;Hier werden die Felder gezeichnet For I=0 To 20 If feld(I,Spalte+1)=0 Then DrawImage nix,x*32,y*32 For J=0 To 16 If feld(Zeile+1,J)=0 Then DrawImage nix,x*32,y*32 y=y+1 Next y=0 x=x+1 Next x=0 ;Hier der rest DrawImage cursor,MouseX(),MouseY() DrawImage zaun,800,600 DrawImage gebuesch,800,632 If MouseHit(1)=1 Then If ImagesOverlap(cursor,MouseX(),MouseY(),zaun,800,600) Then wert=1 If ImagesOverlap(cursor,MouseX(),MouseY(),gebuesch,800,632) Then wert=2 EndIf Flip Until MouseHit(3) End |
||
Skulk |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie wäre es mit LoadAnimImage?
Lade einfach ein Tile-Set (also ein bild, in dem deine 32x32 Bilder hintereinander platziert sind) und lade sie mit LoadAnimImage als frames. wenn du das tile nummer 0 haben willst, machst du DrawImage(meinbild,x,y,0) willst du das bild nummer 8 haben DrawImage(meinbild,x,y,8) der vorteil: du musst in deinem dimfeld nur das jeweilige frame speichern und kannst es dann gleich so zeichnen: DrawImage(meinbild,x,y,meinFeld(x,y)) ich hoffe das war verständlich für dich ![]() |
||
War doesn't determine who's right,
war determines who's left... |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
www.mapeditor.de.vu | ||
between angels and insects |
fritzi-z |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jo thx, aber ich mein eher so, ich will den dimfeldern im editor halt andere zahlen per mausklick zuweisen, aber wenn ich da wahlos auf den feldern rumklicke weis der ja nicht welches dimfeld ich meine, das ist mein problem, und noch danke für den link aber in das programm muss ich mich erst noch reinarbeiten ^^
mfg fritzi-z |
||
![]() |
Der Wanderer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du dividierst einfach die Mauskoordinaten durch die Größe deiner Tiles, mit Integer Division. Evtl. vorher noch den offset abziehen, falls das Editor Feld nicht bei 0/0 anfängt. | ||
fritzi-z |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
thx funktioniert super | ||
fritzi-z |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sorry ich hab schon wieder ein problem, diesmal ist es so, ich hab jetzt schon das so gemacht, das wenn ich auf ein feld drücke das das den wert annimnt, der tile ist, tile ist am anfang automatsich 1, wenn man rechts draufdrückt wird das dim felt 0, ich geb euch am besten mal den quelltext, an dem hab ich nicht alles gemacht ich wollte ihn nur erweitern. Das Hauptproblem ist, ich hab unter "Der Welt" die erstellt wird noch ein zelt und verschiedene böden gemacht, die wenn man sie anklickt den Wert von tile ändern, aber tile wird dann immer 0 obwohl die Felder da verschiedene werte ham, und ich hab keine ahnung was ich da Falsch gemacht hab, ich entschuldige mich schonmal im vorraus für mein kontroliertes chaos ^^ aber ich hab echt keine Ahnung
Dim map(31,23) Dim menue(5,6) Graphics 1280,1024,32,2 Tileset = LoadAnimImage("tileset.bmp",32,32,0,30) Maus = LoadImage("maus.bmp") Global x,y,mx,my,mapx,mapy,tile = 1 SetBuffer BackBuffer() Data 0,1,2,3,4 Data 5,6,7,8,9 Data 10,11,12,13,14 Data 15,16,17,18,19 Data 20,21,22,23,24 Data 25,26,27,28,29 For e = 0 To 5 For w = 0 To 4 Read menue(w,e) Next Next ;Startet die Hauptschleife Repeat Cls If KeyHit(1) Then End ;Menue Zeichnen For w = 0 To 4 For e = 0 To 5 DrawImage Tileset,w*32,e*32+769,menue(w,e) Next Next ;Spielwelt zeichnen For x = 0 To 31 For y = 0 To 23 DrawImage Tileset,x*32,y*32,map(x,y) Next Next ;Variablen zuweisen und bauen mx = MouseX() my = MouseY() If MouseDown(1) Then If mx<1024 And my<768 Then scroll() map(mapx,mapy) = tile EndIf If my>768 Then scrollm() tile = menue(menuex,menuey) EndIf End If If MouseDown(2) Then scroll() map(mapx,mapy) = 0 End If ;Laden und Speichern If KeyHit(31) Then save() If KeyHit(38) Then load() DrawImage maus,mx,my Flip Forever ;Funktionen Function scrollm() menuex = (mx)/32 menuey = (my)/32-24 End Function Function scroll() mapx = (mx)/32 mapy = (my)/32 End Function Function save() karte$ = WriteFile("map1.map") For x = 0 To 31 For y = 0 To 23 WriteLine(karte$,tile) WriteInt(karte$,map(x,y)) Next Next CloseFile(karte$) End Function Function load() karte$ = ReadFile("map1.map") For x = 0 To 31 For y = 0 To 23 tile = ReadLine(karte$) map(x,y) = ReadInt(karte$) Next Next CloseFile(karte$) End Function |
||
Johannes |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hoffe, ich habe verstanden, was du meintest.
Deine Variablen menuex und menuey sind nicht global. Ihr Wert existiert also nur in der Funktion, nicht im Hauptprogramm, wo sie '0' sind. tile wird daher der Wert von menue(0,0) zugewiesen. Code: [AUSKLAPPEN] Dim map(31,23) Dim menue(5,6) Graphics 1280,1024,32,2 Tileset = LoadAnimImage("tileset.bmp",32,32,0,30) Maus = LoadImage("maus.bmp") Global x,y,mx,my,mapx,mapy,tile = 1,menuex,menuey SetBuffer BackBuffer() Data 0,1,2,3,4 Data 5,6,7,8,9 Data 10,11,12,13,14 Data 15,16,17,18,19 Data 20,21,22,23,24 Data 25,26,27,28,29 For e = 0 To 5 For w = 0 To 4 Read menue(w,e) Next Next ;Startet die Hauptschleife Repeat Cls If KeyHit(1) Then End ;Menue Zeichnen For w = 0 To 4 For e = 0 To 5 DrawImage Tileset,w*32,e*32+769,menue(w,e) Next Next ;Spielwelt zeichnen For x = 0 To 31 For y = 0 To 23 DrawImage Tileset,x*32,y*32,map(x,y) Next Next ;Variablen zuweisen und bauen mx = MouseX() my = MouseY() If MouseDown(1) Then If mx<1024 And my<768 Then scroll() map(mapx,mapy) = tile EndIf If my>768 Then scrollm() tile = menue(menuex,menuey) EndIf End If If MouseDown(2) Then scroll() map(mapx,mapy) = 0 End If ;Laden und Speichern If KeyHit(31) Then save() If KeyHit(38) Then load() DrawImage maus,mx,my Flip Forever ;Funktionen Function scrollm() menuex = (mx)/32 menuey = (my-769)/32 End Function Function scroll() mapx = (mx)/32 mapy = (my)/32 End Function Function save() karte$ = WriteFile("map1.map") For x = 0 To 31 For y = 0 To 23 WriteLine(karte$,tile) WriteInt(karte$,map(x,y)) Next Next CloseFile(karte$) End Function Function load() karte$ = ReadFile("map1.map") For x = 0 To 31 For y = 0 To 23 tile = ReadLine(karte$) map(x,y) = ReadInt(karte$) Next Next CloseFile(karte$) End Function |
||
fritzi-z |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke echt das funktioneirt super ^^ jetzt nur noch ein paar graphiken suchen dann ist er fertig | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group