Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Discussions


Index du Forum » Discussions » Comment faire un jeu en C pour Graph 75 et 35+ ?
Farhi Hors ligne Membre Points: 596 Défis: 0 Message

Comment faire un jeu en C pour Graph 75 et 35+ ?

Posté le 27/11/2019 15:12

Bonjour à tous,
Récemment j'ai voulu commencé à faire un jeux en C mais le souci c'est que je ne parvient pas à trouver les alternatives de certaines fonction présente en BASIC comme par exemple:
-Pxlon
-F-Line
-Getkey
-Text

Tout ce qui relève à des fonction spécifique de la calculatrice, dont ces fonctions (celles que je viens d’énoncé au dessus) qui me semble indispensable.

Merci d'avance pour votre aide


Lephenixnoir En ligne Administrateur Points: 20767 Défis: 143 Message

Citer : Posté le 02/11/2020 15:21 | #


Particule peut intégrer un convertisseur, c'est pas un programme compliqué.
Farhi Hors ligne Membre Points: 596 Défis: 0 Message

Citer : Posté le 02/11/2020 15:23 | #


Oui j'ai un peu analysé le SpriteCoder.zip, mais j'ai pas bien compris comment fonctionne sa conversion

Ajouté le 02/11/2020 à 15:26 :
Et j'ai crû comprendre aussi que SpriteCoder n'arrive pas à lire les .bmp
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20767 Défis: 143 Message

Citer : Posté le 02/11/2020 16:12 | #


Le format utilisé par MonochromeLib est assez simple. Tu commences avec une image en noir et blanc.

1. Étendre l'image par des pixels blancs sur la droite pour que la largeur soit un multiple de 8.
2. Encoder tous les pixels blancs par 0 et les pixels noirs par 1.
3. Stocker tous les pixels ligne par ligne de haut en bas, et pour chaque ligne de gauche à droite.
4. Se souvenir des dimensions originales de l'image (avant l'étape 1).
Farhi Hors ligne Membre Points: 596 Défis: 0 Message

Citer : Posté le 02/11/2020 16:16 | #


d'accord je vais essayer de le convertir en python

Ajouté le 03/11/2020 à 21:35 :
C'est normale qu'on ne puisse pas faire de class sur le sdk ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20767 Défis: 143 Message

Citer : Posté le 03/11/2020 21:39 | #


Le SDK supporte le C++ même s'il n'y a pas de lib standard.
Farhi Hors ligne Membre Points: 596 Défis: 0 Message

Citer : Posté le 03/11/2020 23:05 | #


J'ai tenté d'utiliser des string sur le sdk et j'ai l'impression qu'il ne veut pas.
Donc on peut pas stocker de string dans une variable, ça ma parait bizarre ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20767 Défis: 143 Message

Citer : Posté le 03/11/2020 23:11 | #


Il n'y a pas de lib standard, donc pas de string (en vrai il y a je crois une implémentation incomplète et non garantie donc qu'il ne faut pas utiliser en gros), pas de vector, etc. Mais le langage est supporté.
Farhi Hors ligne Membre Points: 596 Défis: 0 Message

Citer : Posté le 03/11/2020 23:18 | #


j'ai une erreur de type:
** L2310 (E) Undefined external symbol "string::operator =(const string &)" referenced in "C:\Users\leofa\OneDrive\Documents\CASIO\fx-9860G SDK\Tutoriel\Debug\Element.obj"

Mais comme a dit Lephenixnoir les string en n'existe pas pour le sdk donc est ce que vous avez une alternative pour par exemple faire :

string a="du texte" //(avec a comme longueur indéfini)
locate(1,5);
Print((unsigned char*) a);

"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20767 Défis: 143 Message

Citer : Posté le 03/11/2020 23:21 | #


Tu peux pas passer de std::string à un pointeur comme ça. Pour du texte brut, crée la chaîne de caractères directement :

char const *a = "whatever";
locate(1,5);
Print((unsigned char *)a);

Sans vouloir être décourageant ici, si tu comptes écrire un moteur de jeu supportant les add-ins, prends le temps de maîtriser le langage d'abord. Si tu rushes tout d'un coup tu finiras vraiment avec un programme moyen.
Farhi Hors ligne Membre Points: 596 Défis: 0 Message

Citer : Posté le 03/11/2020 23:25 | #


Ouai tu as raison, mais pour l'instant je compte juste créer un prototype en attendant que je sache bien utiliser le C, histoire d'avancer un peu sur Particule car sinon je finirai jamais ce projet à cette allure.

Ajouté le 05/11/2020 à 17:08 :
Bonjour,
Je voulais savoir s'il était possible de stocker plusieurs class dans un tableau (En C++)
Exemple de ce que je veux faire :

classe.cpp :
class chien
{
public:
    chien(int x, int y);

  private:

    int x;
    int y;
};

class chat
{
public:
    chat(int x, int y);

  private:

    int x;
    int y;
};

main.cpp :

chien Felix(0,0);
chat Kitty(1,4);

class Animal[] = {Felix,Kitty}


Alors je sais très bien qu'on peut pas mélanger des types dans un tableau mais peut-être qu'il existe une alternative
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20767 Défis: 143 Message

Citer : Posté le 05/11/2020 17:14 | #


Déclarer Animal comme une classe de base dont Chat et Chien héritent, et créer un tableau de références ou pointeurs (au choix).
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 05/11/2020 17:18 | #



