Mon premier jet en C... Ce n'est pas brillant mais faut ben commencer...
On peut juste bouger le personnage à l'aide des flèches. Les collisions sont gérée et je travaille sur "comment rentrer dans la petite maisons ??"
L'arbre est issu d'une banque de sprite que j'ai trouvé sur ce site. Et la maisons est constituées de tileset que j'ai faite grâce à un tuto (sur ce site également)
Le premier fichier (*.g1a) est le "jeu" le deuxième correspond au sources.
Mon personnage est animé lors des déplacements
Améliorations à venir
peut-être...
-Possibilité d'entrer dans le bâtiment.⇒Fait
-Gestion de la course par la pression d'une touche du Replay et de Shift.
-gestion de l'intérieur du bâtiment
-nouveau style de maisons en brique
-système d'énigme, interrupteur, histoire,...
-armes, et système de combat
-map plus évoluées : herbes, cailloux, d'autres arbres et artéfacts
map_draw() devrait appeler ML_display_vram(). Sinon, comment ce qui est dessiné pourrait-il être visible à l'écran ? (Hint : c'est GetKey() qui affiche la VRAM à l'écran, tu peux "compter dessus" si tu veux et ne pas appler ML_display_vram() toi-même, mais du coup si tu n'appelles pas GetKey() on ne verra rien. Je ne conseille pas.)
Et supprime-moi (ou déplace, bref) ces lignes de dessin qui n'ont rien à faire là puisqu'on n'est pas dans la fonction map_draw() !
Maintenant que dirais-tu de stocker ta map dans un double tableau (une matrice) pour ne pas avoir à hardcoder les coordonnées dans map_test() et le case KEY_CTRL_ALPHA ?
/* Une map de 4*4 avec des murs */
int map[4][4] = {
{ 1, 1, 1, 1 },
{ 1, 0, 0, 1 },
{ 1, 0, 0, 1 },
{ 1, 1, 1, 1 },
};
Eh bien actuellement tu as « hardcodé » les maps dans le code, c'est-à-dire que tes fonctions ne marchent que pour deux maps précises. Pour changer les maps, tu dois changer le code.
On peut faire beaucoup mieux. On peut écrire un code qui marche avec toutes les maps, et ensuite changer juste la map. Tu as d'un côté le code universel, de l'autre les données de la map. Quand tu veux faire des modifications, seules les données ont besoin d'être modifiées. C'est indispensable si tu veux avoir un jeu correct.
Et donc, je te propose de mettre les données de la map dans une matrice et d'écrire des fonctions universelles pour gérer la map, qui au lieu d'hardcoder (ie. de mentionner explicitement) la position des murs, des warps, etc. vont les lire dans la matrice.
C'est pas très difficile ; si tu veux savoir si la case (x,y) est occupée tu regardes si map[y][x] vaut 1. Ça par exemple tu peux le faire dans map_test().
En première approche, ne te préoccupe pas de ALPHA, essaie juste de voir si tu peux détecter les obstacles comme ça. Du coup...
1. Tu crées la matrice de la map
2. Tu garde en mémoire un x et un y qui vont de 1 en 1 (comme les cases du tableau)
3. Tu testes la présence d'obstacles en lisant la matrice
Est-ce que ça t'aide ? Beaucoup plus de détails sont donnés sur ce topic.
J'ai compris le principe, mais je ne sais pas le mettre en place... Il faut que je créer un matrice, ok... Ensuite je met dans la matrice toutes les cases de ma map... mais c'est pas forcément régulier : mon perso de déplace de 8 en 8 mais mes tiles font 16 par 16 et certains sprites carrément autre choses...
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