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 » Moteur de déplacement en C
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Moteur de déplacement en C

Posté le 22/01/2016 23:08

Bonjour ou bonsoir à tous !

Comme l'indique le titre, je programme un petit moteur de déplacement pour mes futurs jeux.

Déjà, à tous ceux qui m'ont aidé !


Je suis actuellement en train de faire la gestion des événements en fonction de là ou on se trouve

Par contre le SH4 comptibility tool m'indique ceci : Error 2 : we found more than one KeyDown function !
Au début de usefull.c, il y a à peu près le même code que mon pote m'a passé pour rendre compatible SH4. Le problème c'est que je n'ose pas toucher à usefull parce que sinon je vais faire n'importe quoi et que si je supprime le code de mon pote les valeurs des touches ne sont plus du tout les mêmes

Aussi, lorsque l'on quitte avec EXIT qui est censé mené à la fin du main au return 0, system error.
TLB ERROR
TARGET=00056694
PC=000068CC



Si vous pouviez m'aider ce serait génial
Merci d'avance


~Les sources [mises à jour le 31/01/2016 à 17:55]~

Le code : http://hastebin.com/ohisawiraw.cs

Les sources actuels (enfin fonctionnelles \o/) sont en fichier joint.
Dès fois il y a des trucs bien moches qui ne respectent pas l'indentation et ce genre de chose. C'est normal ils sont destinés à être supprimés alors c'est pour les reconnaître


Un grand merci à Xavier59 qui à résolu mon problème !

Fichier joint


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

Citer : Posté le 24/01/2016 15:00 | #


C'est pareil. C'est juste une notation de tableau qui utilise des pointeurs, c'est comme ça que le compilateur comprend l'array subscript.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 24/01/2016 19:03 | #


C'est une bonne idée mais comment je connais la taille que ça va faire ?
Lephenixnoir Hors ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 24/01/2016 19:05 | #


Ben tes images ont toutes la même taille non ? Quand elles sont déclarées, soit il y a un nombre indiqué soit tu n'as qu'à compter le nombre de valeurs.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 24/01/2016 19:13 | #


Ok donc là ça fait :
{ 0x7d //1
, 0xff //2
, 0xff //3
, 0xff //4
, 0x83 //5
, 0x45 //6
, 0xff //7
, 0xbb //8
, 0xbb //9
, 0x87 //10
, 0x55 //11
, 0x6d //12
, } //Là ça fait 13 ou pas ?

En gros c'est la hauteur de l'image (+1 si la dernière ligne compte)

Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 24/01/2016 19:13 | #


Tu as toujours pas compris que les deux accolades occupent une ligne, on les mets pas sur la même ligne que le début et la fin du code entre les deux accolades x)

{
...
}

La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 24/01/2016 19:15 | #


Non mais là c'était pour compter Elto j'ai pas fait ça dans le code si tu l'avais regardé x)


Kirafi Hors ligne Membre Points: 2180 Défis: 10 Message

Citer : Posté le 24/01/2016 19:44 | #


Tu dois avoir 2x le même nom d'un truc (un tableau ou un variable).
Vérifie que tu n'ai pas initialisé 2 trucs avec le même nom .
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 24/01/2016 19:45 | #


Si si c'était bien ça il était juste au dessus et je croyais l'avoir enlevé
Désolé

Ajouté le 24/01/2016 à 19:57 :
Tout ça est super et je m'améliore beaucoup mais le jeu crash toujours inexplicablement
Et surtout le perso peut être n'importe ou sur l'écran lorsque le crash survient.

Ajouté le 24/01/2016 à 20:09 :
Les hastebin et les sources ont été mis à jour

Ajouté le 24/01/2016 à 21:19 :
Bon. Il crash que lors de l'émulation avec le SDK c'est une bonne nouvelle mais qu'est-ce que c'est chelou
-florian66- Hors ligne Ancien rédacteur Points: 2384 Défis: 20 Message

Citer : Posté le 24/01/2016 21:41 | #


C'est sans doute une fonction non pris en charge par le SDK ...
In Arch, I trust ! And you ?
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 24/01/2016 22:11 | #


Comment ce serait possible ?
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 24/01/2016 22:26 | #


Ce qu'il veut dire, c'est que tu as peut-être utilisé une fonction comme le scanf qui n'est pas supportée dans les librairies Casio (et non, pas le C Casio ).

Sinon, quel crash as-tu et quand survient-il ? Tu peux mettre des breakpoints à chaque ligne jusqu'à voir où le crash survient

Sinon, c'est pas mal comme premier programme, je doute pouvoir faire la même chose sans poser pas mal de questions Mais tu manques toujours de rigueur (que Phenix et DS m'ont imbriquée difficilement) au niveau de la propreté du code (l'aération surtout, il te faut quelques lignes sautés entre certaines parties du code et des espaces entre les noms de variables, les opérateurs et les signes par exemple sur certaines lignes de ton code)
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 24/01/2016 22:47 | #


Non je n'utilise rien de ce genre là.

Il survient n'importe quand

Des quoi ?

Merci J'ai essayé de bien y faire attention pourtant
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 24/01/2016 22:50 | #


Des "breakpoints", si tu cliques sur le côté de la ligne à gauche, ça met un point jaune. Ensuite, tu exécute le programme après le build, tu le lances sur l'émulateur et après, tu appuies autant de fois qu'il le faut sur la flèche jaune en haut pour que ça avance ligne par ligne jusqu'à trouver où ça crash
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 24/01/2016 22:53 | #


Ca va me prendre trois ans
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 25/01/2016 09:00 | #


Non, ça prend 2 minutes
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 25/01/2016 18:42 | #


Bon je verrais ça mais la je n'ai malheureusement pas le temps
-florian66- Hors ligne Ancien rédacteur Points: 2384 Défis: 20 Message

Citer : Posté le 26/01/2016 18:00 | #


J'ai vu qu'à certains endroits, tu appelles ML_display_vram(); et puis après GetKey(&key);
La première fonction (ML_display_vram();) ne sert à rien car GetKey(&key); affiche la VRAM à l'écran en mettant en attente d'appui sur une touche

Pour les touches, tu peux faire un switch(key)
In Arch, I trust ! And you ?
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 26/01/2016 18:45 | #


Je sais que Getkey affiche mais il ne l'afficherait pas au bon moment ^^.

switch(key) mets en pause ou pas ?

Merci flo

Ajouté le 26/01/2016 à 19:55 :
Comment on utilise switch(key); ?
-florian66- Hors ligne Ancien rédacteur Points: 2384 Défis: 20 Message

Citer : Posté le 26/01/2016 21:42 | #


switch(key)
{
case KEY_UP : instruction; [red]break;[/red]
case KEY_DOWN : instruction; break;
...
}


Le switch ne met pas en pause, ça permet aussi de rendre plus lisible ton code
In Arch, I trust ! And you ?
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 26/01/2016 21:47 | #


Le switchest une condition du langage C. Il a une syntaxe un peu particulière mais très pratique !
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 26/01/2016 22:12 | #


Aah je croyais que ça remplaçait le GetKey

Merci c'est plutôt sympa

Ajouté le 28/01/2016 à 12:56 :
J'ai mis en application tout ce que vous m'avez dit (normalement).
Mais je me heurte encore à certains problèmes. Ils sont listés dans le post principal.

Si vous pouviez m'aider ce serait super sympa, merci

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