Vous n'êtes pas identifié.
Pages: 1
jai deja mis un post mé sans succé ... qqun peux til me dire komment faire une police ??? merci a +
Hors ligne
c'est pas compliqué . KTR avait pourtant maché tout le boulot.
Je vais t'expliquer comment fait KTR. En fait chaque lettre est une petite image (sprite mais je crois que tu maitrise cela).
voila un exemple pour afficher un truc:
#include <stdio.h>
#include <dos.h>
#include <bios.h>
void inv_pixel(unsigned short int x, unsigned short int y)
{
asm push ax;
asm push cx;
asm push dx;
asm mov cx,x;
asm mov dx,y;
asm mov ax,0x1A20;
asm mov es,ax;
asm mov si,0x003f;
asm sub si,dx;
asm sub cx,0x80;
asm not cx;
asm push cx;
asm and cl,0xf8;
asm shl cx,0x03;
asm add si,cx;
asm pop cx;
asm and cl,0x07;
asm mov al,es:[si];
asm ror al,cl;
asm not al;
asm and al,1;
asm mov ah,0xfe;
asm rol ah,cl;
asm and es:[si],ah;
asm mov ah,al;
asm rol ah,cl;
asm or es:[si],ah;
asm pop dx;
asm pop cx;
asm pop ax;
}
unsigned char ktrascii[59][5][3] =
{
/*tous les sprites de tous les caracteres*/
0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0, //_ -> 32 (00)
0,1,0, 0,1,0, 0,1,0, 0,0,0, 0,1,0, //! -> 33 (01)
1,0,1, 1,0,1, 0,0,0, 0,0,0, 0,0,0, //" -> 34 (02)
1,0,1, 1,1,1, 1,0,1, 1,1,1, 1,0,1, //# -> 35 (03)
1,1,1, 1,1,0, 1,1,1, 0,1,1, 1,1,1, //$ -> 36 (04)
1,0,0, 0,0,1, 0,1,0, 1,0,0, 0,0,1, //% -> 37 (05)
0,1,0, 1,0,1, 0,1,1, 1,0,1, 0,1,1, //& -> 38 (06)
1,1,0, 1,1,0, 0,0,0, 0,0,0, 0,0,0, //ø -> 39 (07)
0,0,1, 0,1,0, 0,1,0, 0,1,0, 0,0,1, //( -> 40 (0
1,0,0, 0,1,0, 0,1,0, 0,1,0, 1,0,0, //) -> 41 (09)
1,1,1, 1,1,1, 1,1,1, 1,1,1, 1,1,1, //* -> 42 (10)
0,0,0, 0,1,0, 1,1,1, 0,1,0, 0,0,0, //+ -> 43 (11)
0,0,0, 0,0,0, 0,0,0, 0,1,0, 1,0,0, //, -> 44 (12)
0,0,0, 0,0,0, 1,1,1, 0,0,0, 0,0,0, //- -> 45 (13)
0,0,0, 0,0,0, 0,0,0, 0,0,0, 1,0,0, //. -> 46 (14)
0,0,1, 0,1,0, 0,1,0, 0,1,0, 1,0,0, /// -> 47 (15)
1,1,1, 1,0,1, 1,0,1, 1,0,1, 1,1,1, //0 -> 48 (16)
0,1,0, 1,1,0, 0,1,0, 0,1,0, 1,1,1, //1 -> 49 (17)
1,1,1, 0,0,1, 1,1,1, 1,0,0, 1,1,1, //2 -> 50 (1
1,1,1, 0,0,1, 1,1,1, 0,0,1, 1,1,1, //3 -> 51 (19)
1,0,1, 1,0,1, 1,1,1, 0,0,1, 0,0,1, //4 -> 52 (20)
1,1,1, 1,0,0, 1,1,1, 0,0,1, 1,1,1, //5 -> 53 (21)
1,1,1, 1,0,0, 1,1,1, 1,0,1, 1,1,1, //6 -> 54 (22)
1,1,1, 1,0,1, 0,0,1, 0,0,1, 0,0,1, //7 -> 55 (23)
1,1,1, 1,0,1, 1,1,1, 1,0,1, 1,1,1, //8 -> 56 (24)
1,1,1, 1,0,1, 1,1,1, 0,0,1, 1,1,1, //9 -> 57 (25)
0,0,0, 0,1,0, 0,0,0, 0,1,0, 0,0,0, //: -> 58 (26)
0,0,0, 0,1,0, 0,0,0, 0,1,0, 1,0,0, //; -> 59 (27)
0,0,1, 0,1,1, 1,1,1, 0,1,1, 0,0,1, //< -> 60 (2
0,0,0, 1,1,1, 0,0,0, 1,1,1, 0,0,0, //= -> 61 (29)
1,0,0, 1,1,0, 1,1,1, 1,1,0, 1,0,0, //> -> 62 (30)
0,1,0, 1,0,1, 0,0,1, 0,1,0, 0,1,0, //? -> 63 (31)
1,1,1, 0,0,1, 1,1,1, 1,0,1, 1,1,1, //@ -> 64 (32)
0,1,0, 1,0,1, 1,0,1, 1,1,1, 1,0,1, //A -> 65 (33)
1,1,0, 1,0,1, 1,1,0, 1,0,1, 1,1,0, //B -> 66 (34)
0,1,1, 1,0,0, 1,0,0, 1,0,0, 0,1,1, //C -> 67 (35)
1,1,0, 1,0,1, 1,0,1, 1,0,1, 1,1,0, //D -> 68 (36)
1,1,1, 1,0,0, 1,1,0, 1,0,0, 1,1,1, //E -> 69 (37)
1,1,1, 1,0,0, 1,1,0, 1,0,0, 1,0,0, //F -> 70 (3
1,1,1, 1,0,0, 1,1,1, 1,0,1, 1,1,1, //G -> 71 (39)
1,0,1, 1,0,1, 1,1,1, 1,0,1, 1,0,1, //H -> 72 (40)
1,1,1, 0,1,0, 0,1,0, 0,1,0, 1,1,1, //I -> 73 (41)
1,1,1, 0,0,1, 0,0,1, 1,0,1, 1,1,1, //J -> 74 (42)
1,0,1, 1,1,0, 1,0,0, 1,1,0, 1,0,1, //K -> 75 (43)
1,0,0, 1,0,0, 1,0,0, 1,0,0, 1,1,1, //L -> 76 (44)
1,0,1, 1,1,1, 1,0,1, 1,0,1, 1,0,1, //M -> 77 (45)
1,0,1, 1,1,1, 1,1,1, 1,0,1, 1,0,1, //N -> 78 (46)
0,1,0, 1,0,1, 1,0,1, 1,0,1, 0,1,0, //O -> 79 (47)
1,1,0, 1,0,1, 1,1,0, 1,0,0, 1,0,0, //P -> 80 (4
0,1,0, 1,0,1, 1,0,1, 0,1,0, 0,0,1, //Q -> 81 (49)
1,1,0, 1,0,1, 1,1,0, 1,1,0, 1,0,1, //R -> 82 (50)
1,1,1, 1,0,0, 1,1,1, 0,0,1, 1,1,1, //S -> 83 (51)
1,1,1, 0,1,0, 0,1,0, 0,1,0, 0,1,0, //T -> 84 (52)
1,0,1, 1,0,1, 1,0,1, 1,0,1, 1,1,1, //U -> 85 (53)
1,0,1, 1,0,1, 1,0,1, 1,0,1, 0,1,0, //V -> 86 (54)
1,0,1, 1,0,1, 1,0,1, 1,1,1, 1,0,1, //W -> 87 (55)
1,0,1, 1,0,1, 0,1,0, 1,0,1, 1,0,1, //X -> 88 (56)
1,0,1, 1,0,1, 0,1,0, 0,1,0, 1,0,0, //Y -> 89 (57)
1,1,1, 0,0,1, 0,1,0, 1,0,0, 1,1,1 //Z -> 90 (5
};
/*fonction pour affiche run caractere*/
void putchar3(unsigned char x, unsigned char y, unsigned char lettre)
{
unsigned char i, j;
if (lettre < 32 || lettre > 90) lettre = 69;
lettre -= 32;
for (i = 0 ; i < 3 ; i++)
{
for (j = 0 ; j < 5 ; j++)
{
if (ktrascii[lettre][j][i] == 1) inv_pixel(x - i, y - j);
}
}
}
void main(void)
{
putchar3(50,50,50);
getch();
exit();
}
j'explique :putchar3(50,50,50);
affiche un caractere avec X,Y comme coordornnées puis le numero du caractere
les numeros des caracteres sont en parentheses en haut du code.
@+
mais ce qui me fait chier avec le truc de KTR c'est qu'on doit se faire chier à afficher caractere par caractere.
Hors ligne
:tresfache: :rocket: Rhaa tu ma tué :
mais ce qui me fait chier avec le truc de KTR c'est qu'on doit se faire chier à afficher caractere par caractere.
J'ai qd meme pa fait ca pour rien :
void print3(unsigned char x, unsigned char y, unsigned char string[])
{
for(int i = 0 ; string[i] != 0 ; i++) putchar3(x - 4*i, y, string[i]);
}
print3(50,50,"ET LA TU MET TA PHRASE EN MAJUSCULE ENTRE GUILLEMETS ET MOINS LONGUE SINON CA SORT DE L ECRAN !!!");
M'enfin qd meme !!
Hors ligne
Lol faut avouer que c'est plus facile comme ca...
Hors ligne
j'avoue ! j'avais pas vu ! :oops:
une fois que j'avais reussit à afficher un caractere je m'etais arrreté la, je n'avais continuer à analyser ton code. M'enfin, c'est quand meme fachement plus cool si on peut afficher tout une phrase.
j'espere que deather à tout compris cette fois ci !!!
Hors ligne
si moi j'ai compris, tout le monde peut le faire
Hors ligne
ouiaille. alors la :? g pas tré bien compris. deja l'asm ji pige K.E.U D.A.L.L.E mais alors l'ASCII men parle pas. javais vu un truc de duobab opourscorch mé c un peu cho... si jen comprend se ke vous mavé dit, je créé des sprite (auten de sprite ke de lettre) puis une fonction qui affiche ses sprite les un après les autre. sinon ktr tu pourrais menvoyé ta fonction pour les phrase ? merci !
Hors ligne
La fonction est ds mon post au dessus !!! Sinon la table et tout est ds le post : "texte en c" je crois va voir....
Hors ligne
Pages: 1