Map editor probleme

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

darki

Betreff: Map editor probleme

BeitragFr, Nov 10, 2006 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich progge schon etwas länger bin aber neu in diesem Forum. Ich bin dabei ein Mapeditor zu proggen, nun habe ich aber noch ein paar fragen.

Arrow Wie kann ich transparens setzen habe es schon mit maskimage versucht(die bilder lade ich folgendermaßen:Code: [AUSKLAPPEN]
 For x=1 To 11
grafik(x)=LoadImage("tile"+Str$(x)+".bmp")


Arrow Wie kann ich animationen in einen editor tuen
Arrow Kann man größere teile benutzen als die tiles sind beispiels weise eine char.
Arrow Wie kann ich overlapping machen

Das waren ale fragen, wäre nett wenn ihr mir helfen könnt, danke.

darki

Cardonic

BeitragFr, Nov 10, 2006 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstamls willkommen hier im Forum.
Zu deinen Fragen:

1. Wie du schon richtig vermutet hast: MaskImage (Halbtransparenz wird von BlitzBasic nicht unterstützt)

2. Animationen lassen sich am besten mit LoadAnimImage realisieren.

Bei 3/4 verstehe ich nicht ganz, was du meinst.

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.
 

joni8a

BeitragFr, Nov 10, 2006 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Würde mich auch interresieren
 

darki

BeitragFr, Nov 10, 2006 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, danke schon mal für die antworten. Bei 3 meine ich: ein tile ist bei mir 30*30 groß aber eine figur ist ja größer wie kann ich das regeln. Bei 4 meine ich: wenn ich ein schild habe möchte ich es auf stein und auch gras setzen daszu muss ich es transparent machen und auf steine setzen können ohne immer den hintergrund zu ändern

Cardonic

BeitragFr, Nov 10, 2006 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Also die Figur gehört sicherlich nicht in die Tilemap hinein; ich würde die Figur eher als einzelnes Objekt ansehen und einfach die Startposition (x und y koordinaten) speichern.
Falls du dieses Schild halbtransparent haben möchtest, dann musst du dir das selbst programmieren (im Codearchiv wirst du bestimmt etwas finden).

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Hubsi

BeitragFr, Nov 10, 2006 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Layer sind das was du wohl suchst. In der Praxis sieht das meist so aus:

Code: [AUSKLAPPEN]
Dim map(x_groesse,y_groesse,anzahl_layer)

; Tileset laden, etc.

For layer=0 To anzahl_layer
  For y=startpunkt_y To startpunkt_y+sichtbare_hoehe
    For x=startpunkt_x To startpunkt_x+sichtbare_breite
      DrawImage tile(map(x,y,layer))
    Next
  Next
Next


Es werden also 2 oder mehr Ebenen übereinander gelegt und so lassen sich besondere Objekte (die der Spieler vielleicht auch aufsammeln oder bewegen kann) überall plazieren ohne sich um den Untergrund kümmern zu müssen Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

darki

BeitragSa, Nov 11, 2006 12:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo danke für die antwort, aber ich verstehe das noch nicht ganz mit den layer kanst du mir vielleicht ein beispiel proggen, das wäre nett

BladeRunner

Moderator

BeitragSa, Nov 11, 2006 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem Schild ist mit maskimage kein Problem:
Dein Untergrund wird zuerst gezeichnet.
Danach dann das maskierte Schilderbild. Dieses hat eine Hintergrundfarbe (normalerweise nimmt man pink (255,0,255)) welche mit Maskimage transparent gemacht wird, d.h. überall wo Pink ist sieht man den Hintergrund durch.

Das "Layern" ist also denkbar einfach: erst unterste Schicht zeichnen lassen, dann die Gegenstände darauf.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

darki

BeitragSa, Nov 11, 2006 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Muss ich denn die ebene über knopfdruck erhöhern?

BladeRunner

Moderator

BeitragSa, Nov 11, 2006 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie meinen?
Wie Du das bei Deinem Editor zum setzen löst sei Dir freigestellt.
In der Speicherung sind es (s.o. bei Hubsie) eben in einem 3Dimensionalen Array gespeicherte Daten die nacheinander ausgelesen und gezeichnet werden.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

darki

BeitragSa, Nov 11, 2006 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann mir folgende passage nicht erklären:
For layer=0 To anzahl_layer
For y=startpunkt_y To startpunkt_y+sichtbare_hoehe
For x=startpunkt_x To startpunkt_x+sichtbare_breite
DrawImage tile(map(x,y,layer))
Next
Next
Next

Ich weiss einfach nicht was er mit startpunkt y meint und sichtbare höhe. Ins nächste layer kann ich ja gehen wenn ich einach sage. If keyhit(3) then layer+1. Geht doch.

Hubsi

BeitragSa, Nov 11, 2006 22:19
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image

Das grün soll den ersten Layer darstellen welcher als erstes auf den Schirm gepinselt wird, quasi der Boden. Im nächsten Durchlauf der layer-Schleife werden an den entsprechenden Stellen die Felsen, Berge, whatever einfach drübergepinselt (das graue im Bild). Wenn also jetzt beispielsweise ein Schlüssel auf dem Boden rumliegt ist an den gemaskten Bereichen immer der entsprechende Untergrund sichtbar.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

darki

BeitragSo, Nov 12, 2006 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich habe ein paar sachen probiert es funktioniert aber nicht kannst du mir vielleicht den code schiecken mit dem du das beispiel gemacht hast.

darki

BladeRunner

Moderator

BeitragSo, Nov 12, 2006 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst uns deinen Code posten und wir schauen danach. Aber wir werden Dir nicht dein Programm schreiben.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Hubsi

BeitragSo, Nov 12, 2006 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Code ist Paint.exe Very Happy Das hier ist der Code von einem Mapeditor der mit Layern umkann:
http://chat-blitz.de/index.php...file_id=41

Das Ding ist nicht gerade komfortabel und manche Tastenkombis muss man sich erst im Code zusammensuchen, aber für die Öffentlichkeit war das Teil auch nicht gedacht. Für Dich interessant dürfte das laden der Tiles sein (ziemlich am Anfang des Codes) und die schon besagten 3 Schleifen nähe Beginn Hauptschleife.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

darki

BeitragSo, Nov 12, 2006 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke werde mir das heute noch mal genauer angucken. Aber ich würde das ding auch mal in aktion sehen, aber dann sagt er mir das er ein include file nich öffnen kann. Was kann ich dagegen tuen?
 

darki

BeitragSo, Nov 12, 2006 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
SO habe nun etwas geproggt. Aber er sagt"array index out of bound". Wieso? Vielleicht findet ihr ja den fehler und auch noch so manche andere
Code: [AUSKLAPPEN]

raphics 640,480
SetBuffer BackBuffer()
Dim map(10,10,layer)
Dim grafik(2)
For x= 0 To 1
grafik(x)=LoadImage("tile"+Str$(x)+".bmp")
Next
c=1
layerm=0
If KeyHit(2) Then layer=layer+1

For layer=0 To 1
For y=9 To 9+layerm
For x=9 To 9+layerm
Next
Next
For y=0 To 9
For x=0 To 9
map(x,y,layerm)=1
Next
Next
If MouseHit(2)Then
c=c+1
If c=2 Then c=0
End If
If MouseX()<10*30 Then mx=MouseX()/30
If MouseY()<10*30 Then my=MouseY()/30
If MouseDown(1) Then
map(mx,my,layerm)=c
End If
For y=0 To 9
For x=0 To 9
DrawBlock grafik(map(x,y,layer)),x*30,y*30
Next
Next
DrawBlock grafik(c),mx*30,my*30

Color 255,0,0
Rect mx*30,my*30,30,30,0
Next[quote][/quote]

Hubsi

BeitragSo, Nov 12, 2006 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Dim map(10,10,layer) -> layer ist 0, wird also auch damit dimensioniert.

For layer=0 To 1 -> Hier wird versucht aber 2 Layer zu durchlaufen.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

darki

BeitragSo, Nov 12, 2006 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Der zeigt mir immer noch den fehler mit den array an.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group