Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Tableau en C
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Tableau en C

Posté le 30/09/2014 18:47

Bonjour,
dans le cadre de notre projet de Professeur Layton avec Aragorn, nous utilisons des tableaux, par exemple pour stocker le nombre de picarats, d'énigmes résolues... Mais je voulais, d'une part les mettre en variable globale, car sinon on se les trimballe dans toute l'architecture de fonctions, et d'autre part, les initialiser à 0 si la sauvegarde n'existe pas.
En gros, voici des bouts de code :


[brown]#include [gray]"fxlib.h"[/gray][/brown]
[brown]#include [gray]"MonochromeLib.h"[/gray][/brown]


[purple]char[/purple] Enigmes[51];
[purple]int[/purple] Layton[20];


[purple]int[/purple] AddIn_main(int isAppli, unsigned short OptionNum)
{
[purple]int[/purple] loop=[maroon]0[/maroon];
[b][blue]if[/blue][/b] (readFile([gray]"enigmes","sav"[/gray],Enigmes,[maroon]51[/maroon])==[maroon]0[/maroon])
    {
    writeFile([gray]"enigmes","sav"[/gray],(unsigned char*) &Enigmes,[maroon]51[/maroon]);
    [b][blue]if[/blue][/b] (readFile([gray]"enigmes","sav"[/gray],Enigmes,[maroon]51[/maroon])==[maroon]0[/maroon])
        {
        PrintMini(1,[maroon]35[/maroon],(const [purple]unsigned char[/purple] *)[gray]"Memoire insuffisante"[/gray],[maroon]0[/maroon]);
        ML_display_vram();
        Shift();
        [b][blue]return[/blue][/b] 0;
        }
    }
[b][blue]if[/blue][/b] (readFile([gray]"layton","sav"[/gray],Layton,[maroon]80[/maroon])==[maroon]0[/maroon])
    {
    writeFile([gray]"layton","sav"[/gray],(unsigned char*) &Layton,[maroon]80[/maroon]);
    [b][blue]if[/blue][/b] (readFile([gray]"layton","sav"[/gray],Layton,[maroon]80[/maroon])==[maroon]0[/maroon])
        {
        PrintMini(1,[maroon]35[/maroon],(const [purple]unsigned char[/purple] *)[gray]"Memoire insuffisante"[/gray],[maroon]0[/maroon]);
        ML_display_vram();
        Shift();
        [b][blue]return[/blue][/b] 0;
        }
    }


qui est le début, dans lequel je voudrais mettre Layton={0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0}; dans le if qui indique si la sauvegarde existe ou non, pour ne pas la mettre à zéro si elle est déjà remplie. Mais cela ne marche pas, et je ne vois pas comment faire. Auriez-vous des idées ?
Merci par avance.


Nessotrin Hors ligne Membre Points: 204 Défis: 0 Message

Citer : Posté le 30/09/2014 18:51 | #


Tu peut mettre :

EDIT: j'ai réglé une erreur

#include "fxlib.h"
#include "MonochromeLib.h"


char Enigmes[51];
int Layton[20];


int AddIn_main(int isAppli, unsigned short OptionNum)
{
int i; // variable utile pour les boucles for
int loop=0;
for(i = 0 ; i < sizeof(Layton)/4 ; i++) // on bloucle (4 car: int = 4 octets = 4* char)
    Layton[i] = 0; // on met les caractères à 0
if (readFile("enigmes","sav",Enigmes,51)==0)
    {
    writeFile("enigmes","sav",(unsigned char*) &Enigmes,51);
    if (readFile("enigmes","sav",Enigmes,51)==0)
        {
        PrintMini(1,35,(const unsigned char *)"Memoire insuffisante",0);
        ML_display_vram();
        Shift();
        return 0;
        }
    }
if (readFile("layton","sav",Layton,80)==0)
    {
    writeFile("layton","sav",(unsigned char*) &Layton,80);
    if (readFile("layton","sav",Layton,80)==0)
        {
        PrintMini(1,35,(const unsigned char *)"Memoire insuffisante",0);
        ML_display_vram();
        Shift();
        return 0;
        }
    }

Nessotrin, développeuse un peu trop occupée avec la vie pour être présente sur PlanetCasio.
Voici Spassus2, mon jeu de combat spatial procédural abandonné, le NESSCASDK, mon SDK 'barebones' fait maison (C'est pour les maso uniquement) et CasioUsb, mon utilitaire de transfert d'addin pour Linux.
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 30/09/2014 18:52 | #


Alors deja, tu peux tout simplement faire une boucle pour
Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

Citer : Posté le 30/09/2014 18:55 | #


Tu ne peux remplir un tableau en une commande que quand tu l'initialise. Après, tu es obligé d'utiliser une boucle pour remplir ton tableau, comme le montre le code de Nessotrin.
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games

Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 30/09/2014 18:55 | #


Pour savoir si la sauvegarde existe, il y a une fonction dans memory il me semble
Sinon, il doit y avoir une valeur de retour de Bfile_OpenFile qui dit que le fichier n'existe pas

Et pour l'initialisation du tableau, tu as déjà entendu parler de la boucle for ?

grilled
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 30/09/2014 18:56 | #


Ce code la marche

for(i = 0;i<51;i++)Layton[i] = 0;

if(!readFile("layton","sav",Layton))
{
//pas de sauvegarde
}
else
{
//il y a une sauvegarde
}


Ajouté le 30/09/2014 à 18:56 :
Arf, trop tard

Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 30/09/2014 22:38 | #


Ce n'est pas < à 50 car un tableau commence à la case 0 ? Ok merci je teste quand j'aurai accès à mon ordi.
Mais je voulais mettre le Layton =0 dans le if readfile en fait. Merci encore !
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

Citer : Posté le 30/09/2014 22:49 | #


Ton tableau à 51 cases, en faisant "< 51" quand i sera égal à 51, le programme sortira de la boucle sans lire ce qu'il y a à l'intérieur de celle-ci.
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games

Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 30/09/2014 22:54 | #


Ok autant pour moi alors.

Ajouté le 01/10/2014 à 08:55 :
Merci, problème réglé !
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis




LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 93 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd