Frage

Ich arbeite an einem Connect Four -Spiel mit Common Lisp und der Lispworks Capi. Ich bin mit der Schnittstelle fertig, bis auf eines: Ich verwende Push-Buttons (in einer Push-Button-Panel), um Teile in die Säulen zu fallen, und ich möchte eine Taste deaktivieren, sobald die entsprechende Spalte voll ist. Ich bin relativ neu in Lisp und verstehe das objektorientierte Zeug besonders nicht, also kann ich nicht herausfinden, wie es geht.

Ein einzelner Push-Knopf kann so erstellt werden:

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

Und so behindert so:

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

Eine Push-Button-Panel wird ähnlich erstellt, außer dass es eine braucht :items Argument, dass es sich um eine Liste von Schaltflächen (oder Daten, aus denen die CAPI Schaltflächen erstellt), um sich im Panel zu befinden.

Ich muss lediglich wissen, wie man die einzelnen Tasten einer Push-Button-Panel deaktiviert. Es wäre auch schön, wenn Sie erklären könnten, was in diesem letzten Code dort passiert, weil ich es überhaupt nicht verstehe.

Vielen Dank!

War es hilfreich?

Lösung

Ein bisschen Suchen durch das Handbuch enthüllt diese Funktion, was es Ihnen ermöglicht, ein oder mehrere Elemente in a zu aktivieren/zu deaktivieren push-button-panel. Auch der von Ihnen gewünschte Code ruft die Funktion auf (setf capi:button-enabled) mit den Argumenten nil und my-button. Diese Funktion wird jedoch im "Prozess" aufgerufen, der Ihrer Schaltfläche zugeordnet ist. (Siehe Dokumentation hier

(PS Wenn Sie Hilfe beim Verständnis des "objektorientierten Zeugs" benötigen, Praktisches gemeinsames Lisp könnte eine nützliche Ressource sein)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top