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 » apprentissage du C
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

apprentissage du C

Posté le 21/04/2014 18:14

J'ai décidé d'apprendre le C par ci par là pendant mon temps libre
la je débute avec le SDK mais je ne comprends pas pourquoi le passage suivant est incorrect
    while(1){
locate(5,1);
     Print((unsigned char*)GetKey(&key));
        GetKey(&key);
    }

autre chose : les espaces ne semblent pas importants (contrairement à python) alors pourquoi il y en a t-il partout dans chaque nouvel add-in ????


Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 Suivante
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

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


Indenter c'est rajouter des tabulations ("Tab").
Petite illustration pour te montrer l'utilité:
Exemple 1
Cliquer pour enrouler
#include "fxlib.h"
#include "MonochromeLib.h"
#include "memory.h"
#include "AGBS.h"
#include "jeu.h"
#include <stdio.h>
#include <stdlib.h>


void monde_3()
{
unsigned int x_pointeur, x_fond;
unsigned int key, nbr, debloque;
unsigned char buffer[9];
int handle;

// LECTURE ET ANALYSE FICHIER
handle = memory_openfile("\\\\fls0\\angrysw.rgl",_OPENMODE_READ);
memory_readfile(handle,buffer,7,15);
memory_closefile(handle);
nbr = -1;
debloque = 0;
do{
nbr++;
if(buffer[nbr] == '1') debloque++;
else break;
}while(1);


x_pointeur = 0;
x_fond = 0;

do{
Bdisp_AllClr_DDVRAM();
ML_bmp_or_cl(fond, x_fond, 0, 191, 64);
ML_circle(10+12*x_pointeur, 31, 10, ML_BLACK);
ML_circle(11+12*x_pointeur, 32, 10, ML_BLACK);
for(nbr = debloque; nbr<7; nbr++){
ML_filled_circle(52+21*nbr+x_fond, 31, 8, ML_BLACK);
}
GetKey(&key);

if(key==KEY_CTRL_EXIT){
x_pointeur = 0;
x_fond = 0;
}
if(key==KEY_CTRL_LEFT && x_pointeur>0){
x_pointeur--;
x_fond += 9;
}
if(key==KEY_CTRL_RIGHT && x_pointeur<debloque+1){
x_pointeur++;
x_fond -= 9;
}
if(key==KEY_CTRL_EXE) break;
}while(1);
if(x_pointeur > 0) level(3, x_pointeur);
while(IsKeyDown(KEY_CTRL_EXE));
}

Exemple 2
Cliquer pour enrouler
#include "fxlib.h"
#include "MonochromeLib.h"
#include "memory.h"
#include "AGBS.h"
#include "jeu.h"
#include <stdio.h>
#include <stdlib.h>

void monde_3()
{
    unsigned int x_pointeur, x_fond;
    unsigned int key, nbr, debloque;
    unsigned char buffer[9];
    int handle;
    
    // LECTURE ET ANALYSE FICHIER
    handle = memory_openfile("\\\\fls0\\angrysw.rgl",_OPENMODE_READ);
    memory_readfile(handle,buffer,7,15);
    memory_closefile(handle);
    nbr = -1;
    debloque = 0;
    do{
        nbr++;
        if(buffer[nbr] == '1') debloque++;
        else break;
    }while(1);
    
    
    x_pointeur = 0;
    x_fond = 0;
    
    do{
        Bdisp_AllClr_DDVRAM();
        ML_bmp_or_cl(fond, x_fond, 0, 191, 64);
        ML_circle(10+12*x_pointeur, 31, 10, ML_BLACK);
        ML_circle(11+12*x_pointeur, 32, 10, ML_BLACK);
        for(nbr = debloque; nbr<7; nbr++){
            ML_filled_circle(52+21*nbr+x_fond, 31, 8, ML_BLACK);
        }
        GetKey(&key);
        
        if(key==KEY_CTRL_EXIT){
            x_pointeur = 0;
            x_fond = 0;
        }
        if(key==KEY_CTRL_LEFT && x_pointeur>0){
            x_pointeur--;
            x_fond += 9;
        }
        if(key==KEY_CTRL_RIGHT && x_pointeur<debloque+1){
            x_pointeur++;
            x_fond -= 9;
        }
        if(key==KEY_CTRL_EXE) break;
    }while(1);
    if(x_pointeur > 0) level(3, x_pointeur);
    while(IsKeyDown(KEY_CTRL_EXE));
}

