void text_printC(int x, [purple]int[/purple] y, [purple]char[/purple] c, [purple]int[/purple] size, [purple]int[/purple] color)
{
[purple]int[/purple] i, j, byte_width, alpha;
char* data;
[b][blue]if[/blue][/b](c<32 || c>127 || size<1) [b][blue]return[/blue][/b];
byte_width = ((used_font[b]->[/b]width-1)>>3)+1;
data = used_font[b]->[/b]data + byte_width * used_font[b]->[/b]height * (c-32);
alpha = [maroon]32[/maroon] - ((color>>16) % 32);
color &= [maroon]0[/maroon]xFFFF;
[b][blue]for[/blue][/b](i=[maroon]0[/maroon] ; i<used_font[b]->[/b]height ; i++) {
[b][blue]for[/blue][/b](j=[maroon]0[/maroon] ; j<used_font[b]->[/b]width ; j++) {
[b][blue]if[/blue][/b](data[i*byte_width+(j>>3)] & (128>>(j&7)))
text_drawPoint(x+j*size, y+i*size, size, color, alpha);
[b][blue]else[/blue][/b] if(used_font[b]->[/b]flags & ANTIALIASING) { [green]// Antialiasing[/green]
[b][blue]if[/blue][/b](text_readPix(data, j, i-1, used_font[b]->[/b]width, used_font[b]->[/b]height)) {
[b][blue]if[/blue][/b](text_readPix(data, j-1, i, used_font[b]->[/b]width, used_font[b]->[/b]height)) text_antialias(x+j*size, y+i*size, size, color, alpha, [maroon]0[/maroon]);
[b][blue]if[/blue][/b](text_readPix(data, j+1, i, used_font[b]->[/b]width, used_font[b]->[/b]height)) text_antialias(x+j*size, y+i*size, size, color, alpha, [maroon]1[/maroon]);
}
[b][blue]if[/blue][/b](text_readPix(data, j, i+1, used_font[b]->[/b]width, used_font[b]->[/b]height)) {
[b][blue]if[/blue][/b](text_readPix(data, j-1, i, used_font[b]->[/b]width, used_font[b]->[/b]height)) text_antialias(x+j*size, y+i*size, size, color, alpha, [maroon]2[/maroon]);
[b][blue]if[/blue][/b](text_readPix(data, j+1, i, used_font[b]->[/b]width, used_font[b]->[/b]height)) text_antialias(x+j*size, y+i*size, size, color, alpha, [maroon]3[/maroon]);
}
}
}
}
}
void text_print(int x, [purple]int[/purple] y, char* c, [purple]int[/purple] size, [purple]int[/purple] color)
{
[purple]int[/purple] save_x = x;
[b][blue]for[/blue][/b]( ; *c ; c++) {
[b][blue]if[/blue][/b](*c == [gray]'\n'[/gray]) {
x = save_x;
y += (used_font[b]->[/b]height + used_font[b]->[/b]height/2) * size;
} [b][blue]else[/blue][/b] {
text_printC(x, y, *c, size, color);
x += size * text_widthC(*c);
}
}
}
Citer : Posté le 01/04/2015 15:52 | #
Salut, je ne peux utiliser aucune fonction sans bug à la compilation, sauf TEXT qui ne fonctionne pas (mais qui ne fait pas crasher la compil').
Voici mon code example.c :
[brown]#include <keyboard_syscalls.h>[/brown]
[brown]#include <ColorLib.h>[/brown]
void main(void) {
[purple]int[/purple] key;
line(10,[maroon]10[/maroon],[maroon]20[/maroon],[maroon]20[/maroon], [maroon]1[/maroon]);
[b][blue]while[/blue][/b] (!key_down(78))
{
[purple]int[/purple] a=[maroon]0[/maroon];
}
[b][blue]while[/blue][/b] (1) {
Bdisp_AllClr_VRAM();
GetKey(&key);
switch (key) {
}
}
[b][blue]return[/blue][/b];
}
Et j'ai inclus ColorLib dans le dossier include du PrizmSDK. Cela génère des .o et des .d, et me donne un joli "undefined reference to..." à chaque fonction. Auriez-vous une idée ? Je dois compiler le ColorLib.c pointé par ColorLib.h en même temps ? En ce cas, comment puis-je faire puisque la compilation, en ligne de commande, se passe grâce à Maxe.bat qui pointe sur un Maxe.exe ? Merci par avance.
Ajouté le 02/04/2015 à 13:37 :
Du coup, personne ne sait comment compiler plusieurs fichiers .c en même temps ?
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 02/04/2015 16:20 | #
mais tu met les headers et ça compile le reste il n'y a pas besoin de passer par gcc
Citer : Posté le 02/04/2015 16:21 | #
Ok, alors je ne comprend pas pourquoi les fonctions de ColorLib ne fonctionnent pas du tout.
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 02/04/2015 16:23 | #
je suis pas sur mon PC ce soir je t'envois le projet complet et tu compilera avec sinon j'utilise WinSDK et ça va vachement bien
Citer : Posté le 02/04/2015 16:24 | #
Ma version de WinSDK ne compile pas non plus (ni pour g3a, ni g1a).
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 02/04/2015 16:25 | #
je te renvoie alors une autre version par MP
Citer : Posté le 14/04/2015 19:35 | #
J'ai un petit problème : le compilateur me dit "error : conflicting type for 'int2str' " avec ce code, dont la fonction fait partie du topic principal :
[brown]#include <keyboard_syscalls.h>[/brown]
[brown]#include [gray]"ColorLib.h"[/gray][/brown]
[green]//[brown]#define LCD_WIDTH_PX 384 #define LCD_HEIGHT_PX 216[/brown][/green]
[green]//Carrées de 26*26 + 3 pixels en haut et en bas + 2 pixels de trait[/green]
void main(void)
{
[purple]int[/purple] key;
[purple]int[/purple] increment=[maroon]0[/maroon];
char* chat;
char* sortie;
Bdisp_EnableColor(1);
Trace();
[b][blue]while[/blue][/b](1)
{
[b][blue]if[/blue][/b](keydown(47))
{
[b][blue]break[/blue][/b];
}
CL_text_print(5, [maroon]5[/maroon], increment, [maroon]2[/maroon], [maroon]1[/maroon]);
Bdisp_PutDisp_DD();
increment++;
sortie = int2str(chat, increment);
}
[b][blue]return[/blue][/b];
}
void Trace()
{
CL_Line(83,[maroon]213[/maroon],[maroon]253[/maroon],[maroon]213[/maroon], [maroon]0[/maroon]x8B4513);
CL_Line(83,[maroon]4[/maroon],[maroon]253[/maroon],[maroon]4[/maroon], [maroon]0[/maroon]x8B4513);
CL_Line(83,[maroon]213[/maroon],[maroon]83[/maroon],[maroon]4[/maroon], [maroon]0[/maroon]x8B4513);
CL_Line(253,[maroon]213[/maroon],[maroon]253[/maroon],[maroon]4[/maroon], [maroon]0[/maroon]x8B4513);
CL_Filled_Rectangle(84,[maroon]212[/maroon],[maroon]254[/maroon],[maroon]5[/maroon], [maroon]0[/maroon]x000000);
Bdisp_PutDisp_DD();
}
char* int2str(char* c, [purple]int[/purple] n)
{
[b][blue]if[/blue][/b](n==[maroon]0[/maroon])
{
c[0] = [gray]'0'[/gray];
c[1] = [maroon]0[/maroon];
}
[b][blue]else[/blue][/b]
{
[purple]int[/purple] i, l=[maroon]0[/maroon];
[b][blue]for[/blue][/b](i=n ; i ; i/=[maroon]10[/maroon])
l++;
c[l] = [maroon]0[/maroon];
[b][blue]for[/blue][/b](i=n ; i ; i/=[maroon]10[/maroon])
c[--l] = i%10+[gray]'0'[/gray];
}
[b][blue]return[/blue][/b] c;
}
Quelqu'un aurait-il une idée ?
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 16/04/2015 08:10 | #
Ceci étant dit, il faut savoir que la fonction renvoie le paramètre, à savoir chat (et que donc tu copies la valeur) et qu'elle part du principe que de la mémoire a été allouée. Donc dans ton cas faut soit passer par malloc() soit utiliser un tableau statique.
Pour l'information, si l'adresse que tu donne en paramètre est déjà stockée, ignore la valeur de retour. Elle est faite pour simplifier les cas comme :
int2str(ptr, 734);
en :
Citer : Posté le 16/04/2015 08:15 | #
Merci je verrai quand je serai sur ordinateur.
Ajouté le 08/09/2015 à 17:09 :
Dites, je sais que c'est un peu hors-sujet, mais n'auriez-vous pas quelque part le filtre pour "selected.bmp" à mettre au "unselected.bmp" ? Je l'avais mais je ne le retrouve plus.
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 08/09/2015 17:23 | #
Ben en gros c'est juste mettre le fond en noir non ? Enfin, si ta question est dans l'autre sens, tu auras sans doute la réponse ici : https://www.cemetech.net/forum/viewtopic.php?t=6211
Citer : Posté le 08/09/2015 17:29 | #
Ben en gros c'est juste mettre le fond en noir non ? Enfin, si ta question est dans l'autre sens, tu auras sans doute la réponse ici : https://www.cemetech.net/forum/viewtopic.php?t=6211
Merci beaucoup !
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 04/06/2016 22:12 | #
Dans la fonction "random(int seed, int value)", à quoi correspond le "seed" ?
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 04/06/2016 22:58 | #
C'est pour initialiser le tirage au début de l'exécution. Tu le fais une seule fois, puis tu indiques 0 par la suite.
Si tu mets toujours le même seed, tu auras toujours les mêmes séquences de nombres. En général on utilise la valeur de retour de getTicks() ou autre valeur réellement aléatoire.
Citer : Posté le 05/06/2016 11:57 | #
Merci beaucoup.
Du coup, si je met "random(1;6);", cela me renverra un nombre entre 0 et 5.
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 05/06/2016 13:41 | #
N'interprète pas mal le paramètre, hein. « random(_, x) » renvoie un nombre aléatoire entre 0 et x - 1, inclus, quel que soit le premier paramètre. Faut juste indiquer un première paramètre différent de 0 la première fois (et juste la première fois. Si tu rechanges la graine à chaque fois, tu auras des résultats assez pauvres).
Citer : Posté le 18/08/2016 10:09 | #
J'ai vu qu'une où deux des fonctions présentées possédaient la fonction : pow.
Or je suis dans l’impossibilité d'utiliser cette fonction ainsi que sqrt :
[coderay.o: In function '_norme':
ray.c:(.text+0x5c0): undefined reference to '_sqrt'][/code]
En effet je ne trouve pas de lib math.h dans les lib fournie, est ce que vous savez quel lib utiliser ?
Citer : Posté le 18/08/2016 12:39 | #
Tu tombes mal, il n'y a pas de lib standard pour tout ce qui est programmation Prizm (du moins, pour autant que je le sache). J'ai personnellement un bon paquet de trucs courants codés à la main (string, sprintf(), alloca() par exemple) mais pas de fonctions mathématiques.
Dur de calculer ça du coup. La fonction pow() est triviale à implémenter (en exponentiation rapide par exemple), pour sqrt() c'est plus subtil. Tu peux exploiter un développement limité à certains endroits, la méthode des tangentes de Newton ailleurs, par exemple. Si tu veux normaliser les vecteurs tu peux calculer rapidement l'inverse de la racine carrée (un classique) :
Fast inverse square root - Wikipédia
Sinon tu as d'autres méthodes détaillées dans cet article (à commencer par la méthode de Newton) :
Methods of computing square roots - Wikipédia
Citer : Posté le 18/08/2016 12:46 | #
Ah j'avais bien peur que ça arrive :/
Bon, je vais tout implémenter à la main (puis si j'ai le temps je ferais une lib math pour la prizm)
Citer : Posté le 18/08/2016 12:52 | # | Fichier joint
Excepté math, la gestion des flux de stdio, les fonctions de conversion de stdlib et des fonctions de string, j'ai à peu près tout sous la main. Je te mets le fichier si ça peut t'aider... ar -t te donnera la liste des symboles qui y sont définis.
Citer : Posté le 18/08/2016 13:09 | #
Si tu utilises le sdk pour Windows (vu que tu parles «des libs fournies» je suppose que c'est le cas), normalement il suffit de linker la bibliothèque mathématique dispo en rajoutant -lm aux options de linkage dans le makefile, il me semble bien que par défaut c'est suffisant.
Citer : Posté le 18/08/2016 14:00 | #
Merci Lephenixnoir
@Nemhardy : j'avais essayé et il me sortait une autre erreur :/ la lib n'existe vraiment pas dans le sdk