Page 1 sur 1

Gros caracteres pixelisés

Publié : ven. 08/oct./2010 8:13
par drfloyd
Bon,

Mon jeu avance (un jeu a tres gros pixels rétro)

j'en suis au rajout du score et des textes

j'utilise DRAWTEXT mais bon ca genere du texte fin pas en rccord avec les graphismes, moi je veux du gros pixel (façon score dans PONG)

Il n'y a pas la possibilité de faire du gros caractere tres moche ?

Merci d'avance

Re: Gros caracteres pixelisés

Publié : ven. 08/oct./2010 10:46
par flaith
Tu peux trouver pas mal de jeux avec ce type de caractères (utilisation d'une fonte image)
un (petit) exemple ici : http://www.purebasic.fr/french/viewtopic.php?f=2&t=9974
Il y en a d'autres (Huitbit, G-Rom, Dobro, et j'en oublie ... plein plein)
Donc utilise un DisplaySprite à la place :mrgreen:

Re: Gros caracteres pixelisés

Publié : sam. 09/oct./2010 9:43
par drfloyd
Bon j'abandonne mon idée de tres gros caracteres façon PONG, je n'y arrive pas, je suis trop débutant....

Je vais utiliser DRAWTEXT avec une police enorme tout simplement...

Par contre la aussi probleme, comment on grossit la taille des caracteres ? (par compris dans l'aide)

Re: Gros caracteres pixelisés

Publié : sam. 09/oct./2010 11:34
par G-Rom
Le principe est pourtant relativement simple , si tu veut faire du jeu , c'est une technique que tu te dois de maitrisé.
Je vais donc tenté de t'aider.

Flaith t'a parlé de Fonte bitmap , il sagit en fait de fichier image contenant les formes des lettres , tu trouvera un package intéressant ICI

on va prendre cette image en exemple :

Image

Évidement , il manque des lettres... , pour ton cas , il est important que la fonte a une largeur fixe , sinon ton code va être plus complexe.

Tout d'abord il faut que tu charges cette image en sprite via LoadSprite() , l'image plus haut va être la référence :
REFERENCE = LoadSprite(#pb_any,"Image.png")
On part du principe que notre image de référence fait 128x128 , chaque lettre fait donc 64px de coté.
PureBasic intègre depuis peu les MAP , ca va être utile pour nous.
ex :
NewMap MaPolice.i()
en conjonction avec la fonction clipsprite :
MaPolice("A") = ClipSprite(REFERENCE,0,0,64,64)
MaPolice("D") = ClipSprite(REFERENCE,64,64,64,64)
MaPolice("C") = ClipSprite(REFERENCE,0,64,64,64)
etc...
ClipSprite(REFERENCE <-- Sprite sur lequel on découpe
,0,0, <-- Position du début du découpage
64,64) <-- Taille du découpage


MaPolice("A") Contient donc l'identifiant du sprite découpé qui forme la lettre A , etc...

L'affichage d'un message en 100,100:
Texte$ = "DBCAaA" ; Y a un piège ;)
PositionX = 100
PositionY = 100

for i = 1 to len(Text$)
Lettre$ = ucase(mid(Text$,i,1)) ; on extrait la lettre via mid() & on convertit en grand caractère via ucase() pour ne pas avoir de bug avec la lettre 'a' ( pas pareil que 'A' )
DisplaySprite( MaPolice( Lettre$ ) , PositionX, PositionY ) ; on affiche grace à notre MAP !!
PositionX+64 ; on décale les caractères de 64px
next
Simple non ?

Re: Gros caracteres pixelisés

Publié : dim. 10/oct./2010 18:14
par drfloyd
ok bien compris, merci

Sinon par contre, comment grossir la taille de la police lorsqu'on affiche un simple drawtext (100,100,"HELLO WORLD") ?

Re: Gros caracteres pixelisés

Publié : dim. 10/oct./2010 22:14
par G-Rom
LoadFont() ??

Sinon , c'est pas clipsprite , mais grabsprite , et il faut que tu affiche la référence avant de grabé.