OBY21
言葉を投げつけるっす
オビーから相手(モーフ)に向かって言葉を投げつけるようにしたかったんで
挑戦してみますた。
■WordBulletクラスを作る
● WordBulletクラス
まあ言葉の弾丸ってことで
TextMorphを親にしてWordBulletを作ります。
targetは相手のモーフ、angleは相手のいる角度が入るインスタンス変数。
--------------------------------------------
TextMorph subclass: #WordBullet
instanceVariableNames: 'target angle '
classVariableNames: ''
poolDictionaries: ''
category: 'ObyMorph'
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
■メソッドを追加します。
● stepメソッド
言葉(自分ね)が相手のいる角度に向かって移動します。
もし相手に言葉が当たったら自分を削除させます。
当たらない場合の処理もしときまする。
--------------------------------------------
step
super step.
self position: self position + (Point r: 4 degrees: angle).
(self bounds containsPoint: target center) ifTrue: [
self delete].
self left ActiveWorld left ifTrue: [
self delete].
self right > ActiveWorld right ifTrue: [
self delete].
self top ActiveWorld top ifTrue: [
self delete].
self bottom > ActiveWorld bottom ifTrue: [
self delete].
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● stepTimeメソッド
まあ0ってことで
--------------------------------------------
stepTime
^ 0
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● setTargetメソッド
相手のモーフを設定する
--------------------------------------------
setTarget: aMorph
target _ aMorph
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● setAngleメソッド
相手のいる角度を設定する
--------------------------------------------
setAngle: aAngle
angle _ aAngle
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
■Obyクラスにメソッドを追加
● shotWordメソッド
言葉を発射するメソッドです。
WordBulletを生成し
ターゲットのモーフを設定
表示するテキスト設定
口の位置から発射するように設定
Obyのサブモーフにします。
相手のいる角度を調べて設定
WordBulletのstepを開始する
--------------------------------------------
shotWord: aMorph string: aString
| tb |
tb _ WordBullet new.
tb setTarget: aMorph.
tb contentsAsIs: aString.
tb position: self lips center.
self addMorph: tb.
tb setAngle: (aMorph center - self lips center) degrees.
tb startStepping.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
★インスタンスを出してみる
--------------------------------------------
boby _ Oby new openInWorld
target _ EllipseMorph new openInWorld.
--------------------------------------------
Alt + d ( Cmd + d )
--------------------------------------------
boby shotWord: target string: 'Hello'
--------------------------------------------
Alt + d ( Cmd + d )
▲PREV ------ ● TOP ● ------ NEXT▼
■ MEMO ■
Monday, 19 April 2004, 9:51:02 pm
言葉の代わりにボールとか投げつけるってのもバリエーションでできるな・・・。--thoru
Monday, 19 April 2004, 9:43:41 pm
stepで使ってるWorldとのアタリ判定はsumimさんのSpringDemo.prのソースからぱくっちゃった・・・(汗)--thoru
Links to this Page
- I BOBY last edited on 28 April 2004 at 8:57:55 pm by tk0005-202x210x196x109.ap-TK.usen.ad.jp
- OBY20 last edited on 18 June 2007 at 5:35:41 am by localhost.localdomain
- OBY22 last edited on 18 June 2007 at 5:29:59 am by localhost.localdomain