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

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [Projet] Elphorina
Potter360 Hors ligne Rédacteur Points: 682 Défis: 0 Message

[Projet] Elphorina

Posté le 30/12/2020 12:25

Bonjour !
Je suis en train de créer un jeu vidéo pour Graph Monochrome, je vous laisse pour l'histoire avec le README du dépôt Git :
Elphorina est un jeu pour Casio Graph Monochromes.

L'histoire : Dans le royaume d'Elphorina, deux camps se livrent une bataille sans merci pour une terre : le comté de Hannenbourg.

Vous êtes le réconciliateur, c'est-à-dire que vous avez le pouvoir de réconcilier les camps ennemis.

Vous devez donc vous rendre dans le comté d'Hannenbourg, pour arrêter cette guerre, donc vous vous enfermez 2 mois dans votre maison pour réviser vos secrets de magiciens.

Au bout de ces 2 mois, on a oublié de vous dire un petit détail : le royaume a été ravagé par une tempête, qui a tout détruit sur son passage.

Votre but ? Le reconstruire pour pouvoir passer.

Mais vous ne pourrez pas toujours ne mettre qu'un bout de bois ! Il faudra faire preuve d'une grande ingéniosité pour reconstruire le chemin...



Je vais avancer progressivement là dessus, en attendant vous pouvez trouver le dépôt (mis à jour régulièrement) ici : https://gitea.planet-casio.com/Potter360/Elphorina

Enjoy


Potter360 Hors ligne Rédacteur Points: 682 Défis: 0 Message

Citer : Posté le 01/01/2021 12:01 | #


La je ne peux pas mais je vais tester
Hypothèse : il faudra afficher le perso à y=16 car 16+24 = 40 : le perso s'affiche donc de 16 à 40 puis en bas de 40 à 56, il ya le bloc ...

Ajouté le 02/01/2021 à 20:01 :
Mon hypothèse est validée, ca a marché !
Le résultat final :
(Apparement, le screen shot sur Gint est compliqué, donc désolé pour la qualité !

Ajouté le 02/01/2021 à 20:35 :
D'ailleurs, y-a-til un moyen de faire en sorte que la caméra suive le personnage (que si le personnage arrive au bout de l'écran, la camera avance)
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Dark storm Hors ligne Membre d'honneur Points: 11367 Défis: 176 Message

Citer : Posté le 02/01/2021 20:51 | #


Oui : avec les bonnes variables, et en réfléchissant un peu.
Pour ce dernier point, on ne pourra pas le faire pour toi.

