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 » demande aide programmation C
Thetibo Hors ligne Membre Points: 27 Défis: 0 Message

demande aide programmation C

Posté le 21/10/2014 11:44

Bonjour,

Je viens de commencer à programmer sur Casio et une des première chose que je me suis demandé et que je n'ai pas trouvé c'est la détection d'appui d'une touche sur front montant.
Parce qu'il existe une fonction IsKeyDown mais celle-ci est toujours active quand la touche est appuyée.

Je me suis quand même débrouillé autrement mais si jamais une fonction existe je veux bien la connaitre !

Autre chose, concernant l'affichage d'image statiques, est-ce qu'il est possible d'afficher (un bonhomme par exemple) rapidement cette image ?
Ma solution a été de faire un tableau de unsigned char (immense du coup ≈ 150 cases) de 0 et 1 que je parcours à chaque boucle mais cette méthode est extrêmement lente et donc je pense qu'elle est largement optimisable.
Avez-vous une solution ?

Concernant l'aléatoire, j'ai lu une solution sur un forum mais est-il possible d'initialiser la fonction rand() comme sur un ordi à l'aide de time.h ?

Merci de vos réponses !


Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 21/10/2014 12:03 | #


Pour le premier point, j'ai pas tout compris, mais tu as la fonctions IsKeyUp aussi.

Pour le second point, tu as la librairie MonochromeLib qui est celle que tout le monde utilise. Tu peux la trouver facilement sur le site
Et apres pour encoder tes sprites, tu as le sprite codeur de Smashmaster.
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 21/10/2014 12:05 | #


@Theprog Au début il veut dire que l'action se fasse juste au moment où la touche est relaché et que cela ne fonctionne pas si elle reste appuyé
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 21/10/2014 12:13 | #


Pour le premier:
// le debut
while(IsKeyUp(TOUCHE);
// la suite

Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

Citer : Posté le 21/10/2014 12:15 | #


Salut,

En effet, tu peux facilement afficher une image grâce à MonochromeLib.
Tu as plusieurs fonction dans ML qui te permettent d'afficher une image :


#define ML_BMP_OR
// #define ML_BMP_AND
// #define ML_BMP_XOR
#define ML_BMP_OR_CL
// #define ML_BMP_AND_CL
// #define ML_BMP_XOR_CL

// #define ML_BMP_8_OR
// #define ML_BMP_8_AND
// #define ML_BMP_8_XOR
// #define ML_BMP_8_OR_CL
// #define ML_BMP_8_AND_CL


Pour pouvoir les utiliser, tu dois enlever les "//" dans MonochromeLib.h.
Ce lien te sera aussi utile pour coder tes images en hexadécimal :[url= http://tools.planet-casio.com/SpriteCoder/]Sprite Coder[/url]
Voilà un exemple de code te permettant d'afficher une image:


#include "fxlib.h"
#include "MonochromeLib.h"
int AddIn_main(int isAppli, unsigned short OptionNum)
{
const unsigned char Jouer[]={
    0x0, 0x0, 0x0, 0x3,
    0x0, 0x0, 0x0, 0x3,
    0x0, 0x0, 0x0, 0x3,
    0x0, 0x0, 0x0, 0x3,
    0xf, 0x80, 0x0, 0x3,
    0xf, 0xc0, 0x0, 0x3,
    0xc, 0xe0, 0x0, 0x3,
    0xc, 0x70, 0x0, 0x3,
    0xc, 0x38, 0x0, 0x3,
    0xc, 0x1c, 0x0, 0x3,
    0xc, 0xe, 0x0, 0x3,
    0xc, 0x7, 0x0, 0x3,
    0xc, 0x3, 0x80, 0x3,
    0xc, 0x1, 0xc0, 0x3,
    0xc, 0x0, 0xc0, 0x3,
    0xc, 0x0, 0xc0, 0x3,
    0xc, 0x1, 0xc0, 0x3,
    0xc, 0x3, 0x80, 0x3,
    0xc, 0x7, 0x0, 0x3,
    0xc, 0xe, 0x0, 0x3,
    0xc, 0x1c, 0x0, 0x3,
    0xc, 0x38, 0x0, 0x3,
    0xc, 0x70, 0x0, 0x3,
    0xc, 0xe0, 0x0, 0x3,
    0xf, 0xc0, 0x0, 0x3,
    0xf, 0x80, 0x0, 0x3,
    0x0, 0x0, 0x0, 0x3,
    0x0, 0x0, 0x0, 0x3,
    0x0, 0x0, 0x0, 0x3,
    0x0, 0x0, 0x0, 0x3,
};
ML_bmp_or_cl(Jouer,-5,1,30,30);                   // On affiche l'image dans la VRAM. le _cl permet d'afficher une image même si elle est hors de l'écran
ML_display_vram();                       // On passe la VRAM à l'écran ( attention, c'est une fonction de MonochromeLib, donc il faut décommenter ! ;)
ML_clear_vram();                          // On efface ce qu'il y a dans la VRAM ( mais ce qui est à l'écran ne s'efface pas )
while(1){}                                       // On admire
}

1337
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 21/10/2014 12:18 | #


while(IsKeyUp(TOUCHE));
while(IsKeyDown(TOUCHE));

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

Citer : Posté le 21/10/2014 12:59 | #


Ouh ><
Utilise plutôt, au maximum, la fonction bloquante GetKey() pour économiser la batterie.
uint key;
GetKey(&key);
switch(key)
{
    // ...
}

Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Totoyo Hors ligne Membre d'honneur Points: 16093 Défis: 102 Message

Citer : Posté le 21/10/2014 13:12 | #


Que fait le modérateur ?

Une question n'a rien à faire dans Tutoriels et astuces

Edit le modérateur : Désolé monsieur-catégorie, de pas avoir le réflexe

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