Mai 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | Calendrier |
|
| | On_Sprite_Click N,L | |
|
+4Klaus Jean Claude Jicehel Yannick 8 participants | |
Soutenez vous ces deux commandes ? | Oui | | 78% | [ 7 ] | Non | | 22% | [ 2 ] |
| Total des votes : 9 | | Sondage clos |
| Auteur | Message |
---|
Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: On_Sprite_Click N,L Mar 19 Mar 2013 - 15:09 | |
| On_Sprite_Click N,L
Démarre le sous menu L lors du click sur le Sprite N.
Number_Sprite_Click()
Renvoit le numéro du sprite cliqué
Cela serait d'un secours gigantesque pour les jeux en 2D, merci Jack !
Dernière édition par ygeronimi le Mar 19 Mar 2013 - 15:53, édité 1 fois (Raison : Ajout du sondage) | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: On_Sprite_Click N,L Mar 19 Mar 2013 - 16:21 | |
| J'ai voté. Si c'est techniquement possible, ce serait bien. Le truc c'est que pour le moment, les sprites manquent de fonction pour être vraiment utilisés.
Après, pour le moment, je crois qu'il y a des raisons techniques qui font que ce n'est pas fait et dans ce cas, à Jack de voir comment il s'organise avec le peu de temps dont il dispose pour gérer ça dans sa liste de priorités ... | |
| | | Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 19 Mar 2013 - 16:49 | |
| Comme je l'ai écrit dans un autre post, j'ai mis le sondage pour que Jack puisse voir le nombre de Panoramiciens qui souhaitent ces commandes. Peut être que si chaque demande est accompagné d'un sondage, Jack pourra faire un tri de priorité selon les votes, même si aux yeux des demandeurs la leur est toujours prioritaire sur les autres... Pour l'instant, je ne suis pas élu... Votez pour Mouha !!!! | |
| | | Invité Invité
| Sujet: Re: On_Sprite_Click N,L Mar 19 Mar 2013 - 18:38 | |
| Bonsoir Ygenomini.
Ça va pas être facile pour moi, car franchement je suis plus que frustré de voir comment les choses se passent! Il va y avoir une réaction contre ce que je dis, et patati, et patata, et tant-pis, si je choc. Je n'ai rien contre la proposition que tu fais, mais il y a le résultat de vos demandes. Je suis inscrit depuis août 2008. Il y a des demandes qui ont été faites depuis ce temps. Quatre ans où je vois les demandes que moi et d'autres ont faite, et pour lesquelles Jack a mis dans sa liste d'alors, et situé dans les prochaines de ces priorités. Seulement j'estime que j'ai été trompé. Si j'avais su que nos commandes ne viendraient pas, j'aurai quitté alors Panoramic. Je ne l'ai pas fait, car je pensais qu'il me faudrait plus de temps pour apprendre un autre langage, que de voir apparaître ce qui était dit. Il y a 4 ans, on ne m'a pas dit, que des programmes, il n'en restera que des jeux. De toute façon en Panoramic, ça m'étonnerait que ce soit cela qui restera. En TONIC, surement, car c'est la finalité de ce langage. Vous (je ne parle pas que de toi Ygenomini) qui êtes venue bien après, avec vos demandes sur les jeux, vous êtes passé devant. Je me retrouve comme un con. Je ne vais pas faire l'inventaire de tout ce que j'ai laissé de côté, à cause de ce changement de priorité, et de toute façon, vous n'en avez rien à f....
J'ai dû décider il y a quelque temps, de faire mes propres commandes Panoramic à Delphi pour m'en sortir. J'en suis à une deuxième reprise, car il a fallu que je comprenne comment je devais m'y prendre. Car au départ Delphi je ne connais pas. À part avec l'IDE, placer des objets sur une forme, et voir comment cela se goupille. Et maintenant j'avance. J'ai faits quelques fonctions de départ, dépouillé la méthode, et depuis une quinzaine de jours j'étais bloqué. Je n'arrivais pas à lire avec des fonctions, des variables (globales pour ainsi dire) qui faisait partie de l'ensemble du programme. Ce stade est dépassé, et jusqu'à hier soir, je ne voyais pas comment avec Delphi, pouvoir créer des objets avec des variables, et les retrouver ou modifier ensuite. Maintenant j'ai la solution, et ça marche, donc je peux reprendre mon travail (pourtant j'ai pu voir sur des demandes d'autres comme moi, que ce n'était pas possible.) J'espère maintenant que je vais pouvoir avancer, et pouvoir faire ce dont j'ai besoin. Sur la majorité des choses, je sais comment faire. Maintenant Panoramic, je serais toujours insatisfait. Toujours allez me faire voir ailleurs. Et vous comprendrez pourquoi j'apparais comme étant le ronchon de ce forum.
Tu veux tes commandes, tu as raison, tu passeras toujours devant moi, même si Jack intervient et dit le contraire. Vous avez mon opinion. Panoramic est un formidable langage basic, vais on ne veut pas le décanter. Il est temps pour moi de m'écarter, et vous laisser avoir ce que vous voulez. Ne vous en défendez pas, vous aurez toujours raison sur moi. Je prends la décision de ne venir voir qu'une fois par semaine, moins de frustration.
Je ne sais pas quelles seront vos réactions, mais il est temps pour moi d'obtenir ce que je veux.
Bonne continuation pour ce forum. Il est quant-même plus vivant et réactif que ceux que je vois ailleurs.
A propos, pour ces raisons, j'ai répondu non, malgrès que je comprenne l'utilité. |
| | | Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 19 Mar 2013 - 19:06 | |
| Je suis désolé pour toi... Je ne suis pas le concepteur de ce langage et comme toi j'envoie des bouteilles à la mer. Elles reviennent parfois avec un petit cadeau, parfois non. Par contre, j'ai du mal à comprendre ton vote. J'ai lancé ( avec le sondage ) une idée en l'air. Là, je la prend sur le coin de la gueule, aïe!!!... tant pis pour moi. Ton vote est bien gaulois, on vote contre ce que l'on aime ou veut parce que ce n'est pas présenté par qui l'on veut... J'espère que tu ne dis pas "non,merci" à ton patron quand il veut t' augmenter...
Dernière édition par ygeronimi le Mar 19 Mar 2013 - 20:09, édité 1 fois | |
| | | Invité Invité
| Sujet: Re: On_Sprite_Click N,L Mar 19 Mar 2013 - 19:41 | |
| Je te te rembarre pas. J'ai rien contre toi. En ce moment tu fais marcher le forum, et tu deviens un deuxième Klaus en quelque sorte, par la vitesse où tu mets tes programmes, et bravo. Mais j'ai expliqué pourquoi j'ai dis non, et pour l'augmentation, il y a longtemps je ne n'ai plus de patron, et faisant parti du monde ouvrier, beaucoup de ce forum apprécient de voir des augmentations, en refusant celles de ceux de leurs vassales. Il y a un mois, j'ai perdu mon meilleur copain, et je peux te dire que c'était une personne qui était apprécié. Il avait 4 ans de plus que moi, c'est à dire le temps que je suis inscrit. Etant du monde ouvrier, je ne sais pas si j'irais jusque là. Donc mes demandes sont au placard, et c'est les tiennent qui passe devant. Je dis non car avant les tiennes ce sont les anciennes qui doivent passer. Et je me fous de savoir si il ne restera que des jeux sur ce forum, on ne m'a pas fait cette remarque au départ. Tu sais tout, et tu feras avec, mais ne t'en fait pas, tu passeras devant. Moi je ne compte plus. Après ces notes négatives, je vais passer à l'apéro, et changer d'atmosphère. Ne t'en fait pas aussi, mes remarques n’empêcheront rien, et je suis minoritaire. Tu gagnes à tous les coups. |
| | | Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 19 Mar 2013 - 20:04 | |
| C'est bien le seul endroit où je gagne quelque chose... NB : Si vous avez besoin d'un chat noir... je loue mes services !!! PS : Tu vois cosmos 70, tu n'es pas tout seul à être contre... Mais au moins, toi, tu m'as dit pourquoi. | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: On_Sprite_Click N,L Mar 19 Mar 2013 - 21:11 | |
| Hum Cosmos, perso, je ne vois pas ça comme toi. Le seul qui mène la barque c'est Jack et il a sa ligne directrice qui lui est propre. Nous nous faisons des demandes qui vont soit dans le sens ou il veut aller ça dans un autre. Il ajoute donc des fonctions à Panoramic ou le restructure. A nous de voir avec ses possibilités pour en tirer le plus possible. Après il y a Klaus qui résoud la plupart de nos problèmes techniques grâce à sa DLL. C'est une solution temporaire et évolutive, certes mais en attendant quand on a un besoin spécifique, ça résoud le problème. Après, es-tu certain que Jack se souvienne de tes demande d'il y a plus de quatre ans ? C'est vrai qu'un post sur le forum avec les demandes des Panoraciens prise en compte par Jack avec leur status et niveau de priorité dans la todo list serait pratique. Chacun saurait à quoi sans tenir (dans ton cas, si ça fait 4 ans que tu attends un amélioration, si tu voyais quelle était en bas ou en haut de la pile, je pense que ça t'aiderait en effet à faire tes propres choix ou tes recherches de solutions). | |
| | | Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 19 Mar 2013 - 21:24 | |
| J' ajouterai à ce que vient de dire Jicehel que peut être serait il bon de réactiver tes demandes de temps en temps ne serait ce que pour les faire remonter dans le fil de discussion. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 69 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: On_Sprite_Click N,L Mar 19 Mar 2013 - 21:42 | |
| Restons Zen!
@Cosmos tu dis que tu es frustré et je crois que tu n'es pas le seul. Laissons les choses se faire. Toutes ces demandes sont légitimes et les tiennes aussi. Je sais que c'est long parfois d'attendre, mais çà fait parti du "jeu". Jack étant maître de son logiciel (et c'est normal) il faut savoir attendre, le peu (ou plutôt le maximum) de temps qu'il y consacre est déjà beaucoup. Je te rejoins sur la priorité au jeu, que Jack fait (certainement par goût), mais que veux-tu c'est ainsi et il faut faire avec. Personnellement je ne peux pas reprocher à Jack de faire ce qui lui plait en priorité. Il nous reste du temps devant nous.....
A+ | |
| | | Klaus
Nombre de messages : 12294 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: On_Sprite_Click N,L Mar 19 Mar 2013 - 22:44 | |
| Je trouve que toute cette discussion, pour intéressante qu'elle soit, trouverait mieux sa place dans la rubrique "Présentation et bavardage" que dans une discussion à priori "technique" sur l'opportunité d'une amélioaration ou d'un ajout de fonctionnalité. Enfin, c'est mon avis. Pour en revenir à l'objet de ce fil de discussion: la commande ON_SPRITE_CLICK et la variable système NUMBER_CLICK. De mon point de vue, c'est un ajout bien plus facile à réaliser que ce que j'ai suggéré, pour ma part, dans mes propositions récentes. Et voilà pourquoi: 1. L'ajout d'une variable système est probablement la modification la plus simple qui soit, à faire pour Jack. Je ne veux même pas revenir sur l'aspect technique de ce point. 2. La réalisation d'une commande ON_SPRITE_CLICK (et la commande OFF_SPRITE_CLICK qui va avec), n'est certainement pas non plus d'une complexité énorme. Les SPRITE font partie de la gestion des SCENE2D qui est faite intégralement à l'intérieur de Panoramic, sans recourir à des fonctions Windows qui imposeraient un comportement ou un autre. Panoramic gère de façon interne une liste des SPRITE avec leur caractéristiques, et en particulier leur position et leurs dimensions. De là à déterminer sur quel SPRITE on a cliqué, c'est un simple parcours de listes et un test du genre - Code:
-
if PtInRect(rect, pt) then result := 1 else result := 0; qui se fait en une ligne en Delphi, comme on peut le voir (c'est ce que je fais dans la fonction IsPointInRectangle de KGF.dll). Et les évènements existants sont la création exclusive de Jack, qui, en fonction de certains critères, déclenche un traitement Panoramic. Il suffirait d'ajouter un traitement: si "click dans un SPRITE" alors "déclencher un traitement", dont le nom de la routine doit avoir été memorisé (dans une table supplémentaire, certes) pour chaque SPRITE. Et en même temps, on charge NUMBER_SPRITE_CLICK avec le numaro du SPRITE et NUMBER_CLICK avec le numéro du SCENE2D. Je demande pardon à Jack de prendre la parole à ce sujet, et je ne souhaite en aucun cas me substituer à lui, qui est bien sûr seul maître à bord. Je réponds d'une part à Jicehel au sujet de sa remarque sur les dificultés techniques, et je m'adresse aux autres pour montrer que cet ajout n'est pas forcément un truc insurmontable. Ce qui est certain, c'est que cela constituerait un apport très important pour les réalisateurs de jeu 2D. Avoir des SPRITE qui réagissent à on click - quelle facilité pour programmer des jeux ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: On_Sprite_Click N,L Mar 19 Mar 2013 - 23:14 | |
| Absolument Klaus, je ne pense pas que cette modification soit des plus complexe à mettre en oeuvre. J'essayais juste de répondre à Cosmos par rapport à ses demandes. En tout cas comme dit plus haut, je suis pour ces ajouts. | |
| | | papydall
Nombre de messages : 7007 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: On_Sprite_Click N,L Mer 20 Mar 2013 - 0:17 | |
| Bien que je n’eusse jamais essayé d’utiliser les sprites dans mes codes, j’ai voté pour ! Je pense que toute évolution de PANORAMIC est la bienvenue.
| |
| | | Invité Invité
| Sujet: Re: On_Sprite_Click N,L Mer 20 Mar 2013 - 0:19 | |
| Je vais arrêter d'intervenir sur ce sujet après avoir apporter cer dernier points. Vos souhaits d'amélioration de Panoramic sert justement à cela. Mais ce que je n'aime pas, c'est le sondage. Pourquoi un sondage?: Pour mettre devant toutes les autres demandes en avant plan, et repousser les autres. Il est évident que je suis d'accord pour cette commande, et je ne m'en cache pas. Mais déjà que c'est une demande sur laquelle Jack affectionne, donc elle passe devant, mais en plus on veut mettre devant les arguments que qu'il laisse le reste de dôté, et prendre celle-là devant. Je trouve cela un peu fort. Je n'ai jamais en faisant une demande, fait le forcing pour qu'un sujet qui m'intéresse, soit mis devant. Je m'en serais voulu, et c'est pas dans mes principes. Mais vous agissez comme d'une autre manière, et permettez moi de le dire, je ne suis pas d'accord. Cela me semble incorrect pour tout ceux qui était devant. Plus d'une fois Jack a dit qu'il mettait les demandes dans sa To-list comme vous dites, et qu'il essayait de la prendre à la suite (et c'est aussi vrai qu'il y a longtemps qu'il ne le dit plus) et chaque fois il déroge à cette règle. C'est pas du jeu. Si Jack avait dit :'je prendre compte de la demande, mais je ferais mon langage comme je l'entend, cela aurait été différent. Tout en gardant Panoramic, car comme dit Jean-Claude; - Citation :
- J'aime Panoramic car c'est un langage simple et performant
et permet de faire des programmes performant, comme j'ai pu en faire, et vous aussi, j'aurai aussi appris un autre langage pour faire les choses qui m'ont remis à programmer. Car j'ai des programmes que je voudrais absolument faire, et que je ne peux pas. Un dernier point: - Citation :
- Par contre, j'ai du mal à comprendre ton vote.
J'ai lancé ( avec le sondage ) une idée en l'air. Là, je la prend sur le coin de la gueule, aïe!!!... tant pis pour moi. Je pense qu'il y a une exagération dans ce propos. Cela voudrais dire qu'on a le droit de penser comme toi, mais que je n'ai pas le droit de voter contre. Drôle de sondage. J'en ai marre de faire des tartines pour expliquer peut de chose. Je m’arrête là et je ne fais plus aucune réponse sur ce sujet. Et il ne m'intéresse pas de rouvrir un sujet de bavardage la dessus. Vous avez mon opinion, et vous avez le votre. Et moi par contre vos opinions, je les considère comme valable. C'est ça la démocratie. C'est d'avoir une opinion différente, et non pas penser que' je la fous dans le coin de la g....'. Bonsoir, Bonne nuit! Faites les commentaires que vous voulez. Pour moi c'est clos. Tout a été dits. Et ce n'est que mon point de vue, comme je pense avoir le droit d'avoir. De toute façon je ne ferais plus de demande. |
| | | Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 20 Mar 2013 - 0:55 | |
| Moi aussi j'en ai plein le "bip..." de me justifier mes propos ! Je proposais de joindre un "sondage" car c'est le nom que cela porte dans l'éditeur du forum, pour que Jack est une idée de combien de panoramiciens sont intéressés par la demande . Si sur 100 avis exprimés 90 on dit oui, c'est que c'est une commande attendue par une majorité et plus nécessaire à la vie du langage qu'une demande ou seulement 2 sur 100 ont dit oui . Ce n'était rien de plus qu'une proposition et tout un chacun est libre de le faire ou pas !Tu dis que je n'acceptes pas ton choix de dire. Mais si ! je l'accepte ! ce sont tes arguments qui sont bidons ! Tu me dirais , non, il y a des instructions qui me paraissent plus importantes avant avec un petit exemple, j'applaudirai des deux mains, en me disant oui effectivement c'est vrai ou en contre argumentant. Là tu me dis oui mais je vote non... Et puisqu'il en va ainsi, je stoppe mes demandes et .... | |
| | | Jack Admin
Nombre de messages : 2386 Date d'inscription : 28/05/2007
| Sujet: Re: On_Sprite_Click N,L Mer 20 Mar 2013 - 21:35 | |
| Pouvoir cliquer sur un SPRITE est une fonction qui manque à un SCENE2D. Mais terriblement difficile à faire. Car l'image qui s'affiche sur le SCENE2D est le résultat d'une fusion du fond et des sprites: ce n'est rien d'autre qu'une image. C'est comme si je prenais une rue en photo et que je veuille cliquer sur la voiture rouge en stationnement ... alors que ce n'est qu'une tache colorée d'une image ... Ce qui est possible de faire, c'est d'introduire la notion de curseur et d'affecter un sprite au curseur de la souris (croix, rond, carré, ...) et de tester la collision du curseur avec un sprite du SCENE2D.
Il manque aussi d'autres choses importantes au SCENE2D: la collision des sprites (par "pixel perfect" ou par rectangle englobant) et une "profondeur" qui permettrait à des sprites de passer dessus ou dessous d'autres sprites. Tout cela, j'ai l'intention de le faire. Mais il me faut le temps de les mettre en place... | |
| | | Froggy One
Nombre de messages : 586 Date d'inscription : 06/01/2012
| Sujet: Commentaire inutile... mais ça fait du bien !!! Mer 20 Mar 2013 - 21:50 | |
| Patience, courage, zénitude... Moi j'aimerais que... Non, je plaisante!VIVE LE TRAVAIL D’ÉQUIPE !!! Déjà que seul, je n'arrive pas à faire tout ce que je veux pour moi, alors en groupe... | |
| | | Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 20 Mar 2013 - 22:59 | |
| Merci de ta réponse Jack, Il me semblait bien qu'il y avait un problème technique à la chose. Je prends donc mon mal en patience... | |
| | | papydall
Nombre de messages : 7007 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: On_Sprite_Click N,L Mer 20 Mar 2013 - 23:06 | |
| Hélas, on ne peut pas te donner un peu de temps de notre temps, Jack ! | |
| | | Klaus
Nombre de messages : 12294 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: On_Sprite_Click N,L Jeu 21 Mar 2013 - 1:09 | |
| @Jack: Voici une simulation de l'identification du sprite cliqué en Panoramic pur. L'exemple utilise deux sprites, un tableau contenant, pour chaque sprite, son numéro, la largeur et sa hauteur. Lors d'un clic dans le scene2d, on parcourt cette liste et on teste si le clic correspond à un rectangle du sprite. La boucle parcourt la liste de la fon vers le début pour tenir compte de la superposition des sprites: - Code:
-
label click dim i%, x%, y%, ns% dim number_sprite_click%
scene2d 1 : on_click 1,click
ns% = 2 : ' 2 sprites dim sprites%(ns%,2)
sprite 1 : sprite_position 1,300,10 sprite_file_load 1,"file_1.bmp" : ' ex: taille 30x100 pixels sprites%(1,0) = 1 : " numéro du premier sprite sprites%(1,1) = 300 : ' largeur du premier sprite sprites%(1,2) = 10 : ' largeur du premier sprite
sprite 2 : sprite_position 2,10,50 sprite_file_load 2,"file_2.bmp" : ' ex: taille 120x120 pixels sprites%(2,0) = 1 : " numéro du premier sprite sprites%(2,1) = 120 : ' largeur du premier sprite sprites%(2,2) = 120 : ' largeur du premier sprite
end
click: number_sprite_click% = 0 : ' supposer "aucun sprite n'est cliqué" x% = mouse_x_left_down(1) y% = mouse_y_left_down(1) for i%=ns% to 1 step -1 : ' boucle sur les sprites existants ' test si l'abscisse du clic correspond à ce sprite if x%>=sprite_x_position(sprites%(i%,0) if x%<(sprite_x_position(sprites%(i%,0))+sprite_x_position(sprites%(i%,1))) ' test si l'ordonnée du clic correspond à ce sprite if y%>=sprite_y_position(sprites%(i%,0) if y%<(sprite_y_position(sprites%(i%,0))+sprite_y_position(sprites%(i%,2))) ' alors on a identifié le sprite number_sprite_click% = sprites%(i%,0) return end_if end_if end_if end_if next i% return En Delphi, ceci est infiniment plus simple, à l'aide de la fonction PtInRect() de Delphi.
Dernière édition par Klaus le Jeu 21 Mar 2013 - 16:03, édité 1 fois | |
| | | Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 21 Mar 2013 - 2:04 | |
| Vérifies Klaus, j'ai des messages d'erreur "Not logical expression" Mais bon si y'a moyen de moyenner çà dans une dll... Je vois que pour le moment, il me faut passer par des tableaux de variable pour recréer des grilles de valeur et au bout d'un moment une chatte n'y retrouve plus ses petits... Et ce n'est valable que sur des positions définies vers des positions définies. Je n'ose même pas imaginer sur des positions non définis ou là les tableaux devraient prendre en compte chaque pixel... Essayes de visualiser pour un scene2d de 800x800 Edit : rassures toi, je n'ai pas encore d'inspiration pour un tel jeu J' en remets une couche car j'arrivais pas à l'exprimer tout à l'heure: le fait que le sprite devienne un objet avec son numéro cliquable et par conséquent que l'on puisse récupérer le numéro du sprite cliqué fait qu'au lieu d'affecter des valeurs sur le scene2d on les affecterait au sprite... et là... ...çà devient presque un jeu d'enfants .... | |
| | | Klaus
Nombre de messages : 12294 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: On_Sprite_Click N,L Jeu 21 Mar 2013 - 16:24 | |
| J'ai corrigé deux lignes - il y avait une parenthèse fermante en trop. Ce code a été saisi directement dans la page du forum, sans passer par l'éditeur. C'est juste pour montrer le principe: 1. on a un tableau contenant 3 informations pour chaque sprite: - son numéro - sa largeur - sa hauteur sa position x et y est connue par les fonctions sprite_x_position() et sprite_y_position(), donc pas besoin de les mémoriser 2. pour chaque clic dans le scene2d, on obtient les coordonnées par mouse_x_left_down() et mouse_y_left_down() 3. on fait une boucle, commençant au dernier sprite créé et terminant par le premier, et on vérifie si le clic a lieu à l'intérieur du rectangle dont le coin en haut à gauche est fourni par la position du sprite, et les coordonnées du coin en bas à droite s'obtiennent en additionnant les dimensions du sprite mémorisés dans le tableau 4. dès qu'on constate que le clic est à l'intérieur d'un sprite, on met sont numéro (mémorisé dans le tableau) dans la variable number_sprite_click, et à ce moment, on devrait théoriquement déclencher l'évènement on_sprite_click dont la routine aurait été enregistrée par la commande ON_SPRITE_CLICK N,R, avec N étant un numéro de sprite et R le nom d'un label Panoramic. Ceci concerne bien sur uniquement le noyau de Panoramic si c'est fait par Jack - le morceau de code présenté ici ne peut pas faire cela. Ce code ne sert qu'à montrer comment on peut facilement détecter le sprite visé. Le fait de faire la boucle à l'envers tient compte de la superposition des sprites. En effet, et dans l'état actuel de Panoramic, chaque nouveau sprite créé est placé "par-dessus" tous les autres. En commençant donc par le dernier, on a systématiquement celui qui est au-dessus, et on ne détecte pas un sprite qui serait caché par un autre. Cette technique de détection test valable quelque soit la taille su scene2d. Et en delphi, cette suite de 4 IFs imbriqués se remplace par une seule lgne:* - Code:
-
if PtInRect(RectangleDuSprite, PointDuClic) then ..... // détection du sprite visé
On ne travaille pas du tout sur l'image affichée, dans laquelle on ne peut effectivement pas savoir quel sprite est visé. On travaille uniquement avec les propriétés du sprite qui sont forcément mémorisées dans une table interne à Panoramic (numéro, position, dimension), et rien d'autre entre en ligne de compte. Et à condition d'ajouter une extension de ces tables pour ajouter la mémorisation du nom de l'évènement ON_SPRITE_CLICK, le déclenchement de l'évènement se fait exactement de la même manière que pour un ON_CLICK den'importe que objet. Je souligne au passage que si cette modification est faite, cela ne transforme pas pour autant un sprite en objet Panoramic clasique ! Il reste un sprite avec sa série de numérotation totalement indépendante des numéros des objets. Il acquiert simplement de nouvelles capacités, c'est tout. Rien d'autre ne change dans la logique de Panoramic. | |
| | | Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 21 Mar 2013 - 17:23 | |
| Je pense que tu viens d'ouvrir une piste pour Jack et je garde en favoris cette page avec ta démo pour une étude approfondie de la chose Merci à toi pour cette nouvelle fonction. | |
| | | Jack Admin
Nombre de messages : 2386 Date d'inscription : 28/05/2007
| Sujet: Re: On_Sprite_Click N,L Jeu 21 Mar 2013 - 19:35 | |
| @Klaus: Oui, je vois bien ce que tu veux faire, et c'est le premier algorithme qui vient à l'esprit. Malheureusement, ce n'est pas si simple car un SPRITE n'est pas rectangulaire et il faut tenir compte de la couleur transparente (qui est le noir pour Panoramic). J'utilise ton algorithme pour ce sprite représentant un personnage sous forme d'ellipse verticale: J'utilise un fond bleu ciel. Le personnage va donc apparaitre ainsi: Maintenant, si je clique en A, ça fonctionne. Mais si je clique en B, ça fonctionne aussi, car je clique à l'intérieur du rectangle qui a servi à définir mon sprite. Or, pour un joueur qui clique en B, il a cliqué à côté du personnage et pour lui, le clic ne doit pas être actif. Et là, j'entends déjà tous les joueurs crier: au bug ! au bug ! et intervenir sur le forum: BUG, BUG, BUG ON_SPRITE_CLICK NE FONCTIONNE PAS !!! Un joueur n'a pas notion de SPRITE et de son rectangle de définition (rectangle englobant pour reprendre les termes classiques), il ne connait que ce qui est représenté par le SPRITE, ce que j'ai appelé le personnage. Et mon raisonnement se base sur une forme simple. Imagine un sprite concave ou en forme d'anneau (qui a des "trous") à l'intérieur ... Autre chose: Imagine un sprite n°1 comme celui que j'ai fait (ellipse) et un sprite en forme d'anneau n°2 devant lui. Ou clique dans la partie creuse de l'anneau. Si on part du sprite ayant le plus grand numéro comme dans ton algorithme, on s'arrête au numéro 2 car le clic est dans son rectangle. Or, c'est sur le sprite n°1 qu'on a cliqué... Et là, nouvelle avalanche de messages: BUG, BUG, BUG NUMBER_SPRITE_CLICK NE FONCTIONNE PAS !!! | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: On_Sprite_Click N,L Jeu 21 Mar 2013 - 20:53 | |
| bsr klaus je peut te proposé un système pour installé un picture de 30X30 dans un autre picture plus grand en ce moment je suis en train de créer un pacman avec un editeur de circuit ça pourrait vous donné des idées avec des sprite je n'ai pas fait de teste mais ça doit marché donc le picture de 30X30 je l'installe ou je veut dans un picture de 570X570 sur un point tres precis voici un extrai du code - Code:
-
selection: n=number_click 2d_target_is n 2d_image_copy 30,0,0,30,30 2d_target_is 51 2d_image_paste 30,0,0 return
xmou=int(mouse_x_left_down(1)/30)+1 x=-30+(30*xmou) ymou=int(mouse_y_left_down(1)/30)+1 y=-30+(30*ymou) item_delete 101,ymou
2d_target_is 1 2d_image_paste 30,x,y gob(xmou,ymou)=str$(n)
si tu veut le code complet tu peut le telechargé ici: gob v1ou directement sur mon webdav:panoramic@pascal10000 :code panoramic123 bonsoir! | |
| | | Contenu sponsorisé
| Sujet: Re: On_Sprite_Click N,L | |
| |
| | | | On_Sprite_Click N,L | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |