Pages: 1 [2]   Bas de page
Imprimer
Auteur Fil de discussion: [Résolu] Ajouter ennemis, score, levels !  (Lu 3543 fois)
0 Membres et 1 Invité sur ce fil de discussion.
angeredil Hors ligne
Full Member
***
Messages: 118


Voir le profil
Patience est l'écho du temps !

« Réponse #15 : 12 Juin 2008, 13:02:20 »

J'ai rajoutée une fonction affichageScore que je déclare avant la fonction main :

Code:
//Mes fonctions
void MoveMario(void);
void scroll();
void CheckCollisions(void);
void placecoins();
void deletesprite(u8);
void affichageScore();

Fonction affichage du score :

Code:
//----------Fonction affichageScore
void affichageScore(){
   //Condition score
if(collision > 0){
score = score + 10;
}
}   

Et j'ai mis affichageScore(); dans la boucle de la fonction main :

Code:
while(1) // Commande qui synchronise la boucle infinie "while" (tant que) avec le rafraichissement de l'écran (60 fps = images par secondes).
{
MoveMario();
scroll();
affichageScore();
PA_WaitForVBL();
}

Si ce n'est pas très clair je peux te mettre le code entier (enfin jusqu'à la partie affichageScore...)!
« Dernière édition: 12 Juin 2008, 13:10:09 par angeredil » Journalisée
morukutsu Hors ligne
Sr. Member
****
Messages: 499


Voir le profil
Noctambule

« Réponse #16 : 12 Juin 2008, 15:27:57 »

C'est déjà un bon début, mais ça ne changera rien Langue
Code:
// Affiche le score 
PA_OutputText(1,2,20, "score : %d", score);
Il faut déplacer ça dans la fonction affichage score.
Journalisée
angeredil Hors ligne
Full Member
***
Messages: 118


Voir le profil
Patience est l'écho du temps !

« Réponse #17 : 12 Juin 2008, 15:58:43 »

Ok, j'ai fait la modification ! Azn

