Hallo,
ich habe ein Problem mit Font.
Ich schreibe gerade ein Spiel.
Dazu habe ich mir einen 128-Font ( 32x32 ) erstellt und die Buchstaben durch Bilder
ersetzt.
Nun habe ich gesehen, das es auch 256 - Font gibt. Da schon abzusehen ist das die 128
Zeichen nicht ausreichen habe ich einen neuen Font mit 256 Zeichen erstellt, auch 32x32.
Dann habe ich denn alten in denn neuen Font kopiert.
Nun wird aber bei der Ausgabe nicht auf die ersten 128 Zeichen zurückgegriffen sondern
die Zeichen ab 129 angezeigt.
Habe ich was Übersehen ? Gibt es noch einen Trick ??
Danke und Gruß
Heiko.
PS: wie kann ich Bilder in meinen Beitrag einbinden die sich lokal auf meinem Rechner
befinden ?
Bilder lokal gar nicht! Aber du kannst sie bei http://www.imageshack.us/ hochladen und den link reinstellen.
Wegen den Fonts weiß ich leider auch nicht weiter... :(
Frage: Warum willst Du 256 bilder als Font machen? Ich mein - Willst Du eine Tile-Engine machen? Dann niimm bitte Polyvector:
http://www.glbasic.com/forum/viewtopic.php?id=244
Hallo Gernot,
vielleicht ist PolyVektor besser, muß ich erstmal schecken.
Die Frage bleibt aber trotzdem. Warum werden nicht die richtigen "Zeichen" angezeigt ?
Auch wenn ich den Orgibal Font mit 256 Zeichen nehme, werden falsche Zeichen angezeigt.
Wenn ich Umlaute darstellen will, brauche ich doch auch den 256-Font?!?!
Gruß Heiko
Lad' mal den Font hoch. Er muss höher als Breit sein, OK?
Hallo,
also jetzt mal ganz normal :
LOADFONT "Constantia_32X32X256.bmp",1
SETFONT 1
PRINT "Hallo äöü",10,10
SHOWSCREEN
MOUSEWAIT
Das Programm gibt nur Sch* aus.
Warum ??
Den Font habe ich ordentlich mit Zeichensatz-Creator erstellt, aber eben mit 256 Zeichen .
Gruß Heiko
Hallo Gernot,
die Charakter sind 32x32 und die BMP ist 512x512 Pixel groß.
Wie soll ich denn Font den hochladen ?
Gruß Heiko
Hallo Gernot,
die Datei befindet sich :
http://www.zshare.net/image/357207887dc9a1/
Gruß Heiko
Ha! 512x512 - Da ist die Höhe nicht größer als die Breite. Dann meint er das ist eine alte Datei (128 chars).
Nimm den PSprite Befehl, den ich gemacht habe im Link oben.
Hallo Gernot,
wird das Problem mal behoben werden ?
Wenn nicht, sollte man in der Hilfe einen Hinweis dazu aufnehmen.
Gruß Heiko
FUNCTION Loadsprites: name$, Tilesize, Startsprite
LOCAL XX, YY, TSize, AnzX, AnzY, num // Locale Vars setzen
LOADSPRITE name$, 0 //Tilebild auf 0 laden
TSize = Tilesize //Tilesize setzen
GETSPRITESIZE 0, XX, YY //Breite und höhe des Bildes
AnzX = XX / TSize // Tiles per X
AnzY = YY / TSize // Tiles per Y
INC PictureCount, AnzX*AnzY // Bilder zählen!
SPRITE 0,0,0 // Sprite zeichen
num = Startsprite // Bildnummer auf Startsprite setzen
FOR x = 0 TO AnzX -1
FOR y = 0 TO AnzY -1
GRABSPRITE num, x*TSize, y*TSize, TSize, TSize // Sprite Graben
INC num, 1 //Nummer erhöhen
NEXT
NEXT
num = 0 // Bildnummer auf 0 setzen für nächsten durchlaub
BLACKSCREEN // Bildschirm löschen
GRABSPRITE 0,0,0,0,0
ENDFUNCTION
sowas in der art?
Hallo Schranz0r,
ich weiß wie man das mit Sprite macht.
Mir gefällt bloß die Möglichkeit mit "Print" zu arbeiten statt mit Sprite.
Das geht auch sehr gut und einfach, eben nur nicht mit Fonts die 256 Charakter enthält und
quadratisch sind/ist.
Gruß Heiko
meine Meinung:
Viel zu umständlich!
Schließe mich Schranz0r an. Polyvector ist das schnellste und beste.
Um kompatibel mit alten Fonts zu bleiben, habe ich die 128er Fonts breiter als hoch und umgekehrt gemacht. Oder so... o_O
Hallo Gernot,
nach Deiner Methode muß ich folgendes schreiben :
a$ = "Hello PSprite"
FOR i=0 TO LEN(a$)-1
// See mx, my ->it's the sprite's x/y pos
// I simply add the i'th width of a character for each one
PSprite(0, ASC(MID$(a$, i, 1)), 17,22, i*17+mx, my)
NEXT
SHOWSCREEN
nach meiner Methode mache ich nur ein Print "...".
Ist da der Print-Befehl nicht schneller ???
- zur Tile MAP:
Ich habe z.B. eine MAP mit 100*70 Tile. Also definiere ich mir ein Array zb:
MAP[0] = "aaabbbccc..."
MAP[1] = "dddeeefff...."
In meinem geladenen Font habe ich die Buchstaben durch Bilder ersetzt. Nun reicht
ein einfacher Print-Befehl um meine MAP-zu zeichnen.
Was ist daran umständlich ?
Gruß Heiko
Irgs! Für Texte natürlich PRINT. Hast Du den Font mit dem Fontmaker gemacht? Der achtet eigentlich darauf, dass das Verhältnis passt... Wenn ja, bitte nochmal machen und dabei versuchen eben die Höhe>Breite zu bekommen.
PSprite ist für Tilemaps. Ganz klar. map[0] = "abc" geht nicht, das muss map
$- sein. Aber dann musst Du ja intern für Kollisionen usw. immer mit MID$ arbeiten. Das ist doch langsam. Les' die Daten doch so ein, und mach dann ein Feld: DIM map[mapx][mapy], und lies die PSprite-id's in dieses Feld (nur 1x beim Laden machen). Dan geht's Bildaufbauen und Abfragen RuckiZucki...