Posté le 27/11/2019 15:12
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | 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
Citer : Posté le 11/01/2021 13:27 | #
Nevermind, you have an array of pointers - delete[] only works for arrays of objects.
Citer : Posté le 11/01/2021 13:29 | #
D'accord, merci à tous pour votre aide et toute ces explications
Albert Einstein
Citer : Posté le 11/01/2021 13:37 | #
Très bien ton code. N'oublie pas delete AllElem aussi.
Citer : Posté le 11/01/2021 13:41 | #
D'acc merci pour tout
Ajouté le 12/01/2021 à 12:47 :
Est-ce qu'il y a un topic qui explique l'utilisation du port 3 pin pour le SDK ?
Albert Einstein
Citer : Posté le 12/01/2021 15:18 | # | Fichier joint
Alors j'ai fait tout les changements pour les Component et les GameObject mais ils me mettent une erreur disant :
'A value of type "SceneManager *" cannot be used to initialize an entity of type "GameObject *" '
En fait, j'utilise une autre class pour créer la map mais elle fait buggé et j'arrive pas à résoudre.
J'ai mis en pièce jointe tout le code que j'ai fait, et j'ai commenté les fonctions.
Si vous pouvez jetez un coup d'oeil pour voir ce qu'il ne va pas malgré les corrections que j'ai appliqué ça m'aiderait beaucoup pour faire avancer le projet particule.
Les scripts où il faut regarder sont : ClassParticule.cpp, ClassParticule.h et Tutoriel.cpp
Merci d'avance
Albert Einstein
Citer : Posté le 12/01/2021 15:36 | #
I believe it's because you're trying to initialise a pointer to a GameObject with those args, instead of initialising the actual GameObject. This obviously won't work.
e.g.
GameObject *Default14_1_6(this,TerrainIvC31,92,49,16,16,"Default14","Environnement",Default14Compo1_6,1);
should be
GameObject Default14_1_6(this,TerrainIvC31,92,49,16,16,"Default14","Environnement",Default14Compo1_6,1);
Citer : Posté le 12/01/2021 15:54 | #
Oui mais après je peux plus utiliser les pointers ?
Albert Einstein
Citer : Posté le 12/01/2021 16:00 | #
Try GameObject *x = new GameObject(args) if you want to create it in the heap. Just remember to delete it when you're done.
Citer : Posté le 12/01/2021 16:02 | #
ha ok, merci. Je vais corriger ça !
Ajouté le 12/01/2021 à 16:58 :
Alors j'ai tout corriger et il y a un bug de lors de l'exécution et non lors de la compilation à cette ligne là :
scene.AllElem->AllCompo[j]->OnUpdate();
je pense qu'il a du mal avec les méthode virtuel
Albert Einstein
Citer : Posté le 12/01/2021 17:08 | #
Quelle erreur ? Et tu peux déjà regarder dans le listing du linker si la vtable existe et regarder la valeur de OnUpdate en tant que pointeur.
Citer : Posté le 12/01/2021 17:12 | #
Alors c'est très bizarre parce j'ai recompiler plusieurs fois le script et la compilation a bien fonctionner mais le jeu plantait, mais j'ai fermé et relancer SDK et j'ai relancer une nouvelle compilation et j'ai plus eu d'erreur
Ca peut-être le SDK qui a du avoir un problème
Albert Einstein
Citer : Posté le 12/01/2021 17:13 | #
Bon le tout c'est que ça marche. ^^"
Citer : Posté le 12/01/2021 17:15 | #
Oui, normalement la partie du moteur de jeu sur le SDK est presque terminé, il me reste plus de terminer la conversion depuis particule pour pouvoir le rendre publique
Ajouté le 12/01/2021 à 17:24 :
Est-ce que le fait de remplacer la liste AllElem va supprimer automatiquement les anciens GameObject et Component ?
Albert Einstein
Citer : Posté le 12/01/2021 17:28 | #
Non. Écraser une valeur ne delete pas l'ancienne (c'est une des choses à quoi unique_ptr sert).
Citer : Posté le 12/01/2021 17:35 | #
Ok merci pour l'info
Ajouté le 12/01/2021 à 17:51 :
Alors j'ai fais quelques petites modifications sur l'affichage est depuis plus rien ne s'affiche.
avant mon code était comme ça
while (1) {
ML_clear_vram();
for (int i(0); i < scene.AllElemLength; ++i)
{
if (scene.AllElem[i]->x - scene.CamX + scene.AllElem[i]->w > 0 && scene.AllElem[i]->x - scene.CamX < 128 && scene.AllElem[i]->y - scene.CamY + scene.AllElem[i]->h>0 && scene.AllElem[i]->y - scene.CamY < 64) {
for (int j(0); j < scene.AllElem[i]->AllCompoLength; ++j)
{
scene.AllElem[i]->AllCompo[j]->OnUpdate();
}
scene.AllElem[i]->afficher(scene.CamX, scene.CamY);
}
}
GetKey(&key);
}
Et je l'ai changé en ça, car je voulais que l'écran se rafraichi même si aucune touche n'est pressé et depuis plus rien ne s'affiche :
while (1) {
ML_clear_vram();
for (int i(0); i < scene.AllElemLength; ++i)
{
if (scene.AllElem[i]->x - scene.CamX + scene.AllElem[i]->w > 0 && scene.AllElem[i]->x - scene.CamX < 128 && scene.AllElem[i]->y - scene.CamY + scene.AllElem[i]->h>0 && scene.AllElem[i]->y - scene.CamY < 64) {
for (int j(0); j < scene.AllElem[i]->AllCompoLength; ++j)
{
scene.AllElem[i]->AllCompo[j]->OnUpdate();
}
scene.AllElem[i]->afficher(scene.CamX, scene.CamY);
}
}
Sleep(100);
}
Ajouté le 12/01/2021 à 17:52 :
la modification c'est le Getkey à la fin
Ajouté le 12/01/2021 à 17:55 :
Du coup je pense que le problème vient de ML_clear_vram(); qui supprime trop vite et du coup on a pas le temps de voir mais apparemment le Sleep ne fonctionne pas.
Albert Einstein
Citer : Posté le 12/01/2021 18:01 | #
Il faut faire Bdisp_PutDisp_DD() ou ML_display_vram() pour afficher ce que tu as dessiné à l'écran. Avant tu ne t'en rendais pas compte parce que GetKey() le fait pour toi. Mais maintenant il faut que l'appelles tout seul
Citer : Posté le 12/01/2021 18:09 | #
Ha oui en effet !
En plus ça va encore plus vite qu'avant !
C'est trop bien ça !
Ha autre chose aussi (je sais je casse peut-être les pieds de certaines et j'en suis désolé), mais quand je test le programme sur ma Casio Graph 35+E, certaines touches ne sont pas reconnues alors que pourtant j'ai belle et bien faite les modifications du SDK pour que ça soit compatible pour le SH3/SH4
Albert Einstein
Citer : Posté le 12/01/2021 18:15 | # | Fichier joint
J'utilise ces fichier usefull, peut-être que le problème vient de là ?
Albert Einstein
Citer : Posté le 12/01/2021 18:16 | #
Ça c'est simplement parce que GetKey() ne répète les touches qu'après 625 ms (la première fois) et 125 ms (les fois suivantes). Tu peux changer ça aussi, avec Bkey_SetRepeatRate(50, 50) par exemple (je peux me tromper sur le nom de la fonction, c'est de mémoire).
Pour l'autre problème ça ne me dit rien à première vue.
Citer : Posté le 12/01/2021 18:19 | #
Ça c'est simplement parce que GetKey() ne répète les touches qu'après 625 ms (la première fois) et 125 ms (les fois suivantes). Tu peux changer ça aussi, avec Bkey_SetRepeatRate(50, 50) par exemple (je peux me tromper sur le nom de la fonction, c'est de mémoire).
Pour l'autre problème ça ne me dit rien à première vue.
D'accord merci pour tes conseils, mais je pense que je vais garder une vitesse élevé pour avoir plus de fps
(pour l'autre problème, c'est les touches F1 à F6 qui sont pas reconnue alors que le pad "Replay" lui fonctionne)
Albert Einstein
Citer : Posté le 12/01/2021 18:35 | #
Si tu veux des fps constants, utilise des timers, et Gint (parce qu’apparemment ce n'est pas le cas )
C'est possible avec fxlib mais c'est nettement plus chiant