AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Ennemis et sources de sawns

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
RegelePisicilor
Pas mal
avatar

Messages : 34
Projet Actuel : Du shoot, du shoot et encore du shoot!

Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!

MessageSujet: Ennemis et sources de sawns   Lun 18 Jan 2016 - 10:07

Salut à tous,

j'ai le problème suivant, à savoir que dans mon jeu je fais spawn mes ennemis de plusieurs endroits différents, que je vais identifier ici comme des sources.

Je voudrais que lorsqu'un ennemi apparait de la source 1 disons, il soit identifié comme appartenant à cette source.

En effet, l'idée est que le joueur, pour passer au niveau suivant doit ouvrir une double porte qui ne s'active que lorsque les ennemis sont tous éliminés. Mais, éliminer tous les ennemis d'une source ne débloque qu'une porte, or pour en ouvrir les deux, il doit flinguer les ennemis des 2 sources.

Ce qu'il y a pour le moment, c'est que j'ai des objets ennemis et des objets de spawn, mais lorsque les ennemis spawn, ils ne sont pas identifiés comme provenant d'une source particulière.

Le plus simple serait de créer des ennemis pour la source 1 genre obj_enemy1Source1 par exemple, mais sur du long terme, dans la conception ça prendrait trop de temps et je risque de me retrouver avec autant d'ennemis1 que de sources susceptibles d'en faire spawn.

De plus, chaque source génère aléatoirement tel ou tel ennemi donc je ne pas prévoir à l'avance combien d'ennemi1 ou ennemi2 par exemple va devoir être tué pour ouvrir une porte.

Dans l'idée, je voudrais que chaque ennemi qui spawn d'une source reçoive métaphoriquement parlant, un marqueur, comme ça je n'aurai qu'à dire, si 5 ennemis de source1 sont morts, alors tu ouvres la porte liée à la source une.

