frage zu eigenem "mapeditor"

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

obi79

Betreff: frage zu eigenem "mapeditor"

BeitragMi, Jul 12, 2006 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
hi!
hatte mich als völliger 'noob' an ein snake-tutorial begegen und daraus ist dann eigentlich der editor entstanden.

ich würde nun gerne eure meinung hören ob es in dieser art und weise überhaupt sinn macht wie ich es angestellt habe.

funktionsumfang derzeit noch etwas gering:
- mapgröße statisch
- nur 2 objekte einzufügen
- speichern und laden
- defaultmap

die map kann man dann entsprechend in ein 'spiel' laden um zu sehen ob es läuft... kollision wird erkannt...

screens:

editor:
user posted image

spiel:
user posted image

code:

editor:
Code: [AUSKLAPPEN]

DrawBlock back, (x+1)*16,(y+1)*16
End Select
If x < 37 Then
x=x+1
Else
x=0
y=y+1
EndIf
Next

;items zeichnen
x=0
y=0
For i = 1 To 1064
Select map(x,y)
Case 1
DrawImage water, (x+1)*16,(y+1)*16
Case 2
DrawImage beer, (x+1)*16,(y+1)*16
End Select
If x < 37 Then
x=x+1
Else
x=0
y=y+1
EndIf
Next

;map laden
If KeyDown(59) Then
Locate 650,300
dat_load$=Input$("Ladedatei: ")
datei = ReadFile("data/"+dat_load$)
For x = 0 To 37
For y = 0 To 27
map(x,y) = ReadByte(datei)
Next
Next
CloseFile datei
EndIf

;blankmap laden
If KeyDown(63) Then
datei = ReadFile("data/map_blank.txt")
For x = 0 To 37
For y = 0 To 27
map(x,y) = ReadByte(datei)
Next
Next
CloseFile datei
EndIf

;map speichern
If KeyDown(88) Then
Locate 650,300
dateiname$=Input$("Speichername: ")
datei = WriteFile("data/"+dateiname$+".map")
For x = 0 To 37
For y = 0 To 27
WriteByte datei, map(x, y)
Next
Next
Text 650,315,"Datei "+dateiname$+".map gespeichert."
Delay 2000
CloseFile datei
EndIf

;item wählen
If MouseHit(1) Then
koord_x = x_maus/16-1
koord_y = y_maus/16-1
map(koord_x,koord_y)=art
EndIf

If MouseHit(2) Then
koord_x = x_maus/16-1
koord_y = y_maus/16-1
map(koord_x,koord_y)=0
EndIf


;flip
Flip

Until KeyDown(1)
End


spiel:
Code: [AUSKLAPPEN]

Graphics 1024,768,16,2
SetBuffer BackBuffer()

Dim map(38,28)

Global back=LoadImage("data/back2.png")
Global beer=LoadImage("data/beer2.png")
Global water=LoadImage("data/water.png")
Global head=LoadImage("data/test.png")
Global barrel=LoadImage("data/barrel.png")
MaskImage beer,0,0,0
MaskImage barrel,255,255,255


Const Nord = 1
Const Ost = 2
Const Sued = 3
Const West = 4
Richtung = Ost



;Schablone für Teile
Type TTeil
   Field x
   Field y
End Type

;Fünf Körperteile zu beginn
For i=0 To 4
   Teil.TTeil = New TTeil
   Teil\x = head_x - 4 + i ;Damit die Schlange nach Westen gerichtet ist
   Teil\y = head_y
Next


dat_load$=Input$("Ladedatei: ")
datei = ReadFile("data/"+dat_load$)

For x = 0 To 37
For y = 0 To 27
map(x,y) = ReadByte(datei)
Next
Next
CloseFile datei

DrawImage head, 160,160

Repeat
Cls 

fps2 = fps2 + 1
If fpstimer + 1000 < MilliSecs() Then
fps = fps2:fps2 = 0:fpstimer = MilliSecs()
End If

Text 650,15,"FPS: "+fps

;spielumrandung zeichnen
Rect 15,15,610,450,0

;mapbackground zeichnen
x=0
y=0
For i = 1 To 1064
Select map(x,y)
Case 0
DrawBlock back, (x+1)*16,(y+1)*16
Case 1
DrawBlock back, (x+1)*16,(y+1)*16
Case 2
DrawBlock back, (x+1)*16,(y+1)*16
End Select
If x < 37 Then
x=x+1
Else
x=0
y=y+1
EndIf
Next


;mapitems zeichnen
x=0
y=0
For i = 1 To 1064
Select map(x,y)
Case 1
DrawImage water, x*16,y*16
Case 2
DrawImage beer, x*16,y*16
End Select
If x < 37 Then
x=x+1
Else
x=0
y=y+1
EndIf
Next

;bewegungen
;Norden?
If KeyHit(200) Then
   If Richtung <> Sued Then
      Richtung = Nord
   EndIf
EndIf

;Osten?
If KeyHit(205) Then
   If Richtung <> West Then
      Richtung = Ost
   EndIf
EndIf

;Süden?
If KeyHit(208) Then
   If Richtung <> Nord Then
      Richtung = Sued
   EndIf
EndIf

;Westen?
If KeyHit(203) Then
   If Richtung <> Ost
      Richtung = West
   EndIf
EndIf
   
   ;Zeit abfragen
If MilliSecs() - letztebewegung > 75 Then ;Je weniger, desto schneller!
   letztebewegung = MilliSecs()
   
   ;Bewegung durchführen….
   head_x = head_x - (Richtung=West) + (Richtung=Ost)
head_y = head_y - (Richtung=Nord) + (Richtung=Sued)


If head_x < 0 Then head_x = 39
If head_x > 39 Then head_x = 0
If head_y < 0 Then head_y = 29
If head_y > 29 Then head_y = 0
EndIf


pos_x=head_x
pos_y=head_y

If map(pos_x,pos_y) = 1
Text 400,600,"Kollison Wasser!"
EndIf
If map(pos_x,pos_y) = 2
Text 400,600,"Kollison Bier!"
EndIf


;Kopf zeichnen
DrawImage head, head_x*16,head_y*16

;flip
Flip 0

;programm beenden
Until KeyDown(1)
End


im code des spiels sind noch einige sachen die derzeit nicht gebraucht werden.

however... freu mich über eure meinungen zwecks optimierung etc. und ob der ansatz so überhaupt sinn macht.

und nicht zu böse sein Wink ...mein erstes posting! ^^

edit:
http://runescape.mdo-net.de/map_editor.rar

Hagbard

BeitragMi, Jul 12, 2006 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm...also denke schon, dass es praktisch ist, denn besonders du kannst damit bequem neue Levels erstellen...daher *daumen hoch* und nutz das ^^

StepTiger

BeitragMi, Jul 12, 2006 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
und wenn man das ganze noch erweitert, wird es noch besser ^^

Es ist sowieso so, dass man für Levels immer Hilfsprogramme nimmt, wenn auch selbst programmiert, um alles schnell verarbeiten zu können
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group