Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Programmation C » J'aimerai vraiment m'améliorer... (139 réponse(s))
./REPRISE DU POST PRECEDENT (post n°114)   Marquer comme non lu.
Kroma Ecrit le: Dimanche 16 avril 2006 à 13:27 Déconnecté(e)    Voir le profil de Kroma Envoyer un email à Kroma Visiter le site WEB de Kroma Envoyer un message privé à Kroma  

Donc je suis obligé de passer par des if???
du style:

void (char lettre, int x, int y)
{
if(lettre == 'a')SPRT_8(ALight,ADark,x,y);
if(lettre == 'b')SPRT_8(BLight,BDark,x,y);

...
}

-Edité le Dimanche 16 avril 2006 à 14:52 par geogeo-
#idea# SHIP TOURNAMENT 2006 -> 5% #idea#
    
./Post n°115   Marquer comme non lu.
LionelA Ecrit le: Dimanche 16 avril 2006 à 14:38 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


lol en fait tu crois que tu peux generer les nom des variables avec des chaines de char pendant l'execution :)
le nom des variable ne signifie plus rien une fois le programme compilé (contrairement au basic par exemple).
Ce que tu peux faire c'est faire un tableau qui contient les pointeurs vers tes sprites dans l'ordre et utiliser ce tableau avec comme index la lettre afin de retrouver le sprite qui va bien :)
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°116   Marquer comme non lu.
Sasume Ecrit le: Dimanche 16 avril 2006 à 14:49 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Kroma :

Holà, apprends le C avant d'essayer de t'exprimer dans ce langage...

Ca fait plaisir... #oops#

Désolé, ce n'est pas pour te vexer que je dis ça. C'est comme si tu essayais de parler anglais sans avoir pris de cours. C'est absurde...

C'est en faisant des erreurs qu'on apprend...Non?

Oui, mais c'est surtout en prenant des cours (sur internet il y a pas mal de ressources disponibles pour apprendre le C, mais je te conseille de t'acheter un bon bouquin).

LionelA :
Ce que tu peux faire c'est faire un tableau qui contient les pointeurs vers tes sprites dans l'ordre et utiliser ce tableau avec comme index la lettre afin de retrouver le sprite qui va bien :)

Ou mieux, pour éviter tous ces pointeurs, tu stockes tes sprites représentant les caractères dans un tableau, ensuite, tu n'as qu'à indexer ton tableau pour tomber sur le caractère souhaité.
    
./Post n°117   Marquer comme non lu.
Kroma Ecrit le: Dimanche 16 avril 2006 à 17:27 Déconnecté(e)    Voir le profil de Kroma Envoyer un email à Kroma Visiter le site WEB de Kroma Envoyer un message privé à Kroma  

Mais j'en ai pris des cours, mais bon, des fois il faut essayer de se lancer au-dela en demandant des conseils, par exemple, je sais pas, ça aurai été peut etre possible qu'on fasse comme l'a dit Lionel :


lol en fait tu crois que tu peux generer les nom des variables avec des chaines de char pendant l'execution :)


donc, voilà maintenant que je sais que ce n'est pas possible, je vais me débrouiller...
Les forums sont encore là pour poser des questions, même bêtes (enfin, on dit qu'il n'y a pas de questions bêtes).

En fait, j'avais déjà fait dans un autre jeu des polices perso mes j'étais passé par les "if", j'essayez simplement de savoir s'il n'y avait pas plus simple.
Donc, merci, le truc des tableaux c'est pas con du tout ! #toptop#
#idea# SHIP TOURNAMENT 2006 -> 5% #idea#
    
./Post n°118   Marquer comme non lu.
geogeo Ecrit le: Dimanche 16 avril 2006 à 17:56 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


C'est tu veux gérer des polices persos facilement (gras, italique, souligné, ...) il existe une bibliothèque. #oui#

-Edité le Dimanche 16 avril 2006 à 17:57 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°119   Marquer comme non lu.
LionelA Ecrit le: Dimanche 16 avril 2006 à 18:47 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Sasume :
LionelA :
Ce que tu peux faire c'est faire un tableau qui contient les pointeurs vers tes sprites dans l'ordre et utiliser ce tableau avec comme index la lettre afin de retrouver le sprite qui va bien :)

Ou mieux, pour éviter tous ces pointeurs, tu stockes tes sprites représentant les caractères dans un tableau, ensuite, tu n'as qu'à indexer ton tableau pour tomber sur le caractère souhaité.


