2D-Map Editor (PB)

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@ZeHa
Hi :)
Endlich ein ausführliches Feedback :D
Ehrlich gesagt frage ich mich dann auch direkt, wie Du das mit Life in Slavery machen willst... prüfst Du da jede Wand, jeden Abgrund, jede Leiter etc. einzeln?
Nein, zum Glück nicht :mrgreen:
In LiS benutze ich eine Array.
Dein Editor sollte eine richtige Map ausgeben (also das, was man später mal in einem Array sehen will), und nicht einfach nur eine Routine, die die Map anzeigt.
OK, werde ich dann mal versuchen, dies in einer Array auszugeben.
Im Übrigen hätte ich noch was die Bedienung angeht einen Tip: es wäre ganz gut, wenn Du Objekte direkt am Raster ausrichten würdest. Also daß wenn man sich in 'nem gewissen Abstand zu einer Linie befindet, die Grafik direkt ran"snappt".
Guck mal bitte in die Einstellungen, da kann man den Abstand beim Einrasten einstellen :wink:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

RSBasic hat geschrieben:Und wie kann ich, die ID, die ich mit zufälligerweise mit #PB_Any erstellt habe, ermitteln? :freak:
das ist der rückgabewert von LoadSprite bzw. CreateSprite,
benutzt man z.b. so:

Code: Alles auswählen

