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 » Gint écran bleu
Potter360 Hors ligne Rédacteur Points: 1255 Défis: 2 Message

Gint écran bleu

Posté le 21/11/2020 21:37

Bonjour !
Je fais un moteur de déplacement sous gint.
Voici mon code :
#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;

        dclear(C_WHITE);
        dupdate();
        bool isFinish = false ;
        while(!isFinish){
                key = getkey().key;
                if(key == KEY_EXE)
                        gint_osmenu();
                dimage(x, 150,&img_Vaisseau);
                dupdate();
                if(key == KEY_LEFT)
                        x = x-1;


        }

        getkey();
        return 1;
}


Le déplacement marche ( l'image se copie mais je sais comment y remedier) mais quand je clique sur une touche, n'importe laquelle, le fond passe en bleu ...
Une idée ?
Merci !


Potter360 Hors ligne Rédacteur Points: 1255 Défis: 2 Message

Citer : Posté le 21/11/2020 21:38 | #


PS : tout a l'heure ca m'a carrement fait un System Error Reboot ...
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 21/11/2020 21:45 | #


Tu dupdate() plusieurs fois de suite et surtout tu dupdate() plein de fois en essayant de modifier une image que tu as déjà poussée (sauf que ça ne marche pas comme ça).

Pour afficher un frame, tu dclear(), tu affiches ton image, et ensuite tu dupdate() - dans cet ordre.

Sinon pour ton information tu peux inclure <stdbool.h> au lieu de traiter les booléens à coup de macros (ça fait exactement pareil mais c'est plus joli et surtout standard).

Edit : le bleu c'est le 0x5555 typique de la RAM non initialisée, que tu utilises puisque tu pousses des frames sans avoir fait dclear() d'abord.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Potter360 Hors ligne Rédacteur Points: 1255 Défis: 2 Message

Citer : Posté le 22/11/2020 09:40 | #


Ah d'accord merci !
PS : tout a l'heure ca m'a carrement fait un System Error Reboot ...

Ha bah en fait c'était juste que je sortais de l'ecran ...
Sinon pour ton information tu peux inclure <stdbool.h>

Ha, je vais essayer, merci !
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 22/11/2020 09:42 | #


Tu peux me passer l'image et les coordonnées exactes ? gint est supposé gérer ça. C'est un bug.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Potter360 Hors ligne Rédacteur Points: 1255 Défis: 2 Message

Citer : Posté le 22/11/2020 09:44 | #


Je fais ça tout à l'heure, je suis pas devant mon ordi !
Globalement, coder. Mal, mais coder.
Potter360 Hors ligne Rédacteur Points: 1255 Défis: 2 Message

Citer : Posté le 22/11/2020 10:53 | # | Fichier joint


En fait, quand je clique sur mon add-in il ne démarre pas, il faut appuyer sur une touche, n'importe laquelle, pour qu'il se lance.
Ensuite il fait un écran bleu, et si j'appuie sur "EXE" il me lance mon add-in.
Le system error semble aléatoire...
Je joint le g3a.
Et le 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;

        dclear(C_WHITE);
        bool isFinish = false ;
        while(!isFinish){
                key = getkey().key;
                if(key == KEY_EXE)
                        gint_osmenu();
                dclear(C_WHITE);
                dimage(x, 150,&img_Vaisseau);
                dupdate();
                if(key == KEY_LEFT)
                        x = x-1;


        }

        getkey();


Ajouté le 22/11/2020 à 10:53 :
Ah, un getkey qui traine après le main()...
Je vais voir ca, je ne l'avais pas vu...
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 22/11/2020 10:58 | #


En fait, quand je clique sur mon add-in il ne démarre pas, il faut appuyer sur une touche, n'importe laquelle, pour qu'il se lance.

Ça c'est normal tu fais getkey() avant d'avoir affiché le premier frame.

J'ai fait une bonne dizaine de tests et ça marche chez moi. >_o
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Potter360 Hors ligne Rédacteur Points: 1255 Défis: 2 Message

Citer : Posté le 22/11/2020 11:22 | #


Ah ok merci !
D'ailleurs mon code n'etait pas complet:

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

        dclear(C_WHITE);
        bool isFinish = false ;
        while(!isFinish){
                key = getkey().key;
                if(key == KEY_EXE)
                        gint_osmenu();
                dclear(C_WHITE);
                dimage(x, 150,&img_Vaisseau);
                dupdate();
                if(key == KEY_LEFT)
                        x = x-1;


        }

        getkey();
        return 1;
}


Ajouté le 22/11/2020 à 11:32 :
Ouii ca marche, et à ma vue plus de System Error ! Merci Lephe !!

Ajouté le 22/11/2020 à 11:32 :
Ah bon bah si y en a encore...mais j'arrive pas à savoir quand... En vrai ca va, il y en a pas beaucoup...
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 22/11/2020 11:35 | #


La première étape pour isoler et résoudre un bug comme ça c'est de réussir à le reproduire. Est-ce qu'il se produit quand tu appuies sur EXE ? Quand tu dessines le vaisseau ? Quand tu sors de l'écran ?

Tu peux aussi chercher s'il se produit quand tu enlèves l'appel à gint_osmenu() ou quand tu ne dessines pas l'image.

Tu peux aussi voir rapidement si l'adresse du System ERROR est intéressante. Et c'est un System ERROR de l'OS ou un écran d'exception de gint ?

Y'a plein de détails à voir là.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Potter360 Hors ligne Rédacteur Points: 1255 Défis: 2 Message

Citer : Posté le 22/11/2020 11:41 | #


Dès fois, quand je suis pas allé sur un autre add-in depuis plus de 5minutes environ, que je reviens sur mon addin et que je fais une touche quelquonque, il me met :
System ERROR
REBOOT :[ EXIT]
INITIALIZE :[ EXE]
INTERRUPT
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 22/11/2020 12:08 | #


Est-ce que tu as une idée plus précise ? J'ai laissé la calculatrice tourner 5 minutes à la fois dans le menu et dans l'add-in, mais à chaque fois j'ai pu reprendre le clavier sans problème ensuite.

Ajouté le 22/11/2020 à 12:09 :
Au fait l'écran bleu c'est si tu appuies sur EXE comme première touche après avoir lancé l'add-in, puisque dans ce cas tu reviens au menu avant d'avoir fait le moindre dupdate().
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Potter360 Hors ligne Rédacteur Points: 1255 Défis: 2 Message

Citer : Posté le 22/11/2020 12:10 | #


Le problème c'est que je n'arrive pas a refaire le System Error fréquemment, j'ai l'impression que c'est aléatoire...

Ajouté le 22/11/2020 à 13:11 :
J'ai l'impression qu'il faut attendre puis appuyer sur une touche pour avoir l'erreur mais je ne suis pas sur ...
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 22/11/2020 14:22 | #


Tss, ça se présente comme un bug chiant alors. >_>
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Potter360 Hors ligne Rédacteur Points: 1255 Défis: 2 Message

Citer : Posté le 22/11/2020 14:38 | #


Du coup je fais quoi, je continue a rechercher le bug ou alors je continue le developpement en voyant si ca part ?
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 22/11/2020 14:44 | #


Garde une copie du code actuel quelque part, et continue de développer. Si le bug continue de se poser tu finiras bien par réussir à le reproduire de façon consistante.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Potter360 Hors ligne Rédacteur Points: 1255 Défis: 2 Message

Citer : Posté le 22/11/2020 14:49 | #


Ok je vais faire ca, en tout cas merci beaucoup !
Globalement, coder. Mal, mais coder.

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 110 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