View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide

OBY21

PREV ------ ● TOP ● ------ NEXTUploaded Image: imager.jpg


言葉を投げつけるっす

オビーから相手(モーフ)に向かって言葉を投げつけるようにしたかったんで
挑戦してみますた。


■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 )

      Uploaded Image: image2.jpg



--------------------------------------------
boby shotWord: target string: 'Hello'
--------------------------------------------
Alt + d ( Cmd + d )

      Uploaded Image: image.jpg







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