Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Problèmes sur Gint
Potter360 Hors ligne Rédacteur Points: 660 Défis: 0 Message

Problèmes sur Gint

Posté le 23/11/2020 16:39

Bonjour !
Je crée ce topic pour parler de plusieurs problèmes que j'ai sur gint.
Déjà il y avait ce topic sur lequel j'avais mis un problème. J'arrive maintenant à le reproduire, le bug ne se produit que quand :
-J'ouvre l'add-in
- Je reviens au menu
- J'éteins ma calculatrice
- Je la rallume
- Je reviens sur l'add-in
- Je clique sur une touche ( n'importe laquelle)

Tout cela sans ouvrir un autre add-in.

Autre problème : j'ai ce code :
#include <gint/display.h>
#include <gint/keyboard.h>
#include <gint/gint.h>
#define bool int
#define true 1
#define false 0

int main(void)
{
        extern bopti_image_t img_Vaisseau;
        int key = 0;
        int x = 0;
        int yballe = 150;

        dclear(C_WHITE);
        bool isFinish = false ;
        while(!isFinish){
                dclear(C_WHITE);
                dimage(x, 150,&img_Vaisseau);
                dupdate();
                key = getkey().key;
                if(key == KEY_EXIT)
                                gint_osmenu();
                if(key == KEY_LEFT)
                        x = x-10;
                if(key == KEY_RIGHT)
                        x = x+10;
                if(key == KEY_SHIFT)
                        yballe = 150;
                        while(yballe != 0)
                                dclear(C_WHITE);
                                dtext(x,yballe,C_BLACK,"|");
                                yballe = yballe-1;

        }

        getkey();
        return 1;
}

Quand je vais sur mon add-in, je ne peux plus le quitter, et les touches ne font plus effet( comme un freeze)
Je suis obligé de reset ma calculatrice.
Si vous avez des idées, je suis preneur !
Merci !


1, 2 Suivante
Lephenixnoir En ligne Administrateur Points: 19535 Défis: 142 Message

Citer : Posté le 23/11/2020 16:42 | #


Aaaah mais d'accord. Ça c'est connu. Le mécanisme d'extinction (ce qui inclut la veille automatique) fait des choses bizarres auxquelles gint n'est pas préparé. C'est un crash sur tous les modèles, pour l'instant je ne peux rien y faire. Quand tu es dans l'application la veuille automatique est désactivée donc ce risque n'existe pas.

Le problème avec ton code est que la boucle while(yballe != 0) n'est pas dans le if(key == KEY_SHIFT) parce que tu n'as pas mis d'accolades autour du if. Donc en fait elle est exécuté à tous les tours. De plus, seul le dclear() est dans la double parce que la aussi tu n'as pas mis d'accolades. Donc en fait dès que tu rentres dans l'add-in il lance le while et comme ce while ne modifie pas la valeur de yballe puisque ça c'est après le while, il tourne à l'infini sur ce dclear().
Potter360 Hors ligne Rédacteur Points: 660 Défis: 0 Message

Citer : Posté le 23/11/2020 16:45 | #


Ah d'accord ! Je trouvais ca bizarre aussi de ne pas mettre d'accolades, mais vu que sur un tutoriel Gint j'avais vu un while avec une seule instruction sans accolade je pensais que ca s'appliquait à tous les whiles ! Merci !
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Lephenixnoir En ligne Administrateur Points: 19535 Défis: 142 Message

Citer : Posté le 23/11/2020 16:47 | #


Oui donc si tu ne mets pas d'accolades ça ne « capture » qu'une seule instruction, c'est pour alléger le code. Ça marche avec tous les blocs (if/else/do/while/etc).
Potter360 Hors ligne Rédacteur Points: 660 Défis: 0 Message

Citer : Posté le 23/11/2020 16:51 | #


Merci !
Bon, maintenant il faut que je comprenne pourquoi le "|" ne part pas ...

Ajouté le 23/11/2020 à 16:52 :
Enfin je veux dire n'avance pas, il se passe rien quand je fais Shift
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Cakeisalie5 En ligne Membre de CreativeCalc Points: 1828 Défis: 10 Message

Citer : Posté le 23/11/2020 16:53 | #


Il faut appeler dupdate() pour rafraîchir l'écran.

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !
Mon blogBesoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Potter360 Hors ligne Rédacteur Points: 660 Défis: 0 Message

Citer : Posté le 23/11/2020 16:53 | #


Ah mais oui je suis bête !
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Lephenixnoir En ligne Administrateur Points: 19535 Défis: 142 Message

Citer : Posté le 23/11/2020 16:54 | #


Du reste si tu comptes faire un jeu un peu subtil avec des choses qui bougent à plusieurs endroits en même temps, je t'invite à séparer les entrées du dessin et de la logique temporelle. Crois-moi, ça t'aiderait beaucoup. Il y a un exemple dans le tutoriel d'utilisation de gint le jour où tu te sens de tenter ça.
Potter360 Hors ligne Rédacteur Points: 660 Défis: 0 Message

Citer : Posté le 23/11/2020 16:56 | #


Bah en fait disons que je comprends vraiment pas le code du tutoriel n2 de Gint, il faut que je m'y replonge plus en détails

Ajouté le 23/11/2020 à 17:00 :
Bon et bien non, avec ca :

if(key == KEY_SHIFT)
                {
                        yballe = 150;
                        while(yballe != 0)
                        {
                                dclear(C_WHITE);
                                dtext(x,yballe,C_BLACK,"|");
                                yballe = yballe-1;
                                dupdate();
                        }
                }

, quand je fais Shift il ne se passe rien ...
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Lephenixnoir En ligne Administrateur Points: 19535 Défis: 142 Message

Citer : Posté le 23/11/2020 17:05 | #


C'est parce que getkey() utilise SHIFT pour former des combinaisons genre Shift+VARS→PRGM. Tu peux désactiver cette option dans getkey_opt() qui est la vraie fonction (getkey() c'est juste getkey_opt() avec les options par défaut).

