OBY26
またまた修正でっす!
さすがにここまでくると初心者ってこともあるけど、根がアバウトとなおいらの性格もあいまって
いろいろと問題が起こってきちゃいます。ってなことでまたまた修正っす。
■メソッドを修正します。
● ObyEyeクラスeyeSizeメソッド
opennessを追加したので目の大きさをEyeSizeで拡大・縮小しちゃったりすると
目の位置がへんてこになっちまいます。
そうならないようにeyeSizeメソッドに一行追加しまする。
拡大・縮小する度に現在の大きさをeyeExtentに入れて覚えさせておくのだ。
--------------------------------------------
eyeSize: aExtent
| previousCenter |
previousCenter _ self eye center.
self eye extent: aExtent.
eyeExtent _ aExtent.
self eye align: self eye center with: previousCenter.
(self eye containsPoint: self iris center) ifFalse: [self lookAtFront]
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● ObyクラスaddFaceメソッド
部品を追加する場合、今ある部品を削除してから追加するようにします。
髪の毛と帽子ではやったんだけどface,eyes,nose,lips,earsはやってないの追加修正ね。
--------------------------------------------
addFace
face ifNotNil: [ face delete].
"顔の生成"
face _ ObyFace new.
self addMorphBack: face.
face align: face center with: self center.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
addEyes,addNose,addLips,addEarsも同様に修正します。
HeadMorphみたいな顔も表現したいんで鼻の穴バージョンの鼻も用意するです。
● ObyNoseクラスにイスタンス変数を追加
そのまえにいくつかのインスタンスを追加しときます。
noseBlank,noseColor,glossColor,leftHole,rightHoleです。
--------------------------------------------
Morph subclass: #ObyNose
instanceVariableNames: 'noseSkin gloss noseBlank noseColor glossColor leftHole rightHole'
classVariableNames: ''
poolDictionaries: ''
category: 'ObyMorph'
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● ObyNoseクラスholesNoseメソッド
鼻の穴バージョンの追加でござる。
--------------------------------------------
holesNose
| s |
"現在の鼻のサイズと色を取得"
s _ noseSkin extent.
noseColor _ noseSkin color.
glossColor _ gloss color.
"現在の鼻を削除"
noseSkin delete.
"鼻の生成"
noseSkin _ RectangleMorph new.
noseSkin extent: s.
noseSkin borderWidth: 0.
noseSkin color: Color transparent.
leftHole _ EllipseMorph new.
leftHole color: Color black.
leftHole extent: 2.
noseSkin addMorph: leftHole.
leftHole align: leftHole center with: noseSkin center - (noseBlank // 2 @ 0).
rightHole _ EllipseMorph new.
rightHole color: Color black.
rightHole extent: 2.
noseSkin addMorph: rightHole.
rightHole align: rightHole center with: noseSkin center + (noseBlank // 2 @ 0).
self addMorph: noseSkin.
noseSkin align: noseSkin center with: self center.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● ObyクラスholesNoseメソッド
Obyからもアクセスできるようにします。
--------------------------------------------
holesNose
self nose holesNose.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● ObyNoseクラスnoseBlankメソッド
鼻の穴の間隔を調整するメソッドも追加ね。
--------------------------------------------
noseBlank: aNum
noseBlank _ aNum.
leftHole align: leftHole center with: noseSkin center - (noseBlank // 2 @ 0).
rightHole align: rightHole center with: noseSkin center + (noseBlank // 2 @ 0).
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● ObyクラスnoseBlankメソッド
Obyからもアクセス可能にします。
--------------------------------------------
noseBlank: aNum
self nose noseBlank: aNum
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● ObyNoseクラスnoseBlankメソッド
noseBlankを返すメソッドね。
--------------------------------------------
noseBlank
^ noseBlank
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● ObyNoseクラスleftHoleメソッド
leftHoleを返すメソッド。
--------------------------------------------
leftHole
^ leftHole
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● ObyNoseクラスrightHoleメソッド
rithtHoleを返すメソッド。
--------------------------------------------
rightHole
^ rightHole
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● ObyNoseクラスellipseNoseメソッド
鼻の穴のバージョンのメソッドを追加したのでそれに関係するメソッドも修正するです。
鼻のテカリ(gloss)の部分の追加。
同じようにpolygonNose,rectangleNose,sketchNose,triangleNoseもやっちゃうっす。
--------------------------------------------
ellipseNose
| s |
"現在の鼻のサイズと色を取得"
s _ noseSkin extent.
glossColor _ gloss color.
"現在の鼻を削除"
noseSkin delete.
"鼻の生成"
noseSkin _ EllipseMorph new.
noseSkin extent: s.
noseSkin borderWidth: 1.
noseSkin color: noseColor.
self addMorph: noseSkin.
noseSkin align: noseSkin center with: self center.
"ハイライト"
gloss _ EllipseMorph new.
gloss color: glossColor.
gloss borderWidth: 0.
gloss extent: 10@10.
gloss position: noseSkin position + 5.
noseSkin addMorph: gloss.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● ObyNoseクラスnoseColorメソッド
noseColorを返すメソッド。
--------------------------------------------
noseColor
^ noseColor
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● ObyNoseクラスglossColorメソッド
glossColorを返すメソッド。
--------------------------------------------
glossColor
^ glossColor
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
★インスタンスを出してみる
--------------------------------------------
boby _ Oby new openInWorld.
boby holesNose
--------------------------------------------
Alt + d ( Cmd + d )
▲PREV ------ ● TOP ● ------ NEXT▼
■ MEMO ■
Saturday, 24 April 2004, 4:20:02 am
ちなみにここまでのソースコード。--thoru
ObyMorph.st
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
- OBY25 last edited on 17 June 2007 at 7:25:33 am by localhost.localdomain
- OBY27 last edited on 18 June 2007 at 5:32:52 am by localhost.localdomain