|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 689 ![]() |
Bonjour !
J'ai pensé intituler cette discussion Détournement de démineur mais réflexion faite je me suis abstenu. J'ai donc étudié le code du Démineur de Paul TOTH. J'en ai extrait pour mon propre usage plusieurs exemples indépendants, dont cette ébauche d'un damier. En cliquant sur les petits carrés, vous les faites changer de couleur. On remarquera la simplicité du code relatif à la souris ! Code :
1° Les noms de variable x et y sont utilisés à la fois pour des variables globales, pour des variables locales et pour des paramètres. Quelle est la règle dans ce cas ? 2° Dans cette ligne : onRelease := doRelease;, la procédure doRelease est traitée comme une fonction. Comment est-ce possible ?
__________________
L'Art est long et le Temps est court. |
||
|
|
00
|
|
|
#2 | |
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 028 ![]() |
je me permets d'essayer de répondre puisque Paul n'est pas là...
Variables globales et variables locales en même temps, ce n'est pas possible. Paramètres aucun soucis quels que soient les cas. Utilise avantageusement directement procedure onRelease plutôt que onRelease:=doRelease; Il me le fait remarquer à chaque fois.. Attention le on en minuscule et R de release en majuscule, sinon ça ne marche pas.
__________________
Citation:
|
|
|
|
00
|
|
|
#3 | ||||||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 689 ![]() |
Merci pour ta réponse.
J'aurais dû préciser que je parlais du code original : Code :
Code :
Code :
__________________
L'Art est long et le Temps est court. |
||||||
|
|
00
|
|
|
#4 | |
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 028 ![]() |
Pour la boucle for to do, ce doit être une variable locale sinon ça ne marche pas. Donc la variable globale dans ce cas est ignorée...
Il peut en effet y avoir un souci si on initialise une variable locale et qu'on la mette en paramètre...laquelle de la variable locale ou globale sera retenue ...? Ce n'est pas conseillé...
__________________
Citation:
|
|
|
|
00
|
|
|
#5 | |
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 028 ![]() |
Pour ta réponse, c'est le paramètre qui est pris en compte et pas la variable globale.
__________________
Citation:
|
|
|
|
00
|
|
|
#6 | ||||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 427 ![]() |
Bonjour,
voici quelques explications il n'y a jamais de confusion entre x local, global ou paramètre...en fait une règle simple en Pascal c'est de remonter dans le code pour savoir de quoi on parle. Code :
autre précision au cas zou Code :
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
||||
|
10
|
|
|
#7 |
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 417 ![]() |
Hie,
Toute une discussion à propos des noms des variables de divers niveaux. Une règle basique pour éviter toute ambiguïté est d'utiliser des noms différents, ne serait-ce que pour éclaircir la lecture (on oublie assez facilement qu'on a une variable locale nommée x, comme un paramètre de la fonction et ou une variable globale, d'où des confusions qui ne sont pas toujours aisées à résoudre. Pour éviter ça, faire un effort sur les noms n'est pas difficile, non ?
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
10
|
|
|
#8 |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 689 ![]() |
Une discussion très instructive, comme d'habitude. Merci à Paul pour la leçon claire et précise.
Je suis assez d'accord avec droggo pour éviter les homonymies mais d'un autre côté s'il y a une règle claire et qu'on sait ce qu'on fait (et ce que fera le compilateur!), pourquoi pas ?
__________________
L'Art est long et le Temps est court. |
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 689 ![]() |
Une version améliorée du damier. Si vous le visionnez en plein écran, c'est vraiment joli. J'en parle à mon aise vu que la fonction dont je me suis servi n'est pas de moi. C'est la procédure Circle du Démineur. Pour maquiller l'emprunt, j'ai changé l'en-tête.
Code :
__________________
L'Art est long et le Temps est court. |
||
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 427 ![]() |
ça serait sympa de pouvoir afficher directement les animations Flash dans le forum ...
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|
00
|
|
|
#11 | |
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 028 ![]() |
En effet, ça permettrait d'inciter davantage de développeurs à s'intégrer sur forum... Bonne idée
__________________
Citation:
|
|
|
|
00
|
|
|
#12 | |
|
Expert Confirmé
![]() ![]() Inscription : août 2006 Messages : 3 417 ![]() |
Hie,
Citation:
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir. |
|
|
|
00
|
|
|
#13 | |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 689 ![]() |
Citation:
Autrement, au sujet de la possibilité d'insérer des animations Flash dans les messages, je trouve aussi que ça serait agréable. Pour le moment, il faut se connecter pour pouvoir télécharger les pièces jointes.
__________________
L'Art est long et le Temps est court. |
|
|
|
00
|
|
|
#14 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 689 ![]() |
Bonjour !
Je reviens à mon damier. J'ai entrepris de le transformer en grille de Puissance-4. Il faut donc que j'arrive à faire tomber les pions. Et c'est là que j'aurais besoin d'un coup de main. Comment faire pour que le clic sur une cellule modifie l'état d'une autre cellule ? Bien sûr j'ai pensé au Sender de l'exemple Events, mais comment l'adapter à mon code actuel, je ne vois pas. J'ai pensé aussi ajouter un argument à la procédure doRelease, mais quel argument ? Autrement le programme fonctionne. Code :
__________________
L'Art est long et le Temps est court. |
||
|
|
00
|
|
|
#15 | ||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 427 ![]() |
habituellement je placerais toutes les cellules dans un objet qui gère la souris et le mouvement de la pièce qui tombe mais ces modifications rapides donnent un résultat intéressant
Code :
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
||
|
10
|
|
|
#16 | |
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 689 ![]() |
Citation:
Je joins le fichier compilé pour qu'on puisse voir ce que ça donne. (Il y a deux versions.) Pour la vitesse de l'animation, je trouve qu'avec la valeur par défaut (?) ça va très bien.
__________________
L'Art est long et le Temps est court. |
|
|
|
00
|
|
|
#17 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 689 ![]() |
Voici la suite de mon projet. Il me paraît préférable de continuer la même discussion, même si on s'éloigne un peu du sujet initial.
J'étais donc bien décidé à faire un Puissance-4 en Flash Pascal. J'ai repris le code précédent pour mieux le comprendre et voici ce que j'en ai fait : Code :
Pourrait-on aborder la question de l'architecture d'un jeu de ce type (où l'on joue contre l'ordinateur) ? A quoi pourrait ressembler le squelette d'un tel programme ?
__________________
L'Art est long et le Temps est court. |
||
|
|
00
|
|
|
#18 | |
|
Membre émérite
![]() anthony Enseignant Inscription : avril 2005 Messages : 1 028 ![]() |
je me souviens que ce défi avait été abordé en delphi il y a quelques temps...
Tu as tout ici : http://delphi.developpez.com/defi/puissance4/ amicalement
__________________
Citation:
|
|
|
|
00
|
|
|
#19 |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 427 ![]() |
oui le défi est une bonne source, ensuite pour ce qui est spécifique à Flash, il y a deux choses : soit l'évaluation du coup de l'IA est rapide et ça ne pose pas de problème de le faire, soit c'est long et il faudra trouver un moyen de le segmenter. Je ne pense pas qu'il soit possible d'avoir un Thread en Flash, il faudra donc périodiquement relancer le calcul dans on onEnterFrame (ou avec un Timer c'est possible aussi je pense) jusqu'à ce qu'il soit terminé. Il faudrait faire quelques tests là dessus, je ne sais pas réellement comment ça fonctionne.
petite recherche rapide sur le sujet: http://blog.generalrelativity.org/ac...green-threads/
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|
00
|
|
|
#20 | ||
|
Membre Expert
![]() ![]() Roland ChastainInscription : décembre 2011 Messages : 689 ![]() |
Le problème est intéressant. Dans le cas présent, l'évaluation devrait être instantanée donc je n'aurai pas besoin de recourir à ce genre de technique.
J'ai commencé un nouveau code, en m'inspirant de l'exemple Calc avec ses variables globales. Je pense avoir trouvé la formule qui me convient. Pour simplifier les choses, j'ai dessiné la grille directement dans l'objet _root. Du coup j'ai perdu la jolie animation qu'on pouvait voir dans le code précédent. Je verrai plus tard comment la rétablir. Code :
__________________
L'Art est long et le Temps est court. |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com