Font Frage

Previous topic - Next topic

HeikoJ

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 ?

WPShadow

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... :(
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

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

HeikoJ

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

Kitty Hello

Lad' mal den Font hoch. Er muss höher als Breit sein, OK?

HeikoJ

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

HeikoJ

Hallo Gernot,

die Charakter sind 32x32 und die BMP ist 512x512 Pixel groß.
Wie soll ich denn Font den hochladen ?

Gruß Heiko

HeikoJ

Hallo Gernot,

die Datei befindet sich :

http://www.zshare.net/image/357207887dc9a1/

Gruß Heiko

Kitty Hello

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.

HeikoJ

Hallo Gernot,

wird das Problem mal behoben werden ?

Wenn nicht, sollte man in der Hilfe einen Hinweis dazu aufnehmen.

Gruß Heiko

Schranz0r

Code (glbasic) Select
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?
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

HeikoJ

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

Schranz0r

meine Meinung:

Viel zu umständlich!
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kitty Hello

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

HeikoJ

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