Tu preferes lequel ?
Ca permet de rendre le code plus lisible mais ça ne change en rien le contenu pour le compilo
If(IsKeyDown(KEY_CTRL_EXE)==1)

if(IsKeyDown(KEY_CTRL_EXE)==1)

Pas de majuscule
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 21/05/2014 15:16 | #


a oui c'est pour ca
(tinquiete je sais ce qu'est l'indentation mais je savais bien que l'indentation ne servait à rien en C (je veux signifier par là : pas d'erreurs syntaxe à cause de l'indentation alors qu'en python : un maj de moins ou de trop et tu l'as dans le *** )
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 21/05/2014 15:53 | #


Je ne vois pas ce que viennent faire les majuscules dans l'indentation
T'es sur que tu confond pas avec la casse ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 21/05/2014 17:29 | #


non mais là il a juste trouvé où était mon erreur et pq ca marchait pas
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 21/05/2014 17:32 | #


Je parlais de ça
Darkysun a écrit :
pas d'erreurs syntaxe à cause de l'indentation alors qu'en python : un maj de moins ou de trop et tu l'as dans le *** )

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 21/05/2014 17:33 | #


a non un shift je voulais dire
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 21/05/2014 17:39 | #


une tabulation oui
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1242 Défis: 54 Message

Citer : Posté le 21/05/2014 17:55 | #


[HS] - Ceci est un code horriblement (ou génialement ça dépend l'approche) indenté :E, donc indentons bien et tout ira bien [/HS]
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 24/05/2014 14:37 | #


voila lephenixnoir mon bout de code comme ca je suis sur que dans 2 minutes c'est réglé
/*****************************************************************/
/*                                                               */
/*   CASIO fx-9860G SDK Library                                  */
/*                                                               */
/*   File name : [ProjectName].c                                 */
/*                                                               */
/*   Copyright (c) 2006 CASIO COMPUTER CO., LTD.                 */
/*                                                               */
/*****************************************************************/
#include "fxlib.h"


//****************************************************************************
//  AddIn_main (Sample program main function)
//
//  param   :   isAppli   : 1 = This application is launched by MAIN MENU.
//                        : 0 = This application is launched by a strip in eACT application.
//
//              OptionNum : Strip number (0~3)
//                         (This parameter is only used when isAppli parameter is 0.)
//
//  retval  :   1 = No error / 0 = Error
//
//****************************************************************************
int AddIn_main(int isAppli, unsigned short OptionNum)
{
    unsigned int key;
    int IsKeyDown(int keycode);

    Bdisp_AllClr_DDVRAM();
    
    while(1) {
         if(IsKeyDown(KEY_CTRL_EXE)){
            PrintMini(50,30,"Salut !",2);
        }else {
            PrintMini(50,30,"EXE...",2);
        }
    }



    while(1){
        GetKey(&key);
    }

    return 1;
}




//****************************************************************************
//**************                                              ****************
//**************                 Notice!                      ****************
//**************                                              ****************
//**************  Please do not change the following source.  ****************
//**************                                              ****************
//****************************************************************************


#pragma section _BR_Size
unsigned long BR_Size;
#pragma section


#pragma section _TOP

//****************************************************************************
//  InitializeSystem
//
//  param   :   isAppli   : 1 = Application / 0 = eActivity
//              OptionNum : Option Number (only eActivity)
//
//  retval  :   1 = No error / 0 = Error
//
//****************************************************************************
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
    return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}

#pragma section


Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 24/05/2014 14:41 | #


Et voilà, c'était une question d'algorithme... et d'écran non rafraichi.