Bien entendu (c'est d'ailleurs ce que j'ai fait pour ma micro font) mais je voulais pas trop embrouiller Kroma et donc j'ai pensé que c'était plus facile à comprendre avec un tableau de pointeurs vers les sprites
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°120   Marquer comme non lu.
Kroma Ecrit le: Mardi 18 avril 2006 à 12:37 Déconnecté(e)    Voir le profil de Kroma Envoyer un email à Kroma Visiter le site WEB de Kroma Envoyer un message privé à Kroma  

Salut, bon, je suis âs chez moi donc je peux pas tester...
Pour creer un tableau dans un tbleau, on fait comme ça ?


static unsigned char Conteneur[2]={char contenu_01[1]={0} , char contenu_02[1]={0}};


Franchement, j'y vais au pif donc... J'attend votre aide.
#idea# SHIP TOURNAMENT 2006 -> 5% #idea#
    
./Post n°121   Marquer comme non lu.
geogeo Ecrit le: Mardi 18 avril 2006 à 13:05 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Il n'y a que les structures qui permettent de faire ce que tu veux:
genre:
[code]
typedef struct {
unsigned char tab1[];
unsigned char tab2[];
};

Mais je ne vois pas l'utilité de faire un tableau de une seule et unique case.

Si tu veux une matruce?
Dans ce cas, une matrice de 10x15 par exemple
unsigned char tab[10][15];
Tu ne peux l'initialiser à zéro à moins de te taper toutes les cases. Le mieux est de faire un simple:
memset(tab, 0x00, sizeof(tab)); ou une boucle for d'initialisation.

Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°122   Marquer comme non lu.
Folco Ecrit le: Mardi 18 avril 2006 à 13:20 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


geogeo :
C'est tu veux gérer des polices persos facilement (gras, italique, souligné, ...) il existe une bibliothèque. #oui#


gfaflib :p c'est du dynamique :p:p:p


-Edité le Mardi 18 avril 2006 à 13:21 par Martial Demolins-
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°123   Marquer comme non lu.
Folco Ecrit le: Mardi 18 avril 2006 à 13:26 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


Kevin Kofler :
Il parle de son gros hack de caching qui ne peut pas fonctionner en pratique sans modifier AMS (il ne peut pas intercepter les allocations effectuées à l'intérieur de AMS).


et non, ça marche très bien. je fournis les fonctions d'accès qui vont bien (allocation en mémoire haute ou basse et réallocation. de plus, adresse et handle sont renvoyés à chaque fois, ça gagne en place au final.
pour les autres fonctions de alloc.h, il n'y a aucun problème à les utiliser normalement.
et je ne vois pas où est le hack, c'est parfaitement propre, ça utilise un Line emulator non utilisé par AMS ou par aucun autre programme.

Jfg: regarde ici.

tout est détaillé dans le header. le principe de la lib consiste à n'avoir qu'en RAM les lignes que tu es en train d'éxécuter (après ça dépend comment tu organises ton code), le reste se déchargeant automatiquement si besoin est, et se rechargeant automatiquement au cas où aussi.
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°124   Marquer comme non lu.
geogeo Ecrit le: Mardi 18 avril 2006 à 13:30 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Martial Demolins> Euh du statique plutôt. :p
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°125   Marquer comme non lu.
Folco Ecrit le: Mardi 18 avril 2006 à 13:32 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


nan, je l'ai portée :p
mais de toute façon, je la maintiendrais pas si tu la modifiais ^^
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°126   Marquer comme non lu.
geogeo Ecrit le: Mardi 18 avril 2006 à 13:35 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Oula pas de soucis là dessus, j'ai trop de projets avant de reprendre GFA Basic. %)
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°127   Marquer comme non lu.
Sasume Ecrit le: Mardi 18 avril 2006 à 15:03 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Kroma :
Salut, bon, je suis âs chez moi donc je peux pas tester...
Pour creer un tableau dans un tbleau, on fait comme ça ?


static unsigned char Conteneur[2]={char contenu_01[1]={0} , char contenu_02[1]={0}};


Franchement, j'y vais au pif donc... J'attend votre aide.
N'y vas pas au pif, essaie de lire de la doc sur la grammaire du C (c'est ça aussi d'apprendre un langage...).

Bref, contrairement à ce qu'à dit geogeo au post ./121 (je doute de plus en plus de ses connaissances sur le C), c'est complètement faisable, comme ceci :
unsigned char Conteneur[2][1]={{0},{1}};
Conteneur[0][0] = 42;
    
./Post n°128   Marquer comme non lu.
Kroma Ecrit le: Mardi 18 avril 2006 à 18:37 Déconnecté(e)    Voir le profil de Kroma Envoyer un email à Kroma Visiter le site WEB de Kroma Envoyer un message privé à Kroma  

ouais mais comme je l'ai dit, je suis pas chez moi en ce moment, je ne peut donc pas utiliser TIGCC et l'émulateur, lire la doc ok mais bon, si j'ai pas de support pour tester, c'est comme ne rien faire du tout...
Par contre, quand j'ai des réponses, le week end, je peux tester donc c'est cool.
C'est vrai, faudra que je la lise cette doc.... %) j'ai la flemmmmme #zzz#
#idea# SHIP TOURNAMENT 2006 -> 5% #idea#
    
./Post n°129   Marquer comme non lu.
geogeo Ecrit le: Mardi 18 avril 2006 à 18:41 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


J'ai hésité entre matrice et structure vu sa question qui n'était pas claire à mon sens. Mais bon la remarque fait plaisir. ^^
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°130   Marquer comme non lu.
Kroma Ecrit le: Mercredi 19 avril 2006 à 05:36 Déconnecté(e)    Voir le profil de Kroma Envoyer un email à Kroma Visiter le site WEB de Kroma Envoyer un message privé à Kroma  


Ou mieux, pour éviter tous ces pointeurs, tu stockes tes sprites représentant les caractères dans un tableau, ensuite, tu n'as qu'à indexer ton tableau pour tomber sur le caractère souhaité.


En fait, un sprite c'est en quelque sorte un tableau non ?

quand tu dis ça, c'est quoi exactement...
#idea# SHIP TOURNAMENT 2006 -> 5% #idea#
    
./Post n°131   Marquer comme non lu.
Sasume Ecrit le: Mercredi 19 avril 2006 à 10:02 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Kroma :
ouais mais comme je l'ai dit, je suis pas chez moi en ce moment, je ne peut donc pas utiliser TIGCC et l'émulateur, lire la doc ok mais bon, si j'ai pas de support pour tester, c'est comme ne rien faire du tout...

Profites-en pour t'acheter un bouquin alors :)


En fait, un sprite c'est en quelque sorte un tableau non ?

Oui

quand tu dis ça, c'est quoi exactement...

unsigned char mes_caracteres[256][8] = {
{0,0,0,0,0,0,0,0}, // Lettre 0 : '\0'
...
{...}, // Lettre 32 : ' '
...
{...}, // Lettre 48 : '0'
{...}, // Lettre 49 : '1'
{...}, // Lettre 50 : '2'
...
{...}, // Lettre 65 : 'A'
{...}, // Lettre 66 : 'B'
...
};

Pour une police dont les caractères seraient de taille 8x8 en noir et blanc, par exemple.
À utiliser comme ceci pour afficher un caractère :
void drawchar(short x,short y,unsigned char c)
{
  Sprite8(x,y,mes_caracteres[c],SPRT_OR);
}


Donc pour afficher une chaine :
void drawchaine(short x,short y,const char *chaine)
{
  while(*chaine)
  {
    drawchar(x,y,*chaine++);
    x += LARGEUR_POLICE;
  }
}

D'ailleurs, c'est un peu moche parce que ma fonction drawchar prend en paramètre un unsigned char, tandis que les chaines de caractères sont des char * (pas unsigned donc).
Kevin ?
-Edité le Mercredi 19 avril 2006 à 10:04 par Sasume-
    
./Post n°132   Marquer comme non lu.
geogeo Ecrit le: Mercredi 19 avril 2006 à 12:19 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Rien n'empêche de faire des chaînes de caractères en unsigned char *.
Ou alors de se taper dans la fonction drawchaine ceci:
drawchar(x, y, (unsigned)*chaine++);

D'ailleur on passe plus souvent un caractère avec le type int que unsigned char.

-Edité le Mercredi 19 avril 2006 à 12:41 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°133   Marquer comme non lu.
Sasume Ecrit le: Mercredi 19 avril 2006 à 14:19 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

C'est d'ailleurs bizarre, puisqu'une chaine de caractères est un char *
-Edité le Mercredi 19 avril 2006 à 14:19 par Sasume-
    
  :: Index » Forum Ti68K » Programmation C » J'aimerai vraiment m'améliorer... (139 réponse(s))
Pages : 7/8     « 1 2 3 4 5 6 [7] 8 » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 46.41ms avec 18 requetes