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 - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Tutoriels d'utilisation de gint (commentaires)
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Tutoriels d'utilisation de gint (commentaires)

Posté le 15/07/2017 13:54

Les tutoriels d'utilisation de gint sont sur ce topic.

Pour garder les tutoriels ensemble dans les posts du topic d'origine (et surtout pas créer un topic par tuto...), je vous propose de poster vos questions/commentaires/etc ici. Merci !


Précédente 1, 2, 3 ··· 5, 6, 7, 8, 9, 10, 11 ··· 20 ··· 24, 25, 26 Suivante
Leno Hors ligne Membre Points: 282 Défis: 0 Message

Citer : Posté le 17/07/2019 20:15 | #


C'est beau la technnologie
Shadow15510 En ligne Administrateur Points: 5496 Défis: 18 Message

Citer : Posté le 18/07/2019 08:12 | #


J'ai dit un truc intelligent ??

Bon dans tous les cas ça me parait trop dur pour moi…

"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Leno Hors ligne Membre Points: 282 Défis: 0 Message

Citer : Posté le 31/07/2019 12:59 | #


Je n'ai pas compris comment utiliser KEYEV_DOWN, KEYEV_UP etc... dans une codition pour savoir si une touche est pressée ou relachée par exemple
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 Message

Citer : Posté le 31/07/2019 13:25 | #


#include <gint/keyboard.h> //on inclut le module de gestion du clavier

...

int main()
{
    int key = 0; //une valeur pour les stocker toutes et à des actions les lier

    ...

    key= getkey().key; //récuperer la valeur de la touche actuellement préssée

    if(key == KEY_UP)
    {
        //faire quelque chose si la touche KEY_UP etait appuyée lors du getkey().key
    }

    if(key != KEY_F1)
    {
        //faire quelque chose si F1 n'etait pas appuyée lors du getkey().key
    }

}


Les touches possible
Leno Hors ligne Membre Points: 282 Défis: 0 Message

Citer : Posté le 31/07/2019 13:29 | #


Merci
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 31/07/2019 13:31 | #


C'est pas tout à fait juste ça Kouhai. Il n'y a pas "la" touche actuellement pressée, ça n'existe pas. Plusieurs touches peuvent être pressées à la fois.

