1

Bonjour !
Je fait un jeu et je voudrais sauver les variables globales en fichier externe pour pouvoir les réutiliser. J'ai absolument aucune idée de la façon de procéder.

Si ça marche pareil qu'en basic alors c'est que la question suivante n'a plus de sens :

est-il possible d'écrire le code d'initialisation/déclaration d'une variable globale plusieurs fois dans un prog C ?

par exemple pour le cas d'un MAP contenu dans un tableau (variable globale) pour recommencer la partie ?

2

J'oubliais ; J'ai pas ma TI sur moi alors vous pouvez repondre d'ici que je rentre ce soir à la maison

je débute en C ; c'est pour cela qu'elle sont un peu tordues mes questions !

*******************************************************************

C'est un peu vague dit comme ça mais j'ai un tableau 15*15 qui represente un MAP et d'autres tableaux qui sont aussi des paramètres du joueurs.

Il me semble que les variables globales font parti intégrante du code .9xz ... généré pour les calc. Si j'ai bien compris elles existent tout le temps.

Dans ce cas ça m'arrange bien ; alors ma question est donc comment puis-je les réinitialiser pour reprendre la partie ?

Ai-je le droit d'écrire 2 fois dans le code la chose suivante :

// déclaration/initialisation de la variable globale

char map[2][2]={{'A','B'},{'1','2'}}


//réinitialisation de la variable globale

char map[2][2]={{'A','B'},{'1','2'}}

Si j'ai pas le droit de faire ça alors il faut que je fasse une boucle for()
pour réinitialiser les tableaux et aussi que je fasse des copie de sauvegarde.

Qu'en pensez vous ?

3

J'oubliais :je voudrais savoir comment faites vous les SAVE/LOAD des parties en fichiers externes dans les jeux.

4

Tu ne peux pas utiliser une variable globale pour les sauvegardes, ces variables sont perdues si ton programme est archivé. Tu dois créer un fichier externe avec les routines de vat.h ou stdio.h. vat.h est fortement conseillé, parce que ça prend moins de place et est plus rapide. Regarde les sources de Backgammon pour voir comment on utilise un fichier externe.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

5

merci Kevin

6

//*******************création des lettres et définition de leurs poids*

letter_code[27]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','?'};
int letter_weight[27]={1,3,3,2,1,4,2,4,1,8,10,1,2,1,1,3,8,1,1,1,1,4,10,10,10,10,0};

//*************************************************************************
int int_weight(char letter)
{
int i;
i=(int)letter-65;
return (letter==letter_code[26]?(letter_weight[26])sadletter_weight[i]));
}
//*************************************************************************
int str_weight(char letter)
{
char s[3];
sprintf(s,"%i\0",int_weight(letter));
ST_showHelp(s);
wait(200000);
return s;
}

//************************************************************************
void show_letter(int player_current)
{
int i,j,n;
n=playerlist[player_current].letter_count;
ScrRectFill (&(SCR_RECT){{LX_TOP,LY_TOP,LX_BCK,LY_BCK}}, ScrRect, 0);
for((i=LX_TOP,j=0);i<LX_BCK;(i+=LX_WIDTH,j++))
{
FontSetSys (FONT_L);
DrawChar(i+LX_OFFSET,LY_TOP+LY_OFFSET,playerlist[player_current].letter[j],4);
FontSetSys (FONT_S);
++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ça affiche des caratères bizarres au lieu d'afficher le poids des lettres //
++++++++++++++++++++++++++++++++++++++++++++++++++++++

DrawStr(i+LX_WIDTH-LX_OFFSET_WEIGHT,LY_BCK-LY_OFFSET_WEIGHT,str_weight(playerlist[player_current].letter[j]),4);
}
FontSetSys (USE_FONT);
}


l'erreur doit être dans le dernier Appel de DrawStr() puisque le ST_showHelp de la fonction str_weigth montre que la récupération est correcte.
C'est à en perdre la tête !

7

1. Tu ne peux pas retourner un pointeur dans un int.
2. Tu ne peux pas retourner un pointeur vers un buffer local.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

8

Oui merci ; ça m'apprendra à faire du copier-coller d'une fonction à l'autre.

Au fait c'est quoi la fonction pour dessiner de jolie rectangle avec des effets de bord comme le font Flib et Vertel ?

Je ne la trouve pas dans la doc En ligne ; J'ai essayer DrawClipRect mais ça fonctionne pas.

Merci K.K. (j'ai pas trouver le source de Backgammon sur Ticalc.org ; je continue de chercher)

9

largeur = width, pas weight, bouffon ^^ au fait PpHd, ça te rappelle pas qqch, bouffon ? :-D

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

10

En fait j'avais déjà utilisé width ; alors j'ai du dépanner mais c'est vrai que ça fait un peu désordre. peut-être que width_weight serait plus parlant.

Je cherche la fonction pour faire des rectangles vides avec des bordures ; je ne sais pas laquelle est-ce ?

11

OTAN pour moi, j'avais lu en diagonale, et comme ça parlait de fonts... (tu peux te plaindre à PpHd pour ça tongue)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

12

Qu'est-ce que j'ai encore fait ?

./10: WinOpen.

13

"j'ai pas trouver le source de Backgammon sur Ticalc.org"
Va sur le site perso de KK.

14

andoh_wilfried
: Je cherche la fonction pour faire des rectangles vides avec des bordures ; je ne sais pas laquelle est-ce ?

DrawClipRect / MakeWinRect
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

15

avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

16

Merci Kevin

17

Voilà j'ai lu le source de Kevin et voici ce que j'ai compris

http://yn1.free.fr/up/Open_File_inVAT.txt


J'espère n'avoir rien raté !
Alors pourquoi a-t-il alloué 47 bytes s'il n'en utilise que 27 ?

18

fptr est un short *, donc fptr+20 veut dire fptr plus 40 octets.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

19

là je me suis fait avoir, confusions gni l'allocation des bytes et l'écriture d'octets ( 2 bytes pour un short)

ok c'est compris merci Kevin


Au fait je suppose que pour créer un fichier de donnée (Genre une table de base de données) il existe aucun outils ; et qu'il faut le faire soi même

20

Kevin -> Je comprends pas bien cette instruction handle=HeapRealloc(sym->handle,47);

tu realloues de la mémoire en conservant son état à partir du handle du sym qui pointe sur la variable sauvegarde du jeu confus !!!!!
si la variable existe déjà c'est qu'elle a de la mémoire qui lui est alloué non !

je croyais que EM_moveSymFromExtMem($(bgammsav),HS_NULL) suffisait à déplacer la variable dans la RAM.

Ne peut-on pas copier directement le handle directement en faisant handle=sym->handle ?

21

Bon j'ai lu 'HeapRealloc' c'est juste par précaution au cas où le handle serait corrompu

22

C'est pour ajuster la taille. Le handle n'a pas forcément la bonne taille. Par exemple, Backgammon 1.0x crée des fichiers avec 2 octets de moins que Backgammon 2.0x.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité