| [Résolu]Choix de programmation | |
|
|
|
Auteur | Message |
---|
luuu17 Très bonne participation
Messages : 124
| Sujet: [Résolu]Choix de programmation Mer 9 Nov 2011 - 18:30 | |
| Bonjour encore. Je voulais avoir l'avis de personnes habituées concernant mon code :
J'ai un dilemme. j'ai un ennemi dans mon jeu, que j'ai mis beaucoup de temps à faire. Il marche très bien, mais quand j'ai codé mon personnage héros, j'ai mis beaucoup de conditions du type : -if instance_nearest(x,y,ENNEMI).vie = 0 { ... }
Seulement voilà, si l'objet n'est pas dans la room, le code de mon personnage bug puisqu'il ne trouve pas ces valeurs appartenant à l'ennemi absent.
Vaut il mieux que je modifie mon code, et ajouter beaucoup de lignes dedans, (vraiment beaucoup ) et des doublons genre :
if instance_exists(ENNEMI) { ...(mon ancien code) } else { ... } ou au contraire vaut il mieux que je laisse un objet Ennemi (qui contient beaucoup de lignes) inutile dans une room, caché, mais qui m'évite de rajouter une seule ligne.
Je pense qu'il vaut mieux coder, mais est-ce nécessaire ? Peut être que je vais en fait utiliser + de mémoire plutôt que d'avoir un ennemi fantôme dans la room qui assure le fonctionnement du code.
Dernière édition par luuu17 le Lun 14 Nov 2011 - 0:15, édité 1 fois |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 18:48 | |
| Bonjour, - Code:
-
if(instance_exists(ENNEMI)){ if instance_nearest(x,y,ENNEMI).vie = 0 { ... } } ou - Code:
-
if(!instance_exists(ENNEMI))exit; if (instance_nearest(x,y,ENNEMI).vie = 0 ){ ... } |
|
| |
luuu17 Très bonne participation
Messages : 124
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 19:09 | |
| euh, je ne comprends pas du tout la réponse ^^'' |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 19:20 | |
| - Citation :
- instance_exists(obj) Retourne s'il existe une instance de type obj. obj peut être un objet, un ID d'instance ou le mot-clé all.
En gros tu exécute ton code seulement s'il y a une instance de l’objet ENNEMI présente dans ta salle. "exit" quitte le code de ton évènement. |
|
| |
luuu17 Très bonne participation
Messages : 124
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 19:34 | |
| oui je sais, mais ma question est de savoir si ca vaut le coup de quasiment double le nombre de lignes ou de laisser une instance dans la room qui ne sert pas. c'est en gros vaut il mieux :
if point_distance(x,y,instance_nearest(x,y,ENNEMI).x, instance_nearest(x,y,ENNEMI).y) < 1000 {
je fais ceci
}
else { je fais cela ( plus loin que 1000 = meme chose que s'il l'ennemi n'existe pas) }
dois-je englober tout ca dans un " if instance_exists(ENNEMI) " avec un else semblable ou il vaut mieux que je laisse une instance ENNEMI dans la salle ? |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 19:38 | |
| Comme je l'ai dit, tu vérifie s'il y a une instance "ennemi" dans ta salle. S'il y en a pas tu n’exécute pas ton code. C'est plus optimisé, plus logique, plus simple, etc...
|
|
| |
luuu17 Très bonne participation
Messages : 124
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 20:01 | |
| oui mais je dois quand meme utiliser la partie du code qui est la même que si l'ennemi est présent mais loin. |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 21:03 | |
| Pour qu'il soit loin faut qu'il soit présent ........ |
|
| |
luuu17 Très bonne participation
Messages : 124
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 21:58 | |
| j'ai du mal à expliquer. dans une room, il peut être présent mais loin, dans une autre, absent. |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 22:09 | |
| Et? Ça ne change en rien ce que je viens de dire.... qu'il soit loin ou prêt il est présent dans les deux cas. Je ne comprend pas où est ton probléme, il y a juste une ligne à rajouter .... - Code:
-
if( !instance_exists(ennemi) ) exit; S'il n'y a pas d'instance de l'objet ennemi dans la salle tout le code après cette ligne ne sera pas lut... |
|
| |
luuu17 Très bonne participation
Messages : 124
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 22:46 | |
| oui mais le code contient ce que doit faire le personnage dans tous les cas.
s'il existe un ennemi et que celui ci est proche, il doit faire une action, s'il est loin ou qu'il n'existe pas dans la room, il ne doit faire une autre action.
donc si mon code c'est en simplifiant :
if instance_exists(ENNEMI) { ------if point_distance(x,y,Ennemi.x,Ennemi.y) < 150 action = 1 -------else action = 0 }
else action = 0
est-ce que je ne ferai pas aussi bien de mettre uniquement
if point_distance(x,y,Ennemi.x,Ennemi.y) < 150 action = 1 else action = 0
et d'avoir un ennemi toujours d'existant dans une room meme si on ne le voit pas ? j'obtiens la meme chose avec moins de ligne. |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 22:55 | |
| Utilise les user_event. - Code:
-
if(instance_exists(ennemi)) user_event(0); else user_event(1); Ça te feras un beau code bien propre et pas d’instance qui consomme de la mémoire et qui ne sert à rien. |
|
| |
luuu17 Très bonne participation
Messages : 124
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 23:00 | |
| user_event ? c'st quoi ça ? je vais me renseigner |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 23:20 | |
| C'est des évènements définies par l'utilisateur.
add event -> other -> user defined -> event *number*
Ces évènements ne sont exécutes qui par l'appel de ceux-ci par la fonction "user_event(num)". Ça permet entre autre d'avoir un beau code quant celui-ci est trop long. |
|
| |
luuu17 Très bonne participation
Messages : 124
| Sujet: Re: [Résolu]Choix de programmation Mer 9 Nov 2011 - 23:54 | |
| jvais voir ça alors, merci en tout cas. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Résolu]Choix de programmation Jeu 10 Nov 2011 - 0:30 | |
| En gros c'est comme une fonction (sans parametres) propre a ton objet. Comparable aux methodes C++ mais en version super limité quoi |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [Résolu]Choix de programmation Jeu 10 Nov 2011 - 9:11 | |
| - Citation :
- mais en version super limité quoi
Je dirai même plus, hyper méga super limité. Mis à part pour organiser son code et la profondeur des draw je ne sais pas trop à quoi ça peut servir tellement c'est limité. En plus quant tu appels les user_event d'un autre objet ceux-ci s’exécute sur le depth de l'appelant.... |
|
| |
luuu17 Très bonne participation
Messages : 124
| Sujet: Re: [Résolu]Choix de programmation Sam 12 Nov 2011 - 11:49 | |
| merci en tout cas. je vais essayer de voir ce que je peux faire. mais incroyable tous les trucs que je connais pas. je me sert pas des 3/4 de ce qu'on peut faire je m'en rend compte. mais grâce au ciel, ça marche quand même, mais pour combien de temps... |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: [Résolu]Choix de programmation Sam 12 Nov 2011 - 12:41 | |
| le temps que le code soit valide |
|
| |
luuu17 Très bonne participation
Messages : 124
| Sujet: Re: [Résolu]Choix de programmation Lun 14 Nov 2011 - 0:15 | |
| oui nan mais le truc c'est que je sais pas programmer moi ^^ enfin je me dépatouille avec gamemaker mais je comprend pas la moitié de ce que vous dites souvent. j'ai aucune connaissance à la base, des rudiments de C. mais j'vais essayer. J'ai un autre probleme plus grave que je vais poster car la je suis démuni. |
|
| |
master47 Utilisateur confirmé: Rang *****
Messages : 2368 Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio
| Sujet: Re: [Résolu]Choix de programmation Lun 14 Nov 2011 - 8:27 | |
| tu peux même mettre - Code:
-
if( instance_exists(tonObj) && instance_nearest(tonObj).vie > 0) { // ... ton code }
C'est la différence entre "&" et "&&". Si tu met seulement "&", il va calculer tous les termes de la condition et ensuite vérifier qu'ils sont tous vrais, si tu met "&&", il part de la première condition et continue jusqu'à la dernière. S'il rencontre un false, il s'arrête et n'exécute pas le code qui suit. Donc le code ci-dessus est correct, par contre, ce ci provoquerait une erreur: - Code:
-
if( instance_exists(tonObj) & instance_nearest(tonObj).vie > 0) { // ... ton code }
car s'il n'existe pas d'instance tonObj, alors instance_nearest retournera noone et le paramêtre vie n'existera pas. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Résolu]Choix de programmation Lun 14 Nov 2011 - 13:07 | |
| Malheureusement le gml étant mal programmé, ce que tu dit ne fonctionne pas.
Normalement un vrai langage s'arrête (pour le and) dès qu'il rencontre un false. GM lui vérifie tout... Obligé de faire des if imbriqués >.>
(je suis sous gm6 au moment ou j'écrit ces phrases, mais je me doute que rien a été changé depuis) |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [Résolu]Choix de programmation Mar 15 Nov 2011 - 9:51 | |
| - Citation :
- (je suis sous gm6 au moment ou j'écrit ces phrases, mais je me doute que rien a été changé depuis)
J'ai la 8pro et et c'est valable aussi. exemple: - Code:
-
if( variable_local_exists("variable") and variable==true){} Retourne une erreur si la variable n'existe pas. Mais si on imbrique les deux conditions ça fonctionne. |
|
| |
master47 Utilisateur confirmé: Rang *****
Messages : 2368 Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio
| Sujet: Re: [Résolu]Choix de programmation Mar 15 Nov 2011 - 12:00 | |
| Ouille il me semblait que ce truc avait été réglé oulalalalala |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| |
| |
master47 Utilisateur confirmé: Rang *****
Messages : 2368 Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio
| Sujet: Re: [Résolu]Choix de programmation Mar 15 Nov 2011 - 14:16 | |
| |
|
| |
luuu17 Très bonne participation
Messages : 124
| Sujet: Re: [Résolu]Choix de programmation Mar 15 Nov 2011 - 14:52 | |
| donc à quoi sert le "and" ? j'ai des tonnes de and. exemple :
if a = 1 and b = 2 and c =5
si je fais
if a = 1 && b = 2 && c = 3 il va s'arreter de lire des que a != 1 ?
j'ai énormément de lignes avec des and avec des fonctions type instance_nearest ou point_distance... j'ai tout à y gagner donc à remplacer par des && ?
[Edit] ah donc non, moi j'ai tout imbriqué, je peux donc pas faire mieux ? le && ne change rien sous GM ? |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [Résolu]Choix de programmation Mar 15 Nov 2011 - 15:11 | |
| && = and || = or
& != and (et c'est de ça que l'on parle)
Perso moi j'utilise "and" je trouve ça plus lisible que &&. |
|
| |
luuu17 Très bonne participation
Messages : 124
| Sujet: Re: [Résolu]Choix de programmation Mar 15 Nov 2011 - 15:34 | |
| & != and ? le point d'exclamation est involontaire non ? != ca veut dire pas égal pourtant. |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [Résolu]Choix de programmation Mar 15 Nov 2011 - 15:45 | |
| "!=" veux dire "différent" donc il est volontaire car "&" n'est pas du tout pareille que "&&" et donc pas pareille que "and" pour le coup. Enfin tout ça dans la plupart des langages mais pas en GML car Yoyo Game se préoccupe peut de ces détails qui pourtant change beaucoup de choses! (ce qu'expliquait Master47) |
|
| |
Contenu sponsorisé
| Sujet: Re: [Résolu]Choix de programmation | |
| |
|
| |
| [Résolu]Choix de programmation | |
|