[Resolu]Inversion de zone de saisie ou de valeur ?

Saurez-vous trouver ce qui cloche ?

Au passage, je tente de faire apparaitre des nuages autour d’une position, ici le centre de l’écran, mais GD s’acharne à les faire apparaitre en bas à droite …
Comme si l’origine du calque (0,0) était en faite (1000,600) pour la caméra.
Ou inversement …
Il faut que je colle une distance de 1000 pixels au moins pour obtenir des nuages qui apparaissent hors écran et reviennent vers le centre en diminuant d’opacité.
Je n’ai pas l’impression que ce soit le fonctionnement normal de cette fonction.

C’est l’ordre des paramètres qui est correct, l’inversion se situe au niveau de la phrase affichée dans l’éditeur d’évènements.
Ensuite, il y a un bug subtil, dans le code de l’action, l’expression de l’angle est évaluée deux fois. Avec l’histoire du nombre aléatoire, ça pose un problème car l’angle est alors différent les deux fois.
En attendant la prochaine version qui corrige ça, tu peux faire ceci :

Mettre =Random(360) dans la variable angle
Faire =cos(angle/180*3.14)Distance + PositionXDuCentre à la position X de TonObjet
Faire =sin(angle/180
3.14)*Distance + PositionYDuCentre à la position Y de TonObjet

Ou alors je fais : Random(360) dans une variable de la scene, puis je référence la variable dans le champ Angle.

Ca devrait marcher pareil, je pense … :stuck_out_tongue:

Et toujours au passage, les paramètres de GD, genre mettre les onglets en haut, ne sont pas sauvegardés.
Du coup, Scene/Evenements restent en bas de l’écran.

EDIT :

Ca a l’air de marcher comme je veux maintenant.
Le centre d’apparition est toujours à la ramasse (-200,-150 au lieu de 400,300), mais je peux le corriger moi même.
Problème résolu.

J’ai pas remarqué de tels problèmes en faisant un petit jeu de test par contre.

Ah bon ? Là aussi, je viens de changer le paramétrage des onglets chez moi dans les préférences de GD, je ferme et redémarre celui ci, et les onglets sont bien mis à la position paramétrée.
Note qu’il faut fermer et réouvrir une scène afin de voir les changements la première fois.

C’était ça, l’astuce. :stuck_out_tongue:
Moi, je changeais le paramètre, et je fermais GD directement.
Il faut donc ouvrir une scène pour valider le paramètre, avant de fermer GD.

Perso, je rencontre des comportements bizarres.

Comme par exemple, lorsque je veux faire un curseur “custom”.
Je crée une image à la position de la souris, je change son échelle car l’image est trop grande, puis je la repositionne toutes les 0.01 secondes.
Pas de bol, le repositionnement toutes les 0.01 utilise les dimensions d’origine de l’image, pas celle suite à la mise à l’échelle.
Si je travaille avec une image sans mise à l’échelle, elle se positionne bien comme il faut.

Autre exemple, je ne peux pas créer une variable depuis une conditionnelle.
Il faut que je le fasse depuis une instruction, sinon la création n’est pas validée à tous les coups.

Autre truc dont il faut se méfier, je peux mettre TimeFromStart() comme variable dans une condition “si variable supérieur à x”.
Ca marche aussi en chronomètre.
Mais ça ne marche pas avec d’autres fonctions internes à GD (je sais plus lesquelles par contre :stuck_out_tongue: ).

Faut aussi que je pense à mettre mes configs dans ma signature …
Ca expliquera pas mal de choses. :sunglasses:

Tu n’est pas obligé d’utiliser un chronomètre. Ce sera même plus simple de mettre directement :

Conditions : Aucune Actions : Faire =MouseX() à la position de Cursor Faire =MouseY() à la position de Cursor

En effet :angry:
Les autres points sont bien repositionnés malgré tout quand on agrandit une image.

Créer une variable depuis une condition ?
A part tester une variable, tu ne peux pas faire autre chose avec une condition ?
A moins que tu parle d’ajouter une variable à la liste des variables de la scène ?

Drôle d’idée de nommer une variable comme ça, mais quel est le problème ? Les noms de variables n’acceptent PAS les expressions, donc ta variable se nommera véritablement “TimeFromStart()”.

Les chronomètres utilisent des expression textes pour évaluer le nom du chronomètre, ce qui signifie qu’on peut modifier durant le jeu le chronomètre à tester. Là par contre, le nom du chronomètre qui sera testé changera suivant la valeur de TimeFromStart().
Ce genre de chose reste assez “dangereuse”, mieux vaut utiliser des noms de chronomètres bien fixés. Mais peu d’actions permette de genre de choses, par exemple les noms de variables justement sont bien fixés.

Nan, je ne veux pas que mon processeur mouline comme un rat mort alors que l’utilisateur ne verra même pas la différence. :smiling_imp:
Une vérif au centième près est déjà bien suffisant.

Ajouter une variable dans la liste des variables (scène ou globale).
Ca ne passe pas toujours si je le fais depuis une conditionnelle.

Je ne nomme pas une variable, je veux appeller directement la valeur de TimeFromStart().
Ca m’évite d’avoir à passer par une variable exprès pour stocker la valeur et la comparer à une constante.

Sauf que je viens de retester la valeur renvoyée par TimeFromStart() en tant que variable.
Et je me rends compte que c’est toujours 0. :angry:)

Je m’attendais à ce que GD me bloque en disant “erreur de syntaxe” ou un truc du genre.
Mais comme il ne me disait rien, j’assumais que c’était bon, et qu’il recevait la valeur de retour de la fonction.

Ceci explique donc pourquoi je n’atteignais jamais la limite de temps de jeu.
Puisque zéro est toujours inférieur à x secondes.
Cool, un bug de corrigé. :stuck_out_tongue:

Boarf, en limitant le jeu à 60 images par secondes, tu empêche justement ce genre de moulinage, ( Les évènements ne seront pas exécutes plus de 60 fois à la seconde ) et ça te simplifie la vie.
Mais procède comme tu souhaite :slight_smile:

Il faut bien cliquer sur Choisir pour confirmer les changements.

Dans ce cas, tu ne veux pas de variable, donc les conditions sur les variables ne te seront d’aucune utilité.
Tu as une condition dans la catégorie Autre nommée Comparer deux expressions, te permettant de tester par exemple :
TimeFromStart() > 100

C’est aussi ce que j’avais pensé au début …
Mais non, même en choisissant et en validant la conditionnelle, la variable n’apaprait pas dans la liste des variables quand j’ajoute l’instruction.
Enfin, pas à tous les coups.

C’est donc à ça que sert cette fonction.
C’est bon à savoir.

Et pendant que je te tiens …
Quand on fait un aperçu dans une nouvelle fenêtre, la fenêtre ne fait pas exactement 800x600 (à cause de la barre de titre).
Du coup, ça décentre les images d’interface.
Faudra penser à lui rajouter une dizaine de pixels en hauteur.

Le problème est que la barre de titre est d’une hauteur différente en fonction des OS : elle est plus grande sur XP que sur Vista ou 7, par exemple. :wink:

Voilà le problème.
Mais maintenant qu’on en reparle j’ai réussi à résoudre le problème ( En demandant à la bibliothèque d’interface graphiques d’avoir une zone affichée de 800 par 600 ( SetVirtualSize à la place de SetSize avec wxWidgets pour info ) ).