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
Citer : Posté le 22/01/2016 23:13 | #
Le haste m'apparaît vide et le fichier... il faudrait le changer de nom.
Citer : Posté le 22/01/2016 23:15 | #
Whaaat je recommence ><
Ajouté le 22/01/2016 à 23:17 :
Fichier joint c'est bon et hastebin ne m'apparait pas vide
J'ai mis un deuxième lien
Un beat them all pour les CPC 19
Un jeu de Tank multijoueur en version graphique
Un jeu de boxe rigolo
Le moteur de combat épique d'un RPG
soccer physics : Un jeu de foot totalement wtf !
Survie 1 & 2 te laisseras-tu attraper par la méchante IA ?
Séquestrez les tous avec Catch'em all !
Joué à la calcultarice et pécher ? Facile !
Battle un système de combat dément !!
Débombe pas tout à fait un démineur
Mon mario pour le concours des 10 ans de PC
Casio jump un doodle jump pas comme les autres !
Rush four your life : tu cours ou tu meurs
Cookie clicker ! More cookies MOOORE !
Move et esquive : bouge pour esquiver les ennemis !
Guitar Hero !! Let's rock !
INVASION : Au secours on se fait envahir !
Un devine nombre entièrement customisable (mon 1er jeu)
Un outil pour dessiner des sprites en super drawstat et qui vous le compile pour vous donner un code utilisable dans vos programmes
Un super programme de dessin bourré de trucs funcs
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
Citer : Posté le 22/01/2016 23:23 | #
Laisse pour le hastebin, c'est bien moi : à tous les coups le texte en reçu en https donc j'ai rien
J'ai récupéré l'archive en fichier joint, je regarde.
Citer : Posté le 22/01/2016 23:24 | #
Ok super merci Lephe !
Un beat them all pour les CPC 19
Un jeu de Tank multijoueur en version graphique
Un jeu de boxe rigolo
Le moteur de combat épique d'un RPG
soccer physics : Un jeu de foot totalement wtf !
Survie 1 & 2 te laisseras-tu attraper par la méchante IA ?
Séquestrez les tous avec Catch'em all !
Joué à la calcultarice et pécher ? Facile !
Battle un système de combat dément !!
Débombe pas tout à fait un démineur
Mon mario pour le concours des 10 ans de PC
Casio jump un doodle jump pas comme les autres !
Rush four your life : tu cours ou tu meurs
Cookie clicker ! More cookies MOOORE !
Move et esquive : bouge pour esquiver les ennemis !
Guitar Hero !! Let's rock !
INVASION : Au secours on se fait envahir !
Un devine nombre entièrement customisable (mon 1er jeu)
Un outil pour dessiner des sprites en super drawstat et qui vous le compile pour vous donner un code utilisable dans vos programmes
Un super programme de dessin bourré de trucs funcs
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
Citer : Posté le 22/01/2016 23:29 | #
D'abord, la boucle (ligne 274) est mal organisée : tu devrais avoir quelque chose comme
{
// dessin
// evenements
}
au lieu de dessiner une fois avant la boucle et plusieurs fois à l'intérieur. Principe DRY (Don't Repeat Yourself).
Au passage :
Tu peux écrire plus simplement :
Enlève les parties if(X != X2) et if(Y != Y2) et tout semble normal. À quoi servent donc ces conditions ?
Citer : Posté le 22/01/2016 23:34 | #
Ah oui je n'avais pas pensé à un truc aussi bête ^.^'
Je n'étais pas trop sûr que ça fonctionnait je vais faire comme ça maintenant.
Ce sont les "animations" du déplacement, ça évite qu'on ai l'impression que le personnage se téléporte.
Merci Lephe mais essaye de bouger un peu tu verras que ça va crasher
Un beat them all pour les CPC 19
Un jeu de Tank multijoueur en version graphique
Un jeu de boxe rigolo
Le moteur de combat épique d'un RPG
soccer physics : Un jeu de foot totalement wtf !
Survie 1 & 2 te laisseras-tu attraper par la méchante IA ?
Séquestrez les tous avec Catch'em all !
Joué à la calcultarice et pécher ? Facile !
Battle un système de combat dément !!
Débombe pas tout à fait un démineur
Mon mario pour le concours des 10 ans de PC
Casio jump un doodle jump pas comme les autres !
Rush four your life : tu cours ou tu meurs
Cookie clicker ! More cookies MOOORE !
Move et esquive : bouge pour esquiver les ennemis !
Guitar Hero !! Let's rock !
INVASION : Au secours on se fait envahir !
Un devine nombre entièrement customisable (mon 1er jeu)
Un outil pour dessiner des sprites en super drawstat et qui vous le compile pour vous donner un code utilisable dans vos programmes
Un super programme de dessin bourré de trucs funcs
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
Citer : Posté le 22/01/2016 23:41 | #
Je peux pas tester, je suis à l'internat >_<
Sinon tu peux avoir une structure de ce type :
while(1)
{
// dessin
if(distance_a_parcourir_en_x != 0)
{
// ajuster les coordonnees du dessin et la variable
}
else
{
// evenements
if(key == key_right) distance_a_parcourir_en_x = /* largeur d'une tile */;
}
}
Tu vois le principe ? Ça me semble plus simple -- et souple.
Citer : Posté le 22/01/2016 23:47 | #
Ah mince >< Mais j'ai remarqué que c'était quand on allait dans un mur que ça crashait
Mais pas tout le temps c'est bizarre
En gros c'est ce que je fais mais pas dans cet ordre
Un beat them all pour les CPC 19
Un jeu de Tank multijoueur en version graphique
Un jeu de boxe rigolo
Le moteur de combat épique d'un RPG
soccer physics : Un jeu de foot totalement wtf !
Survie 1 & 2 te laisseras-tu attraper par la méchante IA ?
Séquestrez les tous avec Catch'em all !
Joué à la calcultarice et pécher ? Facile !
Battle un système de combat dément !!
Débombe pas tout à fait un démineur
Mon mario pour le concours des 10 ans de PC
Casio jump un doodle jump pas comme les autres !
Rush four your life : tu cours ou tu meurs
Cookie clicker ! More cookies MOOORE !
Move et esquive : bouge pour esquiver les ennemis !
Guitar Hero !! Let's rock !
INVASION : Au secours on se fait envahir !
Un devine nombre entièrement customisable (mon 1er jeu)
Un outil pour dessiner des sprites en super drawstat et qui vous le compile pour vous donner un code utilisable dans vos programmes
Un super programme de dessin bourré de trucs funcs
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
Citer : Posté le 23/01/2016 09:14 | #
J'ai jeté un coup d’œil rapide au code et tu peux optimiser pas mal ton code
Tu peux mettre toute la compatibilité dans un autre fichier source
et tes sprites aussi
Citer : Posté le 23/01/2016 09:17 | #
J'y ai pensé et je vais le faire mais avant il faut que je trouve comment
Un beat them all pour les CPC 19
Un jeu de Tank multijoueur en version graphique
Un jeu de boxe rigolo
Le moteur de combat épique d'un RPG
soccer physics : Un jeu de foot totalement wtf !
Survie 1 & 2 te laisseras-tu attraper par la méchante IA ?
Séquestrez les tous avec Catch'em all !
Joué à la calcultarice et pécher ? Facile !
Battle un système de combat dément !!
Débombe pas tout à fait un démineur
Mon mario pour le concours des 10 ans de PC
Casio jump un doodle jump pas comme les autres !
Rush four your life : tu cours ou tu meurs
Cookie clicker ! More cookies MOOORE !
Move et esquive : bouge pour esquiver les ennemis !
Guitar Hero !! Let's rock !
INVASION : Au secours on se fait envahir !
Un devine nombre entièrement customisable (mon 1er jeu)
Un outil pour dessiner des sprites en super drawstat et qui vous le compile pour vous donner un code utilisable dans vos programmes
Un super programme de dessin bourré de trucs funcs
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
Citer : Posté le 23/01/2016 09:22 | #
En gros c'est ce que je fais mais pas dans cet ordre
Pas vraiment : toi tu fais un tour de boucle par tile tandis que moi je fais un tour de boucle par pixel.
Je comprends à peu près tout le code mais ça nécessite un bon coup de nettoyage, tu peux beaucoup simplifier... (par exemple tu ne devrais pas avoir de variables X22 et Y22)... par expérience, je suis toujours mal à l'aise quand je me rends compte que mon code n'est pas trivial parce que c'est là que les bugs commencent à sortir.
Et fais gaffe à ton indentation, je sais parfois pas où j'en suis parce qu'il y a des lignes par indentées uniformément, des niveaux à quatre espaces et des niveaux à un... est-ce si compliqué d'être rigoureux dans l'indentation pour que tant de monde la néglige ?
Citer : Posté le 23/01/2016 09:29 | #
Oui mais mes variables X et Y vont de 1 à 16. Donc pour déplacer le personnage pixel par pixel autrement ça va être compliqué (a moins que j'ai pas compris du tout ce que tu voulais dire)
Pourquoi je ne devrais pas ? Trivial ?
l'indentation c'est ça ?
while (1)
{
bla
bla
if (bla)
{
blo
blo
}
}
Si oui j'ai pourtant bien fait attention à le faire
Un beat them all pour les CPC 19
Un jeu de Tank multijoueur en version graphique
Un jeu de boxe rigolo
Le moteur de combat épique d'un RPG
soccer physics : Un jeu de foot totalement wtf !
Survie 1 & 2 te laisseras-tu attraper par la méchante IA ?
Séquestrez les tous avec Catch'em all !
Joué à la calcultarice et pécher ? Facile !
Battle un système de combat dément !!
Débombe pas tout à fait un démineur
Mon mario pour le concours des 10 ans de PC
Casio jump un doodle jump pas comme les autres !
Rush four your life : tu cours ou tu meurs
Cookie clicker ! More cookies MOOORE !
Move et esquive : bouge pour esquiver les ennemis !
Guitar Hero !! Let's rock !
INVASION : Au secours on se fait envahir !
Un devine nombre entièrement customisable (mon 1er jeu)
Un outil pour dessiner des sprites en super drawstat et qui vous le compile pour vous donner un code utilisable dans vos programmes
Un super programme de dessin bourré de trucs funcs
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
Citer : Posté le 23/01/2016 09:39 | #
else direction = 4;
Par
X--;
else
direction = 4;
Citer : Posté le 23/01/2016 09:42 | #
Non Intelligide, c'est pas du tout ce que je voulais dire >_<
if (direction == 2) ML_bmp_or_cl(persoDROITE, X*8-7, Y*8-15, 7, 12);
if (direction == 3) ML_bmp_or_cl(persoFACE, X*8-7, Y*8-15, 7, 12);
if (direction == 4) ML_bmp_or_cl(persoGAUCHE, X*8-7, Y*8-15, 7, 12);
ML_bmp_or_cl(cadrillage, 0, 0, 128, 64); //C'est encore pour les tests, enlevez le si ça vous gène
//Ces indications sont aussi pour les tests
sprintf (buffer,"%d", X);
PrintXY(2, 57,buffer,0);
sprintf (buffer,"%d", Y);
PrintXY(10, 57,buffer,0);
ML_display_vram();
Les lignes au milieu ne sont pas au même niveau.
if (X != X2) {
X2 = X2*8-7;
if (direction == 2) X22 = X2 +7;
if (direction == 4) X22 = X2 - 7;
Un espace ne fait pas un niveau d'indentation dans le while.
Des choses comme ça...
Et trivial ça veut dire évident, dont la compréhension est immédiate.
Citer : Posté le 23/01/2016 10:02 | #
D'accord Je n'avais pas fait attention, pourtant j'ai essayé
Un beat them all pour les CPC 19
Un jeu de Tank multijoueur en version graphique
Un jeu de boxe rigolo
Le moteur de combat épique d'un RPG
soccer physics : Un jeu de foot totalement wtf !
Survie 1 & 2 te laisseras-tu attraper par la méchante IA ?
Séquestrez les tous avec Catch'em all !
Joué à la calcultarice et pécher ? Facile !
Battle un système de combat dément !!
Débombe pas tout à fait un démineur
Mon mario pour le concours des 10 ans de PC
Casio jump un doodle jump pas comme les autres !
Rush four your life : tu cours ou tu meurs
Cookie clicker ! More cookies MOOORE !
Move et esquive : bouge pour esquiver les ennemis !
Guitar Hero !! Let's rock !
INVASION : Au secours on se fait envahir !
Un devine nombre entièrement customisable (mon 1er jeu)
Un outil pour dessiner des sprites en super drawstat et qui vous le compile pour vous donner un code utilisable dans vos programmes
Un super programme de dessin bourré de trucs funcs
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
Citer : Posté le 23/01/2016 16:08 | #
Utilise des tabulations, configure l'éditeur à 4 ou 8 espaces de largeur, tu verras ça te simplifiera beaucoup la vie.
Citer : Posté le 24/01/2016 11:25 | #
Je vais faire ça merci Lephe
Un beat them all pour les CPC 19
Un jeu de Tank multijoueur en version graphique
Un jeu de boxe rigolo
Le moteur de combat épique d'un RPG
soccer physics : Un jeu de foot totalement wtf !
Survie 1 & 2 te laisseras-tu attraper par la méchante IA ?
Séquestrez les tous avec Catch'em all !
Joué à la calcultarice et pécher ? Facile !
Battle un système de combat dément !!
Débombe pas tout à fait un démineur
Mon mario pour le concours des 10 ans de PC
Casio jump un doodle jump pas comme les autres !
Rush four your life : tu cours ou tu meurs
Cookie clicker ! More cookies MOOORE !
Move et esquive : bouge pour esquiver les ennemis !
Guitar Hero !! Let's rock !
INVASION : Au secours on se fait envahir !
Un devine nombre entièrement customisable (mon 1er jeu)
Un outil pour dessiner des sprites en super drawstat et qui vous le compile pour vous donner un code utilisable dans vos programmes
Un super programme de dessin bourré de trucs funcs
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
Citer : Posté le 24/01/2016 11:32 | #
Pour la gestion de tes sprites, tu les mets dans un tableau dans l'ordre :
{code_du_sprite_persoDOS},
{code_du_sprite_persoDROITE},
{code_du_sprite_persoFACE},
{code_du_sprite_persoGAUCHE},
};
et tu peux faire
Ca permet d'enlever les if ...
Citer : Posté le 24/01/2016 14:57 | #
Heu ce ne serait pas plutôt (ou alors c'est pareil ?)
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)
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)
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.