class Animal{
public:
    void Animal(int _type,int _x, int _y){
        type = _type;
        ...
    }
private:
int type;
int x,y;
};

Animal Kitty(1,0,0); //1:chat 2:chien ...
...
Animal listeanimal[] = {Kitty,...}

pensés suicidaires
   90%
Dark storm En ligne Labélisateur Points: 11538 Défis: 176 Message

Citer : Posté le 05/11/2020 17:25 | #


Alors ça c'est la méthode crade. En C++ tu peux utiliser l'héritage.

class Animal
{
    private:
        int x, y;
}

class Cat : public Animal
{
    public:
        Cat(int x, int y);
}

class Dog : public Animal
{
    public:
        Dog(int x, int y);
}

Cat kitty(1, 1);
Dog doggo(2, 2);

Animal liste[] = {kitty, doggo};


J'ai pas fait de C++ depuis un bail, mais t'as l'idée générale.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Farhi Hors ligne Membre Points: 596 Défis: 0 Message

Citer : Posté le 05/11/2020 17:27 | #


en fait j'ai pris chat et chien avec les même spécificité comme exemple mais c'est moi qui ait fait une erreur dans mon explication.
En gros, pour simplifier mon problème : j'ai plusieurs class nommé NewElement, PlayerController et BoxCollider
j'ai NewElement qui sera un élément de la scene (par exemple une porte, un personnage, une boite, etc..)
Et PlayerController et BoxCollider qui sont des comportements de ces élément
Exemple:
je créer un joueur avec : NewElement joueur1(x,y,...,{PlayerController Pc(1,3), BoxCollider Bc(2,3,"text") } )
et une boite : NewElement Boite1(x,y,...,{BoxCollider Bc(5,0,"phrase") } )

Ajouté le 05/11/2020 à 17:29 :
D'accord Dark storm, c'est ce que disait Lephenixnoir avec l'héritage enfin je crois si j'ai bien compris ,
ça se rapproche pas mal de ce que je veux faire en effet.
Merci
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20767 Défis: 143 Message

Citer : Posté le 05/11/2020 19:06 | #


Voilà c'est comme ce que Darks a dit à deux choses près :

1. Il faut qualifier x et y comme protected parce que private c'est inaccessible pour les classes dérivées
2. Il faut créer un tableau de référence ou de pointeurs :

Animal &liste[] = {kitty, doggo};
Animal *liste[] = {&kitty, &doggo};
Farhi Hors ligne Membre Points: 596 Défis: 0 Message

Citer : Posté le 05/11/2020 19:13 | #


D'accord merci beaucoup !

Ajouté le 26/12/2020 à 17:55 :
Bonjours, j'ai un bug très bizarre car je n'arrive pas à obtenir la longueur d'un tableau en utilisant "montableau.length".
Mon tableau est en fait un ensemble d'élément faisant partie d'une class.
Donc en gros mon tableau est initialisé de cette manière "Maclasse* montableau[] = {...};"
Merci d'avance.
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20767 Défis: 143 Message

Citer : Posté le 26/12/2020 17:57 | #


Un tableau C n'est pas un objet, c'est un tableau. Le langage ne compte pas la taille du tableau.

Si, et seulement si ton tableau a été alloué par Type tableau[] ou Type tableau[taille] alors tu peux utiliser l'opérateur sizeof qui te donne la taille de la variable en octets. En divisant avec la taille d'un élément, tu peux obtenir le nombre d'éléments.

MonType tableau[8] = { ... };
int huit = sizeof(tableau) / sizeof(tableau[0]);

Ça ne marche que si ton tableau est de type Type[<n>], et pas Type* ou autre variation.

Ajouté le 26/12/2020 à 17:58 :
Précision : de façon générale si tu veux avoir la taille du tableau tu dois la compter toi-même.
Farhi Hors ligne Membre Points: 596 Défis: 0 Message

Citer : Posté le 26/12/2020 18:00 | #


Ha d'accord je comprend mieux pourquoi il m'a refuser, merci beaucoup.

Ajouté le 07/01/2021 à 18:40 :
Bonjours, comment je peut utiliser dynamic_cast<> dans le SDK ?
Car il me dit "Identifier "dynamic_cast" is undefined"
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20767 Défis: 143 Message

Citer : Posté le 07/01/2021 19:10 | #


Probablement pas du coup. Le support du standard C++ est très partiel dans le SDK.
Farhi Hors ligne Membre Points: 596 Défis: 0 Message

Citer : Posté le 07/01/2021 19:22 | #


Lephenixnoir a écrit :
Probablement pas du coup. Le support du standard C++ est très partiel dans le SDK.

Ha d'accord merci quand même

Ajouté le 07/01/2021 à 21:03 :
Mais du coup si on revient sur l'exemple d'un peu plus haut, il est impossible de retransformer un élément du tableau Animal en Cat ou Dog ?
du style :

Cat kitty(1, 1);
Dog doggo(2, 2);
Animal *liste[] = {&kitty, &doggo};
Cat kitty2 = (Cat)liste[0];

"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 20767 Défis: 143 Message

Citer : Posté le 07/01/2021 21:25 | #


Tu peux toujours remplacer le dynamic_cast par un cast C sur le pointeur :

Cat *kitty = (Cat *)list[0];

Ta liste contient des pointeurs dont tu ne pouvais pas obtenir un Cat même dans un environnement C++ complet, c'est bien un Cat * que tu aurais eu.

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 v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 130 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