(je conçois parfaitement qu'entre ma précédente question et celle-ci, je me lance de vrais casse-têtes!)

J'espère avoir été clair dans mon explication, je vous remercie par avance!
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2610
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 10:16

La méthode qui me vient en tête serait d'écrire, dans l'objet de spawn :
Code:
ins_ennemi=instance_create(x,y,obj_ennemi_1) //stocke l'id de l'objet que tu créé dans la variable locale ins_ennemi
ins_ennemi.source=1 //dans le cas de la source 1

L'objet obj_ennemi_1 que tu viens de créer aura une variable source qui portera le numéro de la source.

_________________
Cliquez pour accéder aux topics dédiés !
   
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
avatar

Messages : 3324
Localisation : Dans une canonnière wookie.
Projet Actuel :
Wyvup
SpaceShift
Centauri-France


MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 10:18

Linky439 a écrit:
La méthode qui me vient en tête serait d'écrire, dans l'objet de spawn :
Code:
ins_ennemi=instance_create(x,y,obj_ennemi_1) //stocke l'id de l'objet que tu créé dans la variable locale ins_ennemi
ins_ennemi.source=1 //dans le cas de la source 1

L'objet obj_ennemi_1 que tu viens de créer aura une variable source qui portera le numéro de la source.

Code:
with instance_create(x, y, obj_ennemy) {source = other.id;}
Et comme ça tu peux savoir si la source existe encore puisque tu as son ID.
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
RegelePisicilor
Pas mal
avatar

Messages : 34
Projet Actuel : Du shoot, du shoot et encore du shoot!

Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 12:34

Salut les gars,

tout d'abord merci pour vos réponses, je commence à avoir des pistes et globalement, de ce que j'en ai compris, c 'est que je veux toutefois.

Malgré tout j'ai un petit problème.

Voilà grosso modo ce que j'ai:

obj_enemy1
obj_enemy2

obj_enemyTimer1 (la première source de spawn), codée de cette façon:

// Dans create

alarm[1]=3*room_speed;
nbEnnemis = 5;

// Dans alarm 1

nbEnnemis -=1;
typeEnemy = scr_randomRange (0, 10);

if (typeEnemy < 7) {

ins_enemy1=instance_create(64,64,obj_enemy1);
global.ins_enemy1.source=1;

} else {

ins_enemy2=instance_create(64,64,obj_enemy2);
global.ins_enemy2.source=1;

}

if (nbEnnemis ==0) {

alarm[1]= -1;
} else {

alarm[1] = 4*room_speed;

};

et obj_enemyTimer2, codée de la même façon avec les modifs nécessaires.

Malgré tout quand je lance le message, je reçois ce type d'erreur:

ERROR in
action number 1
of Alarm Event for alarm 1
for object obj_enemyTimer1:

Error in code at line 12:
global.ins_enemy2.source=1;

at position 8: Unknown variable ins_enemy2

Et je crains également de ne pas savoir utiliser ces varibales globales.

D'un autre côté j'ai un objet bullet qui lorsqu'il entre en collision avec un ennemi le tue. Est ce qu'il faudrait ensuite que je réutilise cette variable ins_ de manière globale dans bullet pour compter le nombre d'ennemis marqués qui sont tués?



Revenir en haut Aller en bas
RegelePisicilor
Pas mal
avatar

Messages : 34
Projet Actuel : Du shoot, du shoot et encore du shoot!

Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 12:45

En réalité, si j'enlève globale., cela fonctionne, les ennemis spawn.

En revanche, sans une variable globale, je ne vois pas comment compter les ennemis issus de la source 1 quand ils sont détruis.
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2610
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 16:45

Ton erreur venait du fait que tu déclarais la variable ins_ennemi2 comme étant locale, et que tu cherchais ensuite à changer la valeur de global.ins_ennemi, qui n'existait pas.

Quand à compter le nombre d'ennemis de la source 1 détruits, tu peux par exemple mettre ce bout de code quand ils sont détruits :
Code:
if source=1 then obj_enemyTimer1.ennemi+=1
N'oublie pas de bien déclarer tes variables tout de même Wink

_________________
Cliquez pour accéder aux topics dédiés !
   
Revenir en haut Aller en bas
GDOR1
Très bonne participation
avatar

Messages : 129
Localisation : Chez-moi
Projet Actuel : Warriors Time

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 16:48

Tu n'as qu'à initialiser une variable enemy_killed dans l'évènement create de chaque spawn, qui est augmentée de 1 à chaque mort d'ennemi (c'est-à-dire source.enemy_killed += 1).
Du coup après tu peux compter le nombre d'ennemis qui ont été tués.

Les variables globales ce sont les variables dont la valeur est partagée entre tous les objets (je sais pas si je l'ai bien dit).
Par exemple si tu veux un compteur de toutes les morts d'ennemis, indépendamment de leur spawn, tu peux faire une variable global.enemy_deaths. Si tu veux changer la valeur d'une variable d'un seul objet, tu fais nomdelobjet.nomdelavariable.

_________________
Ma galerie de jeu:
Pas de jeux terminé...
Revenir en haut Aller en bas
RegelePisicilor
Pas mal
avatar

Messages : 34
Projet Actuel : Du shoot, du shoot et encore du shoot!

Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 17:18

Encore une fois merci pour vos pistes de réflexion et navré d'être un peu long à la détente...

Merci d'avoir pointé mes erreurs également, je manque parfois de rigueur, celles-ci ont été corrigées par la suite.

Ce qu'il y a c'est que d'un côté j'ai obj_bullet et obj_enemy et lorsqu'il y a meeting_place entre les deux, chacun est détruit (instance_destroy).

Or toutes ces infos ne sont pas dans obj_enemyTimer, autrement dit l'objet de spawn. Je vois bien comment compter la mort des ennemis, ça pas de soucis. Mais dans mon code de spawn il n'y rien qui indique quand un objet est détruit.

En effet, j'ai fait ça:

c
Code:


//create

alarm[1]=3*room_speed;
nbEnnemis = 5;
enemyKilled = 0;
porteOpen = false;

// alarm 1

nbEnnemis -=1;
typeEnemy = scr_randomRange (0, 10);

if (typeEnemy < 7) {

ins_enemy1=instance_create(64,64,obj_enemy1);
ins_enemy1.source=1;

} else {

ins_enemy2=instance_create(64,64,obj_enemy2);
ins_enemy2.source=1;

}

if (nbEnnemis ==0) {

  alarm[1]= -1;
  } else {

alarm[1] = 4*room_speed;

    };

// step

if (instance_destroy(ins_enemy1.source)) {

  enemyKilled +=1;

    }

if (instance_destroy(ins_enemy2.source)) {

  enemyKilled +=1;

    }

if (enemyKilled == 5) {

  openPorte = true;
  game_restart ();
  };


En fait je ne sais pas comment lui dire if ins_enemy2.source (l'ennemi 2 de la source 1) est détruit, alors bla bla bla, puisque la destruction est codée dans d'autres objets au moment de la collision de la balle et de l'ennemi et pas dans l'objet Timer1.

PS: navré d'être naze!
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2610
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 17:22

Tu as un event Destroy qui ressemble à ça : Event - Destroy
Si tu mets un code dans cet event de l'objet ennemi, il tournera uniquement lors de la destruction de l'objet Smile

_________________
Cliquez pour accéder aux topics dédiés !
   
Revenir en haut Aller en bas
RegelePisicilor
Pas mal
avatar

Messages : 34
Projet Actuel : Du shoot, du shoot et encore du shoot!

Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 18:14

Ça pas de soucis, je sais comment détruire des objets, quand je tire sur un ennemi, lui est détruit et la balle aussi.

Dans obj_enemy il a une condition qui dit si collision avec obj_bullet, instance_destroy, même chose si obj_bullet entre en collision avec obj_enemy, alors instance_destroy.

Avec cette ligne de code:

ins_enemy1=instance_create(64,64,obj_enemy1);
ins_enemy1.source=1;

le Timer1 (source de spawn) créé des ennemis qui portent désormais en une eux une variable. Quand je suis dans le jeu les ennemis spawn et se font bousiller l'arrière train, mais comment et surtout ou faire comprendre à l'ordi que ces ennemis de la source 1, quand ils sont détruits doivent être comptés et ou est ce que je mets ma condition qui dit que si les ennemis de la source 1 sont détruits alors il doit se passer quelque chose.

Si j'utilise le DnD Destroy, j'ai fait ce code:

ins_enemy1.source || ins_enemy2.source;

enemyKilled +=1;


if (enemyKilled == 5) {

game_restart();
}
Mais je reçois ce message d'erreur:

___________________________________________
FATAL ERROR in
action number 1
of Destroy Event
for object obj_enemyTimer1:

COMPILATION ERROR in code action.
Error in code at line 1:
ins_enemy1.source || ins_enemy2.source;

at position 19: Assignment operator expected.

J'ai utilisé || parce que je n'ai pas pu utiliser un deuxième event destroy.
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2610
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 18:54

Pour ta question, j'aurai mis, dans tous les objets obj_ennemi, dans l'Event Destroy,
Code:
if source=1 then obj_enemyTimer1.enemyKilled+=1
Ainsi, lorsque tes ennemis seront détruits, la variable enemyKilled de leur source (ici obj_enemyTimer1 puisque la source est la 1ère) sera incrémentée de 1.
(Par contre, c'est pas très pratique si tu as beaucoup de sources. Le mieux serait de stocker l'id de l'objet source en variable locale lorsque l'ennemi est créé je pense.)

Ensuite, dans l'Event Step de obj_enemyTimer1 :
Code:
if (enemyKilled>=5) then
{
       game_restart();
}
Dans Step, le code sera effectué en permanence dans le jeu. Ainsi, dès que le nombre d'ennemis aura atteint 5, tu pourras faire les actions que tu souhaites Smile


Par contre, attention, ta ligne "ins_enemy1.source || ins_enemy2.source" ne veut rien dire. Que voulais-tu faire avec ça ?

_________________
Cliquez pour accéder aux topics dédiés !
   
Revenir en haut Aller en bas
RegelePisicilor
Pas mal
avatar

Messages : 34
Projet Actuel : Du shoot, du shoot et encore du shoot!

Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 19:25

Si tu en as la patience évidemment, et parce que je commence à sérieusement me mélanger les pinceaux, est ce que tu pourrais me dires comment tu procéderais étape par étape?

Voilà ce que j'ai:

un obj_enemy1 qui lorsqu'il entre en collision avec obj_bullet est détruit en utilisant instance_destroy();
un obj_enemy2 qui lorsqu'il entre en collision avec obj_bullet est détruit instance_destroy();
un obj_bullet qui lorsqu'il entre en collision avec obj_enemy1 ou obj-enemy2 est détruit instance_destroy();

un objet_enemyTimer1 qui dispose d'une horloge qui fait spawn soit obj_enemy1 soit obj_enemy2 de manière aléatoire toutes les 2 secondes et qui est composé d'un "create" et d'un "horologe1" dans lequel se trouve actuellement le code suivant:

Code:

// create

alarm[1]=3*room_speed;
nbEnnemis = 5;
global.enemyKilled = 0;
global.porteOpen = false;

//alarm 1

nbEnnemis -=1;
typeEnemy = scr_randomRange (0, 10);

if (typeEnemy < 7) {

ins_enemy1=instance_create(64,64,obj_enemy1);
ins_enemy1.source=1;

} else {

ins_enemy2=instance_create(64,64,obj_enemy2);
ins_enemy2.source=1;

}

if (nbEnnemis ==0) {

   alarm[1]= -1;
   } else {

alarm[1] = 4*room_speed;

    };


Bon si tu n'y tiens pas je comprendrais parfaitement, moi même je ne voulais pas demander ça mais je dois avouer que ce problème me fatigue et que j'y vois de moins en moins clairement...
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2610
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 20:06

Il faut savoir que lorsque dans un objet, tu utilise la commande instance_destroy(), GM va executer toutes les actions présentes dans l'Event Destroy de cet objet avant de le détruire Wink

Donc, en gardant ton code, voilà ce que je ferai :

Dans l'Event Destroy de obj_enemy1 et obj_enemy2, je mettrai le code :
Code:
if source=1 then objet_enemyTimer1.enemyKilled+=1
De cette manière, lorsqu'un obj_enemy1 ou un obj_enemy2 est détruit, le nombre d'ennemi tué de la source correspondante augmente.

Dans l'Event Step de objet_enemyTimer1, je mettrai le code :
Code:
if (enemyKilled>=5) then
{
     game_restart();
}
Le jeu va vérifier en permanence si le nombre d'ennemis tué est supérieur à 5 ou non, et si oui, il recommence le jeu.


Je vois que tu as initialisée une variable global.enemyKilled, je l'ai remplacé par une variable simple enemyKilled Wink

_________________
Cliquez pour accéder aux topics dédiés !
   
Revenir en haut Aller en bas
RegelePisicilor
Pas mal
avatar

Messages : 34
Projet Actuel : Du shoot, du shoot et encore du shoot!

Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 20:19

C'est parfait, le tout marche très bien!

Un très grand merci, si je pouvais je te paierais bien un bière pour ta patience et tes explications!

Il y a des choses sur lesquelles mes connaissances sont très fragiles, mais je prendrai le temps de saisir tout ça un peu plus en profondeur.

Encore un gros merci!
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2610
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: Ennemis et sources de sawns   Lun 18 Jan 2016 - 20:34

Je ne bois pas, mais merci quand même gnii

Si tu as d'autres problèmes, n'hésites pas à consulter l'aide, et à venir voir par ici Wink

_________________
Cliquez pour accéder aux topics dédiés !
   
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Ennemis et sources de sawns   

Revenir en haut Aller en bas
 
Ennemis et sources de sawns
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Sources de calcium - pour Melplan (et les autres !lol)
» [résolu]Comment importer et export du dictionnaire des sources pour les autres versions d'Heredis ou généalogies ?
» Saisie par actes sources multiples
» Sources de la Grande Guerre
» Smartphones et tablettes, les ennemis du sommeil - Article du journal Le Monde

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: