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 » Problème C
Orpas Hors ligne Membre Points: 36 Défis: 0 Message

Problème C

Posté le 14/12/2020 19:15

Bonjour !
Je code sous Gint.
J'ai un problème avec ce code :
#include <gint/display.h>
#include <gint/keyboard.h>

int main(void)
{
        extern bopti_image_t img_personnage;

        int a = 0;
        int x = 0;
        int key;
        while(a != 1)
        {

                dclear(C_WHITE);
                dimage(x,40,&img_personnage);
                dupdate();
                key = getkey().key;
                if(key = KEY_EXE)
                        a = 1;
                if(key = KEY_RIGHT)
                        x = x+1;


        }
        getkey();
        return 1;
}



Quand je le lance, et que j'appuie sur la flèche de droite, rien ne se passe, puis, si j'appuie une 2ème fois, cela quitte l'add-in.
Pouvez vous m'aider ?
Merci !


Lephenixnoir En ligne Administrateur Points: 24146 Défis: 170 Message

Citer : Posté le 14/12/2020 19:19 | #


Dans tes conditions, tu as écrit key = <valeur> au lieu de key == <valeur>. L'opérateur = sert à modifier la valeur d'une variable, et donc la condition de ton if n'est pas une condition mais une affectation.

Ce code est équivalent à

key = KEY_EXE;
if(key)
  a = 1;
key = KEY_RIGHT;
if(key)
  x = x+1;

Le test if(key) où on donne juste une valeur comme condition est équivalent à if(key != 0). gint fait attention à ce qu'aucune touche n'ait la valeur 0 pour que tu puisses initialiser key à 0, et donc dans les deux cas les conditions sont vraies.

Ainsi, lorsque tu appuies la première fois sur une touche, tu te retrouves avec a=1 et x=1, la condition te fait sortir de la boucle, et tu te retrouves sur le getkey() qui précède le return. Appuyer sur n'importe quelle touche ensuite quitte l'add-in.

En général quand tu as une boucle de ce genre avec le dessin, puis les entrées, puis les tests sur key (ce qui est très bien d'ailleurs !) tu n'as pas besoin d'un getkey() à la fin, tu peux terminer directement avec un return à la fin de la boucle. Ça permet de mieux comprendre ce qui se passe.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Orpas Hors ligne Membre Points: 36 Défis: 0 Message

Citer : Posté le 14/12/2020 19:21 | #


Ah mais d'accord !
Merci beaucoup, pour ta rapidité, je crois que 5 minutes c'est un record !
J'ai récemment découvert Planet Casio, et je ne suis pas déçu !
Je code (beaucoup) et ça marche (des fois).
Lephenixnoir En ligne Administrateur Points: 24146 Défis: 170 Message

Citer : Posté le 14/12/2020 19:23 | #


Ha ha oui on est réactifs selon les jours et les sujets ! Bon courage pour ton programme en tous cas
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)

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