int AddIn_main(int isAppli, unsigned short OptionNum)
{
  unsigned int key;

  while(1)
  {
    Bdisp_AllClr_VRAM();
    if(IsKeyDown(KEY_CTRL_EXE)) PrintMini(50,30,(const unsigned char *)"Salut !",2);
    else PrintMini(50,30,(const unsigned char *)"EXE...",2);

    // ou
    // PrintMini(50,30,(const unsigned char *)(IsKeyDown(KEY_CTRL_EXE)?"Salut !":"EXE..."),2);
    }

    return 1;
}

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 24/05/2014 14:44 | #


faut tout rafraichir dans la boucle ? et quesque change le const unsigned char* ?
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 24/05/2014 14:52 | #


Ça t’évite un warning, mais ce n'est pas nécessaire
Et oui, il faut rafraîchir a chaque fois que tu veux afficher le résultat.
En fait, toutes les fonctions de dessin écrivent dans la Vram, qui est une sorte de brouillon. Une fois que tu as fini ton brouillon, tu l'affiche.
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 24/05/2014 14:54 | #


Bdisp_PutDisp_DD() rafraîchit l'écran.
Souvent on l'oublie car GetKey() y fait appel, donc inutile de mettre les deux.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 24/05/2014 15:38 | #


aha si je puis me permettre tu as fait une erreur que j'ai corrigé après quelques essais et d'après ton commentaire suivant
voici le code :
int AddIn_main(int isAppli, unsigned short OptionNum)
{
   unsigned int key;
Bdisp_AllClr_DDVRAM();
   while(1)
   {
Bdisp_PutDisp_DD();
     if(IsKeyDown(KEY_CTRL_EXE)) PrintMini(50,30,(const unsigned char *)"Salut !",2);
     else PrintMini(50,30,(const unsigned char *)"EXE...",2);
     }

     return 1;
}

Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




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

Citer : Posté le 24/05/2014 15:43 | #


Oui il manquait l'affichage mais il faut bien effacer l'écran avant et aussi mettre une tempo de par exemple 10 millisecondes pour éviter que l'image "clignote"
Après, fait en sorte que tu puisses sortir de la boucle sinon tu sera oblige de reset
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 24/05/2014 15:45 | #


break marche aussi ?
et où peut-on trouver une liste de toutess les touches ? (je sait seulement que EXE= KEY_CTRL_EXE ....)
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




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

Citer : Posté le 24/05/2014 15:48 | #


Break marche pour fort, et while .
Va voir dans le tuto de inte je crois que le lien du document y est
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 24/05/2014 15:48 | #


Normalement dans le .zip il y a un pdf qui contient toute les touches.
Et c'est l'interet de la Vram, de ne pas avoir de clignotement.


while(1)
   {
//on fait des calculs et on dessine
ML_display_vram();
ML_clear_vram();
     }

avec ce code, il n'y a jamais de clignotement (et pas besoin d'effacer l'ecran, il le sera automatiquement par le display_vram();
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 24/05/2014 15:56 | #


trouvé merci dodormeur
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Pseudopourri Hors ligne Membre Points: 182 Défis: 9 Message

Citer : Posté le 24/05/2014 16:08 | #


attention hors sujet
[horssujet]Enfin un confrere dresseur de python moi je dresse des pythons 3.4.
j'espere que tu comprendra[/horssujet]
je code en...
je code en:

-ASM (assembleur) sur x86 et gb-Z80
-locomotive basic/amstrad basic
-Basic Casio
-VBS
-Batch
-Bash
-Python 3.4
-html
-CSS
-javascript
-Lua
-brainfuck
-ruby

Il faut savoir que je ne maitrise pas parfaitement tout ces langages

[/spoiler]
Remerciment

Ma calto: graph 75
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 24/05/2014 16:19 | #


ouais moi j'ai un livre sur python qui est très bien mais qui ne parle pas du tout des possibilités graphiques or c'est tout juste ce qui m'intéresse ... c'est pourquoi j'ai pas mal décroché du python mais j'étais aussi en 3.4
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 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 76 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