key = getkey_opt(GETKEY_DEFAULT & ~GETKEY_MOD_SHIFT).key;

C'est écrit dans la doc tout ça (même si d'accord c'est pas évident que ton problème se situe au niveau du getkey()).
Potter360 Hors ligne Rédacteur Points: 660 Défis: 0 Message

Citer : Posté le 23/11/2020 17:07 | #


Merci pour ta réponse mais j'obtiens : error: too many arguments to function 'getkey' lors du make
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Lephenixnoir En ligne Administrateur Points: 19535 Défis: 142 Message

Citer : Posté le 23/11/2020 17:11 | #


Oups pardon pardon il faut appeler getkey_opt() pas getkey(). C'est ce que j'avais dit au-dessus.
Potter360 Hors ligne Rédacteur Points: 660 Défis: 0 Message

Citer : Posté le 23/11/2020 17:14 | #


Meme chose : error: too few arguments to function 'getkey_opt'
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Lephenixnoir En ligne Administrateur Points: 19535 Défis: 142 Message

Citer : Posté le 23/11/2020 17:17 | #


Je sais pas comment te le dire subtilement : jette un oeil à la doc. x3
Potter360 Hors ligne Rédacteur Points: 660 Défis: 0 Message

Citer : Posté le 23/11/2020 17:18 | #


C'est vrai...Maintenant il faut que je la trouve...

Ajouté le 23/11/2020 à 17:19 :
Ah voilà !

Ajouté le 23/11/2020 à 17:21 :
Ah non... dans le depot Gint/doc il y a bopti.md or pas de getkey_opt par ici
Ah ... https://gitea.planet-casio.com/Lephenixnoir/gint/src/commit/58db663ae63857693711a15df412503add1b0fec/include/keyboard.h

int maxcycles ??? Le nombre max de ... quoi ???
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Lephenixnoir En ligne Administrateur Points: 19535 Défis: 142 Message

Citer : Posté le 23/11/2020 17:32 | #


T'as été cherché un truc vieux dis donc ! Regarde plutôt simplement dans le dossier include : https://gitea.planet-casio.com/Lephenixnoir/gint/src/branch/master/include/gint

Le wiki n'a pas de détails sue l'API malheureusement, bien tenté
Potter360 Hors ligne Rédacteur Points: 660 Défis: 0 Message

Citer : Posté le 23/11/2020 17:32 | #


Non non mais t'inquiéte pas, j'ai modifié mon message regarde !

Ajouté le 23/11/2020 à 17:44 :
En somme je comprends pas "int maxcycles"...
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Lephenixnoir En ligne Administrateur Points: 19535 Défis: 142 Message

Citer : Posté le 23/11/2020 17:47 | #


Potter360 a écrit :
Non non mais t'inquiéte pas, j'ai modifié mon message regarde !

Tu as peut-être modifié ton message mais tu es toujours à côté de la plaque, alors que (1) je t'ai dit que t'étais devant un document très vieux, (2) j'ai précisé où il fallait chercher, et (3) en plus le message d'erreur du compilateur te donne le prototype de la fonction.

getkey_opt() ne prend plus de int maxcycles en paramètre depuis longtemps. Va chercher la doc à jour et là tu pourras commencer à demander comment ça marche.
Potter360 Hors ligne Rédacteur Points: 660 Défis: 0 Message

Citer : Posté le 23/11/2020 17:49 | #


Bein, tu m'a dis d'aller dans Include, j'y suis allé, et il y a marqué ca !

Ajouté le 23/11/2020 à 17:55 :
Ah mais nooooon, j'étais sur un commit !
Alors, Timeout, was ist ?
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Lephenixnoir En ligne Administrateur Points: 19535 Défis: 142 Message

Citer : Posté le 23/11/2020 18:00 | #


On progresse... doucement mais sûrement.

Qu'est-ce que c'est ? Posé comme ça c'est une mauvaise question. As-tu tenté de chercher la traduction ? As-tu remarqué qu'il y a un paragraphe entier qui en parle juste au-dessus ? As-tu consulté le tutoriel d'utilisation de gint pour voir comment on l'utilise ?

Fais 15 secondes de pause et réalise que chaque fois que tu postes un message la personne qui t'écrit (aujourd'hui c'est moi) se coupe dans ce qu'elle fait pour t'aider et apporter une réponse. De ton côté les réponses ont peut-être l'air d'arriver gratuitement mais c'est loin d'être le cas. Donc avant de poser une question tu dois chercher et tester, et inclure dans ta question ce que tu as cherché, trouvé, pas compris, testé, et observé. Ou bien poser ta question à un bot, s'il peut te donner une réponse qui te satisfait...
Potter360 Hors ligne Rédacteur Points: 660 Défis: 0 Message

Citer : Posté le 23/11/2020 18:11 | #


Mais... ca marche
Merci beaucoup !
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
1, 2 Suivante

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 v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 81 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