Editor für Rollenspiel

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

fritzi-z

Betreff: Editor für Rollenspiel

BeitragDo, Aug 03, 2006 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 04, 2006 8:02
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile
War doesn't determine who's right,
war determines who's left...

Jan_

Ehemaliger Admin

BeitragFr, Aug 04, 2006 8:34
Antworten mit Zitat
Benutzer-Profile anzeigen
www.mapeditor.de.vu
between angels and insects
 

fritzi-z

BeitragFr, Aug 04, 2006 9:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 04, 2006 12:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 04, 2006 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
thx funktioniert super
 

fritzi-z

BeitragMo, Aug 07, 2006 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Aug 08, 2006 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Aug 09, 2006 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
danke echt das funktioneirt super ^^ jetzt nur noch ein paar graphiken suchen dann ist er fertig

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group