Code:
//----------Fonction afficheScore
void afficheScore(){
   //Condition score
if(collision > 0){
score = score + 10;
}
// Affiche le score
PA_OutputText(1,2,20, "score : %d", score); 

Le souci que j'ai, c'est que sans que je fasse bouger Mario, le score s'incrément de +10 mais sans limite. Si je laisse il pourrait aller jusque 10 000 voir plus.

J'ai l'impression que le problème vient de la condition. Il ne comprend pas le fait que Mario doit toucher un coin (une pièce..) pour obtenir ces points d'ailleurs l'ancienne erreur de la condition c'était si j'enlève " > 0" :


Code:
d:/Angeredil/creaGame/OriginalNds2/source/main.c: In function 'afficheScore':
d:/Angeredil/creaGame/OriginalNds2/source/main.c:320: warning: the address of 'collision', will always evaluate as 'true'

Pour l'instant c'est ce qui pause problème je pense. Mais comment mettre une condition pour que le compilateur comprenne qu'il faut que "collision touche coin" ou "mario.collision touche coin". Enfin quelque chose comme ça ! Moi les conditions c'est moins mon fort ...
Journalisée
PypeBros Hors ligne
Hero Member
*****
Messages: 707


Voir le profil WWW
Posez-vous les bonnes questions

« Réponse #18 : 12 Juin 2008, 17:00:31 »

bin oui. "collision", c'est une fonction, chez toi!
"if (collision > 0)" veut donc dire "if (address_of_collision_function >0)" et "if (collision)"

Si tu mettais simplement "score = score + 10" dans ta boucle, après "coin.alive=false;" ce serait déjà plus clair, non ?
Journalisée

angeredil Hors ligne
Full Member
***
Messages: 118


Voir le profil
Patience est l'écho du temps !

« Réponse #19 : 12 Juin 2008, 17:13:18 »

C'est génial ça fonctionne !

J'ai virée quelques trucs et j'ai ajoutée sous coin.alive... Wink
Journalisée
angeredil Hors ligne
Full Member
***
Messages: 118


Voir le profil
Patience est l'écho du temps !

« Réponse #20 : 13 Juin 2008, 08:18:31 »


Hi !

Merci PypeBros & merci à toi Morukutsu ! Wink
Journalisée
angeredil Hors ligne
Full Member
***
Messages: 118


Voir le profil
Patience est l'écho du temps !

« Réponse #21 : 16 Juin 2008, 14:20:20 »

Rslt,  Azn

Pour faire suite...
J'ai décidée de finir un peu cette partie de jeu Mario, là j'ai attaquée la phase création d'ennemis.
Voici les lignes de codes que j'ai utilisée en essayant de faire pareil que pour Mario :

Création du sprite ennemi :

Code:
//Création des ennemis	
PA_CreateSprite(0, ennemi.sprite,(void*)ennemi_Sprite, OBJ_SIZE_32X32,1, 0, ennemi.x1, ennemi.y1);

La structure (j'ai rajoutée sprite, px1, py1 sinon j'avais des erreurs) :
Code:
typedef struct{				      // Structure de collision entre deux ennemis
u8 x1, y1;       // Point de l'hitbox en p1
u8 x2, y2;         // Point de l'hitbox en p2
u8 sprite;
u8 px1, py1;
}sHitBoxRect;

sHitBoxRect ennemi;


Sinon, j'ai toujours "RectCollisions" comme fonction définit auparavant pour les ennemis.
Seulement, le souci que je rencontre c'est que j'ai l'ennemi qui s'affiche à la place de "Mario".
L'ennemi que j'ai ajoutée, récupère les coordonnées de Mario.

Si jamais quelqu'un a une idée !
Journalisée
angeredil Hors ligne
Full Member
***
Messages: 118


Voir le profil
Patience est l'écho du temps !

« Réponse #22 : 16 Juin 2008, 16:07:42 »

Voici l'émulateur ! Undecided


* Ajout_ennemi.JPG (21.31 Ko, 259x466 - vu 114 fois.)
Journalisée
Mony Hors ligne
Hero Member
*****
Messages: 551


Voir le profil WWW
zOMG !!!1

« Réponse #23 : 16 Juin 2008, 16:18:00 »

L'image est dans la bonne résolution ?
Journalisée

Membre du club des joyeux guitaristes pas aidés et codeurs avec les pieds de Dev-Fr et pas du club des pieds pas guitaristes aidés de joyeux codeurs Dev-fr...

angeredil Hors ligne
Full Member
***
Messages: 118


Voir le profil
Patience est l'écho du temps !

« Réponse #24 : 16 Juin 2008, 17:09:36 »

Oui, j'ai un souci dans mon code. Embarrassed

J'ai trois image sur l'ennemi.

J'ai demandée à ce qu'il affiche l'image 1, mais il m'affiche ça !

De bas en haut ça doit donner 0, 1, 2...

J'ai l'impression que ça vient du objet size !

Il me semble que ça correspond à l'argument 5 (le premire 1), voici la ligne de code qui correspond :


Code:
PA_CreateSprite(0, ennemi.sprite,(void*)ennemi_Sprite, OBJ_SIZE_32X32,[b]1[/b], 0, ennemi.x1, ennemi.y1);


* ennemi.gif (0.18 Ko, 16x48 - vu 113 fois.)
« Dernière édition: 16 Juin 2008, 17:13:12 par angeredil » Journalisée
Minishlink Hors ligne
Mega Member
***
Messages: 1439


Voir le profil WWW
Quand on veut, on peut !

« Réponse #25 : 16 Juin 2008, 17:34:27 »

Je pense qu'il faudrait que ça soit :
Code
(c):
PA_CreateSprite(0, ennemi.sprite,(void*)ennemi_Sprite, OBJ_SIZE_16X16,1, 0, ennemi.x1, ennemi.y1);
Bon après j'ai pas beaucoup réfléchi mais je pense que c'est ça...
Journalisée

Mony Hors ligne
Hero Member
*****
Messages: 551


Voir le profil WWW
zOMG !!!1

« Réponse #26 : 16 Juin 2008, 17:40:19 »

Minishlink a raison, le sprite est en 16x48, donc, tu dois mettre sa ligne de code Wink
Journalisée

Membre du club des joyeux guitaristes pas aidés et codeurs avec les pieds de Dev-Fr et pas du club des pieds pas guitaristes aidés de joyeux codeurs Dev-fr...

angeredil Hors ligne
Full Member
***
Messages: 118


Voir le profil
Patience est l'écho du temps !

« Réponse #27 : 16 Juin 2008, 17:41:28 »

Merci, Minishlink ! Wink

Oui, c'est ça ! Je l'avais déjà, mais je me souvenais plus ce que j'avais mis !


Journalisée
Pages: 1 [2]   Haut de page
Imprimer

Aller à: