El método handlesMouseOver:, implementado en la clase morph
SpaceWar, devuelve verdadero para que el juego sea informado
de los eventos de paso del ratón en métodos dedicados.
SpaceWar>>handlesMouseOver: event ^ true
Debes buscar el método Morph>>handlesMouseOver: y leer el
comentario. Habla sobre un mensaje #mouseEnter:; implementamos el
método correspondiente en la clase SpaceWar con los
comportamientos descritos anteriormente:
SpaceWar>>mouseEnter: event event hand newKeyboardFocus: self. self startStepping
El mensaje #mouseLeave: se envía a nuestra instancia
SpaceWar cada vez que el cursor del ratón sale (abandona) el
juego. Por lo tanto, añadimos el método homónimo a la clase
SpaceWar:
SpaceWar>>mouseLeave: event event hand releaseKeyboardFocus: self. self stopStepping
El mensaje #handlesKeyboard se envía a un morph para saber si desea
recibir eventos del teclado. El morph responde true a este
mensaje para indicar su interés en los eventos del
teclado. Implementamos el método en la clase SpaceWar:
SpaceWar>>handlesKeyboard ^ true
Designamos los caracteres como $w $a $s $d. Añadimos el siguiente
código al método SpaceWar>>keyStroke:
key = $w ifTrue: [^ ships second push]. key = $d ifTrue: [^ ships second right]. key = $a ifTrue: [^ ships second left]. key = $s ifTrue: [^ ships second fireTorpedo]