Dim TileSprite(9)
For n=0 To 9
  TileSprite(n) = LoadSprite(#PB_Any, "Tile"+Str(n)+".bmp")
Next

For n=0 To 9
  DisplaySprite( TileSprite(n), 50*n, 50 )
Next
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag von THEEX »

RSBasic hat Folgendes geschrieben:
Und wie kann ich, die ID, die ich mit zufälligerweise mit #PB_Any erstellt habe, ermitteln? Freak

das ist der rückgabewert von LoadSprite bzw. CreateSprite,
benutzt man z.b. so:
Um eventuell einer Verwirrung vorzubeugen, was Kearu schreibt ist zwar nicht falsch, aber dabei wird nicht die ID ermittelt, sondern die Spritenummer. Die ID kann man so ermitteln:

Code: Alles auswählen

Dim TileSpriteID(9)
For n = 0 To 9
  TileSpriteID(n) = SpriteID(LoadSprite(#PB_Any, "Tile"+Str(n)+".bmp"))
Next
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Danke an Euch
Ich werd mein bestes geben :allright:
Aber dazu brauch ich erstmal Zeit :mrgreen:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Na? Also Aufgaben: Grafik laden >> JPEG ausgewählt
Aber dann bleibt der Ladenknopf grau.

Bevor ich verstehe, was ich da alles noch machen muss, um einfach ein Jpeg reinzuladen, hab ich mir meinen eigenen Editor geschrieben :mrgreen:

:allright:

http://www.purebasic.fr/german/viewtopi ... ht=folkisa

:freak:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Sry dass ich UseJPEGImageDecoder() vergessen habe. :|
In der nächsten Version ist alles gefixt :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

CSprengel hat geschrieben:... aber dabei wird nicht die ID ermittelt, sondern die Spritenummer.
meines wissens ist die "Nummer" für mit #PB_Any erstellte sprites die ID bzw. das Handle.

das ist auch der grund, warum literale eingaben von Spritenummern über 10K angemeckert werden:
hohe spritenummern = IDs = Handles = mit ANY erzeugt... ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag von THEEX »

meines wissens ist die "Nummer" für mit #PB_Any erstellte sprites die ID bzw. das Handle.
Stimmt nicht, wobei ich das auch mal dachte, aber meine Erfahrung hat mich anderes gelehrt.
Ich arbeite an meinem Projekt zur Zeit viel mit ImageGadget's, wenn man nun im Gadget das Bild ändern möchte, kann man ja bekanntlich dieses mit SetGadgetState() ändern. Da ich dabei auch die Images mit #PB_Any reinlade, mußte ich feststellen, daß die dabei ermittelte Nummer nicht das gewünschte Ergebnis erziehlte. Erst wenn ich diese ermittelte Nummer mit ImageID() verwende, erhalte ich die ID = Handle und dann funktioniert es auch. #PB_Any ist nichts anderes, als eine von PB erstellte Konstante, ich meine, mich auch noch dunkel daran erinnern zu können, daß es bei der Einführung von #PB_Any so gedacht war.
Jetzt fällt mir leider spontan kein Grund ein, eine SpriteID zu nutzen, sonst hätte ich das in einem kleinem Beispiel dargestellt. Allerdings kann ich dazu sagen, daß DisplaySprite() ja die Spritenummer benötigt und keine ID, würde man in Verbindung mit #PB_Any das Handle ermitteln, würde DisplaySprite() das Sprite nicht darstellen.
Da fällt mir gerade ein, wenn ich ein Sprite mit einer Nummer bzw. Konstante reinlade, dann ermittle ich die ID, sowas kann natürlich zu Verwechlungen führen und das war wohl auch der Grund, warum ich selbst Deiner Meinung war, bevor ich meine Erfahrungen mit den Images machte.

Edit:
Ich hab hier noch ein simples Beispiel, welches es zumindest mit den Images beweißt.

Code: Alles auswählen

Nr = CreateImage(#PB_Any, 100, 100)
Debug Nr
ID = ImageID(Nr)
Debug ID
Test = ImageID(1)
Debug Test
Wenn man die vorletzte Zeile nicht rauskommentiert, kommt dementsprechend der Fehler, daß dieses Image nicht initialisiert ist, anders aber das Image, was mit #PB_Any erstellt wurde.


Edit2:

Ohje, das ist 3 Jahre her, als es eingeführt wurde....
12. April 2004 : Version 3.90

- Hinzugefügt: #PB_Any Support (dynamische Numerierung) für DataBase, File, Font, FileSystem, Gadget, Image, Library,
Module, Movie, Palette, Sprite, Sprite3D, SysTray, ToolBar, StatusBar und Window
Edit3:
Sorry, es lies mir einfach keine Ruhe, hier nun der entgültige beweiss.. ;-)
Handles und Nummern

Nummern

Alle erstellten Objekte werden durch eine beliebige Nummer (welche nicht das "Handle" des Objekts ist, siehe hierzu weiter unten) angesprochen. In dieser Anleitung werden diese Bezeichner (Nummern) durch die Notation #Nummer gekennzeichnet. (So hat zum Beispiel jedes erstellte Gadget eine #Gadget Nummer.)

Die Zahlen, die man Objekten zuweist, müssen keine Konstanten sein, sie müssen aber für jedes Objekt einmalig sein. (Ein Bild kann z.B. aber die gleiche Zahl wie ein Gadget haben, weil dies ja unterschiedliche Dinge sind.) Diese Nummern werden benötigt, um die Objekte später im Programm anzusprechen.

Zum Beispiel geben folgende Event-Funktionen diese ID's zurück:
EventGadget()
EventMenu()
EventWindow()

Handles

Alle Objekte bekommen auch vom System eine einmalige Nummer zugewiesen. Diese Nummern nennt man Handles.

Einige PureBasic Funktionen benötigen eben dieses Handle, und nicht die Nummer von PureBasic. In dieser Anleitung wird dies als eine ID bezeichnet.
Beispiel:

ImageGadget(#Gadget, x, y, Breite, Höhe, ImageID [, Flags])
; #Gadget ist hier die Nummer, die Sie dem Gadget zuweisen möchten.
; ImageID muss hier der Handle zu einem Bild sein.

Um das Handle von einem Objekt zu ermitteln, gibt es spezielle Funktionen wie z.B.:
FontID()
GadgetID()
ImageID()
MemoryID()
ThreadID()
WindowID()

Meistens geben die Funktionen, die solche Objekte erstellen, auch dieses Handle als Ergebnis zurück, wenn das Objekt erfolgreich erstellt wurde. Dies ist nur dann der Fall, wenn #PB_Any beim Erstellen des Objekts nicht verwendet wurde. Wenn #PB_Any verwendet wird, dann geben diese Befehle die von PB zugewiesenen Objekt-Nummern zurück, und nicht das Handle.
Anfänger
Beiträge: 43
Registriert: 15.07.2006 21:56

Nur Bmp?

Beitrag von Anfänger »

Also ich habs mal ausprobiert, u. ich konnte leider nur Bitmap u. kein .gif u. .jpg laden!

ansonsten ist es ganz gut! :allright:
PureBasic is the BEST!
Leider Version 3.3
Danke für alle ordentlichen Antworten!^^
Antworten