Fais un schéma sur papier, illustre les variables sur le dessin (position du monde, position de la caméra, position du joueur, coordonnées à l'écran), et tu verra qu'avec quelques soustractions tu peux le faire tout seul
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Potter360 Hors ligne Rédacteur Points: 682 Défis: 0 Message

Citer : Posté le 02/01/2021 21:02 | #


Je vais voir ca.
Hypothèse : faire une variable ybloc=0, mettre le 1er bloc à ybloc puis le 2ème à ybloc+16 puis le 3ème à ybloc+32...
Et quand x=128( fin de l'écran) enlever 1 à ybloc.
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Dark storm Hors ligne Membre d'honneur Points: 11367 Défis: 176 Message

Citer : Posté le 02/01/2021 21:04 | #


Ça peut être une solution. Ce n'est pas la seule, mais c'est un bon début o/
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Potter360 Hors ligne Rédacteur Points: 682 Défis: 0 Message

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


Bon, et bien je vais coder ca
Merci !
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Dark storm Hors ligne Membre d'honneur Points: 11367 Défis: 176 Message

Citer : Posté le 02/01/2021 21:11 | #


Spoiler : la prochaine fois, code-le directement.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Potter360 Hors ligne Rédacteur Points: 682 Défis: 0 Message

Citer : Posté le 02/01/2021 21:41 | #


Oui, désolé !

Ajouté le 02/01/2021 à 22:37 :
Après avoir marché quelque temps dans le jeu, j'ai un vilain SysError :
J'ai cherché, mais je ne m'y connais pas et je ne sais pas dechiffrer les SysError...

Ajouté le 02/01/2021 à 22:38 :
(Désolé pour la qualité)
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Lephenixnoir Hors ligne Administrateur Points: 19605 Défis: 142 Message

Citer : Posté le 02/01/2021 22:47 | #


La fonction à l'adresse 003018ca (tu peux la trouver dans build-fx/map) a tenté de lire l'adresse mémoire 0xfffffeb1 n'importe comment. C'est peut-être un entier de valeur -335 que tu as pris pour un pointeur.
Potter360 Hors ligne Rédacteur Points: 682 Défis: 0 Message

Citer : Posté le 03/01/2021 12:56 | #


Pour le SysError, je ne trouve vraiment pas, tu peux trouver le code sur le Gitea du projet.
En me balladant dans le jeu, j'ai trouvé un nouveau SysError :



Voici le résultat sinon !



Ajouté le 04/01/2021 à 17:46 :
Niveau SysError, je ne trouve pas le problème, le code est sur Gitea : https://gitea.planet-casio.com/Potter360/Elphorina

Ajouté le 04/01/2021 à 19:34 :
Pour un entier de -335, à la limite je pourrai avoir xref, mais je ne vois pas où il a pu se confondre avec un pointeur...

Ajouté le 05/01/2021 à 18:54 :
Y a til moyen de récupérer le nombre d'objets dans :
struct object ListOfObjects[10] = {
        { &img_bloc, 55 , bloc , true, false, 16, &ListOfObjects[1] },
        { &img_bloc, 55 , bloc , false, false,32, &ListOfObjects[2] },
        { &img_bloc, 55 , bloc , false, false,48, &ListOfObjects[3] },
        { &img_bloc, 55 , bloc , false, false,64, &ListOfObjects[4] },
        { &img_bloc, 55 , bloc , false, false,80, &ListOfObjects[5] },
        { &img_bloc, 55 , bloc , false, false,96, &ListOfObjects[6] },
        { &img_bloc, 55 , bloc , false, false,112,&ListOfObjects[7] },
        { &img_bloc, 55 , bloc , false, false,128,&ListOfObjects[8] },
        { &img_bloc, 55 , bloc , false, false,144,&ListOfObjects[9] },
        { &img_bloc, 55 , bloc , false, true, 160,&ListOfObjects[0] },
};
?

Ajouté le 05/01/2021 à 19:44 :
Ou en tout cas de faire une boucle for (i=0;i=[nombre_d'objets];i++)
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Kbd2 Hors ligne Membre Points: 239 Défis: 0 Message

Citer : Posté le 05/01/2021 20:59 | #


sizeof(ListOfObjects) / sizeof(struct object);
(Assuming ListOfObjects is used directly without being a function parameter)
Potter360 Hors ligne Rédacteur Points: 682 Défis: 0 Message

Citer : Posté le 06/01/2021 16:13 | #


Release :J'ai changé le système d'affichage, avec une liste d'objets.
Certains me diront KISS mais je trouve ça plus pratique !
Le lien : https://gitea.planet-casio.com/Potter360/Elphorina
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Kbd2 Hors ligne Membre Points: 239 Défis: 0 Message

Citer : Posté le 06/01/2021 21:14 | #


I noticed you had
for(i=0;i<=(sizeof(ListOfObjects) / sizeof(struct object));i++)
in your code - this will result in a crash eventually. The <= should just be a <.
Potter360 Hors ligne Rédacteur Points: 682 Défis: 0 Message

Citer : Posté le 07/01/2021 08:17 | #


Oh thanks !
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Thedringe Hors ligne Membre Points: 2 Défis: 0 Message

Citer : Posté le 08/01/2021 15:37 | #


Bonjour, jai essaye de telecharger avec le g1a sur gitea, apparement c'est cense s'arreter quand il n'ya plus de blocs mais ca continue, c'est normal ?
Potter360 Hors ligne Rédacteur Points: 682 Défis: 0 Message

Citer : Posté le 08/01/2021 15:43 | #


Oui, c'est normal, j'essaye de trouver depuis tout à l'heure le bug mais je trouve pas... Petit appel aux gens qui s'y connaissent
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Thedringe Hors ligne Membre Points: 2 Défis: 0 Message

Citer : Posté le 08/01/2021 15:44 | #


Ok, je vais attendre que tu trouve le bug ou que les gens qui s'y connaissent le trouvent
Potter360 Hors ligne Rédacteur Points: 682 Défis: 0 Message

Citer : Posté le 09/01/2021 16:39 | #


Je ne trouve pas le problème, bizarre...

Ajouté le 10/01/2021 à 19:22 :
HELP !
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Dark storm Hors ligne Membre d'honneur Points: 11367 Défis: 176 Message

Citer : Posté le 10/01/2021 20:09 | #


On te répondra quand tu aura décrit et isolé ton problème, ce que tu as fait, ce que tu n'a pas fait, que tu pense faire, et prouvé que t'as un minimum bossé avant que les autres ne le fassent pour toi.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Potter360 Hors ligne Rédacteur Points: 682 Défis: 0 Message

Citer : Posté le 10/01/2021 21:15 | #


Les objets sont definis entre autre par une bool isCommenced et isFinish (isCommenced indique si le bloc commence une ligne de blocs,donc si il y a un bloc avant, et isFinish si il ya un bloc après)
Le personnage est defini par entre autre isWalkableTop et isWalkableBack, je vous laisse comprendre
Donc dans mon code j'ai : désolé pour l'indentation dégueulasse, ce n'est pas comme ca dans mon code)
                 current_player->isWalkableTop = true;
        for(i=0;i<=(sizeof(ListOfObjects) / sizeof(struct object));i++)
        {
                if(current_player->x == xref+current_object->XrefAdd && current_object->isFinish == true)
{
                 current_player->isWalkableTop = false;
                
}
                }


Ici isWalkableTop = true au départ, et si la position x du joueur est la meme que celle du bloc selectionné et que ce bloc a sa variable isFinish selectionée, alors on ne peut pas marcher donc isWalkableTop = false.
Ensuite j'ai juste : if(isWalkableTop = true)
xref=xref+1

Je ne vois pas où ca coince...
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !
Lephenixnoir Hors ligne Administrateur Points: 19605 Défis: 142 Message

Citer : Posté le 10/01/2021 21:17 | #


if(isWalkableTop = true) n'est pas une condition, ça assigne true à la variable avant de la tester (auquel cas elle est vraie puisque tu viens de la mettre à true).

Ajouté le 10/01/2021 à 21:18 :
Pour information sous GCC, avec -Wall -Wextra tu as des warnings pour ça (la syntaxe habituelle est d'écrire if((isWalkable = true)) pour montrer que c'est fait exprès.)
Potter360 Hors ligne Rédacteur Points: 682 Défis: 0 Message

Citer : Posté le 10/01/2021 21:24 | #


Non, en fait je me suis trompé dans mon message, j'ai bien mis ==...
Hop là... toi qui lis cette signature... tu pourrais aussi aller voir mon projet Elphorina, un jeu de RPG-building !

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