Question

Je travaille sur un jeu Connect Four en utilisant Common Lisp et le LispWorks CAPI . Je suis fini avec l'interface sauf pour une chose: j'utiliser des boutons-poussoirs (dans un panneau de bouton-poussoir) pour déposer des pièces dans les colonnes, et je voudrais désactiver un bouton une fois la colonne correspondante est pleine. Je suis relativement nouveau à Lisp, et je ne comprends surtout pas l'étoffe orientée objet, donc je ne peux pas comprendre comment le faire.

Un seul bouton-poussoir peut être créé thisly:

(setf my-button (capi:contain
                 (make-instance 'capi:push-button
                                :text "Button!")))

Et désactivé ainsi:

(capi:apply-in-pane-process 
 my-button #'(setf capi:button-enabled) nil my-button)

Un bouton-poussoir du panneau est créé de manière similaire sauf qu'il prend un argument :items qui est une liste de boutons (ou données, l'ICPA créer des boutons de) être dans le panneau.

J'ai simplement besoin de savoir comment désactiver les boutons individuels d'un panneau de bouton-poussoir. il serait également bien si vous pouviez expliquer ce qui se passe dans ce dernier morceau de code, parce que je ne comprends pas du tout.

Merci!

Était-ce utile?

La solution

Un peu de recherche dans le manuel révèle cette fonction , ce qui vous permet d'activer / désactiver un ou plusieurs éléments dans un push-button-panel. En outre, le code que vous voulez expliqué appelle la fonction (setf capi:button-enabled) avec les arguments nil et my-button. Cependant, cette fonction est appelée dans le « processus » associé à votre bouton. (Consultez la documentation

(PS Si vous avez besoin d'aide pour comprendre les « trucs orientée objet », pratique Common Lisp pourrait être une ressource utile)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top