Pour utiliser les événements, tu dois utiliser pollevent() ou waitevent() (selon si tu veux attendre ou non quand aucun événement n'est disponible). Cela te renvoie un événement qui est une pression, une répétition, ou un relâchement de touche. En écoutant les événements dans une boucle, tu peux savoir quelle touche est actuellement pressée ou non.

Toutefois, c'est pas trivial à faire correctement et si un truc méchant se passe une touche peut rester appuyée dans ton application alors qu'elle ne l'est pas en vrai. Ce serait très moche.

À la place, il faut que je te donne accès au tableau de gint qui dit essentiellement quelles touches sont pressées ou pas à tout instant. J'ai un peu sauté un étage dans mon API en donnant directement getkey(), et je vais y remédier avec une fonction du type IsKeyDown(). Il est facile de faire des conneries avec une telle fonction, mais vous vous débrouillez. x)

Soit dit au passage, il y a une raison intéressante d'utiliser les événements au lieu de lire toi-même le clavier. Les événements sont produits même quand tu fais autre chose, et ils sont "situés dans le temps". Dans un key_event_t tu as un champ indiquant quand l'événement s'est produit. Cela veut dire que même si ton application lagge, les événements seront toujours lus dans les temps et le temps indiqué sera toujours valide. Donc même si tu rates des événements tu peux les analyser après coup. Typiquement pour les combos dans les jeux tu n'as pas envie qu'un lag sur le moteur graphique casse le combo du joueur - les événements l'empêchent, mais pas l'analyse manuelle.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 Message

Citer : Posté le 31/07/2019 13:38 | #


Si c'est pas la bonne méthode, c'est pas ma faute, j'ai copié sur gintctl
Leno Hors ligne Membre Points: 282 Défis: 0 Message

Citer : Posté le 31/07/2019 13:40 | #


Donc je dois faire:

if ((pollevent() == KEYEV_DOWN) && (getkey().key == KEY_LEFT)
{
    x --;
}

par exemple ?
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 31/07/2019 14:00 | #


Hackcell a écrit :
Si c'est pas la bonne méthode, c'est pas ma faute, j'ai copié sur gintctl

gintctl ne prétend pas que key != KEY_F1 signifie "si la touche F1 n'est pas pressée" ni que l'information renvoyée est un instantané du clavier.

Leno a écrit :
Donc je dois faire:
if ((pollevent() == KEYEV_DOWN) && (getkey().key == KEY_LEFT)
{
    x --;
}

par exemple ?

Nah, surtout pas. pollevent() et getkey() sont des choses différentes. Tu utilises soit l'un soit l'autre mais surtout pas les deux. Tu as le choix entre deux niveaux, à savoir pollevent()/waitevent() d'un côté, et getkey() de l'autre, et tu ne dois pas les mélanger. Je prévois d'ajouter un troisième niveau où tu peux demander individuellement l'état de chaque touche.

Tu dois plutôt faire ça :

key_event_t ev = pollevent();
if(ev.type == KEYEV_DOWN && ev.key == KEY_LEFT)
{
    x--;
}
if(...)
{
    x++;
}

Note que je n'ai appelé pollevent() qu'une seule fois, c'est important ! De plus tu veux probablement appeler waitevent() à la place, enfin à toi de voir.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 Message

Citer : Posté le 31/07/2019 14:02 | #


Lephenixnoir a écrit :

gintctl ne prétend pas que key != KEY_F1 signifie "si la touche F1 n'est pas pressée" ni que l'information renvoyée est un instantané du clavier.


C'est pour ça que j'ai modifié les commentaire dans les if
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 31/07/2019 14:02 | #


C'est toujours pas juste soit dit en passant.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 Message

Citer : Posté le 31/07/2019 14:07 | #


Je parlais au niveau de l'instantanéité. j'espére que ma valeur key reste la même entre l'appelle à la fonction getkey et son utilisation dans les if

mais c'est vrai que j'ai extrapolé pour key!=KEY_F1
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 31/07/2019 14:20 | #


getkey() ne fait que défiler les événements que le driver clavier a produit dans le passé.

Si le programme a beaucoup de retard et que la file contient des événements très vieux, alors getkey() peut renvoyer KEY_F1 même après que la touche ait été relâchée. C'est généralement ce que tu veux parce que ça t'évite de perdre les inputs si ton programme a du retard.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 Message

Citer : Posté le 31/07/2019 14:31 | #


D'accord, c'est vachement plus intéressant que celui en basic casio
Teusner Hors ligne Membre Points: 107 Défis: 0 Message

Citer : Posté le 07/03/2020 22:36 | #


J'y suis presque, tiens bon Lephe ...

J'ai un problème au niveau du build.

$ fxsdk build-fx

:: Making into build-fx

sh-elf-gcc -o build-fx/MoIsland.elf build-fx/src/main.c.o  -mb -ffreestanding -nostdlib -fstrict-volatile-bitfields -Wall -Wextra -Os -D FX9860G -m3 -I include  -T fx9860g.ld -lgint-fx  -lgint-fx -lgcc -Wl,-Map=build-fx/map
/home/*user*/****/****/gcc/lib/gcc/sh3eb-elf/9.2.0/../../../../sh3eb-elf/bin/ld: cannot open linker script file fx9860g.ld: Aucun fichier ou dossier de ce type
collect2: error: ld returned 1 exit status
Makefile:101: recipe for target 'MoIsland.g1a' failed
make: *** [MoIsland.g1a] Error 1
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 07/03/2020 22:38 | #


Intéressant. Tu es sûr que tu as make install dans gint ? Si oui, j'aimerais voir ce que le configure a affiché, parce qu'il annonce où il a détecté le compilateur, ce qui décide du dossier d'installation de la lib et des linker scripts.

(Je suis sûr que t'as tapé make install parce que sinon il n'aurait pas pu trouver les headers au moment de compiler, mais "on sait jamais".)
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Teusner Hors ligne Membre Points: 107 Défis: 0 Message

Citer : Posté le 07/03/2020 22:45 | #


Alors oui j'ai bien fait make et make install dans build.cg.

J'ai essayé d'ajouter --prefix aussi au moment de configure, pour être sûr qu'il trouve bien les bons dossiers.
$ ../configure --target=fxcg50 --prefix=$PREFIX

Configuration saved in Makefile.cfg, ready to make!
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 07/03/2020 22:51 | #


Aaaah mais oui mais non. Ce n'est pas le même dossier. Enlève ce préfixe et laisse-le tenter de trouver tout seul le compilo.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Teusner Hors ligne Membre Points: 107 Défis: 0 Message

Citer : Posté le 07/03/2020 22:58 | #


J'ai supprimé build.cg et tout recommencé :

$ mkdir build.cg
$ cd build.cg
$ ../configure --target=fxcg50
No prefix specified, let's ask the compiler:
  sh-elf-gcc --print-search-dirs | grep install | sed 's/install: //'
Got '/home/*******/****/Casio/gcc/lib/gcc/sh3eb-elf/9.2.0/'.

Configuration saved in Makefile.cfg, ready to make!
$ make
[ ... ]
$ make install
install -d /home/*******/****/Casio/gcc/lib/gcc/sh3eb-elf/9.2.0/
install libgint-cg.a -m 644 /home/*******/****/Casio/gcc/lib/gcc/sh3eb-elf/9.2.0/
install ../fxcg50.ld -m 644 /home/*******/****/Casio/gcc/lib/gcc/sh3eb-elf/9.2.0/
cp -r ../include/gint /home/*******/****/Casio/gcc/lib/gcc/sh3eb-elf/9.2.0//include


Mais j'ai toujours le même problème à la compilation via
$ fxsdk build-fx


Ca me parrait bizarre le double '/' avant 'include' à la dernière ligne du make install, sachant que la balise code l'interprète ici comme un commentaire, alors que dans mon terminal elle est bien collée au '9.2.0'
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 08/03/2020 09:04 | #


Ah je vois. Ta nouvelle install est correcte. Mais tu as compilé pour Graph 90+E, alors que le tuto utilise la version mono.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Teusner Hors ligne Membre Points: 107 Défis: 0 Message

Citer : Posté le 08/03/2020 09:21 | #


Parfait, ca marche mieux comme ça
Précédente 1, 2, 3 ··· 5, 6, 7, 8, 9, 10, 11 ··· 20 ··· 24, 25, 26 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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 104 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