Pharo Smalltalk의 Announcement를 사용해 냉동실 청지를 만들어 봤다.

7773 단어 Pharozundoko
개요
@sumim씨의 게임 이름: Squeak Smalltalk에 촉발,Pharo
Smalltalk의 Announcement를 사용하여 냉동 병아리를 만들었다.
청지가'준','준','준','docom'을 부르자 시청자들은'청지!'이렇게
방침.
청지는 전문 가수다.나는 많은 청중을 향해 노래를 불렀다.그래서 청지와 관중이 직접 결합하는 것은 좋지 않다.
스타와 청중 사이에 선을 그어야 한다.
따라서 Pharo Smalltalk를 사용하는 Announcement 메커니즘이 분리됩니다.
이루어지다
청렴한 뜻의 실복
클래스 정의는 다음과 같습니다.
Kiyoshi
Object subclass: #Kiyoshi
    instanceVariableNames: 'announcer'
    classVariableNames: ''
    category: 'ズンドコキヨシ'
announcer 초기화 지연을 포함하는 액세서리를 정의합니다.
Kiyoshi
announcer
    ^ announcer ifNil: [ announcer := Announcer new ]
이렇게 되면 청지는 청중에게 방송을 보낼 수 있을 것이다.
그럼 방송 내용을 정의합시다.
Phrase
Announcement subclass: #Phrase
    instanceVariableNames: 'word'
    classVariableNames: ''
    category: 'ズンドコキヨシ'
그런 다음 Phrase에서 액세스 및 인스턴스 생성을 정의합니다.
Phrase
word
    ^ word
Phrase
word: aString
    word := aString
Phrase_class
with: aString
    ^ self new word: aString
키요시가 노래한다.
Kiyoshi
sing: aString
    Transcript show: aString.
    self announcer announce: (Phrase with: aString)
복사창에 언어를 표시하고 이를 가사(Phrase)로 브로드캐스트합니다.
전문 가수가 되면 솔라로 자신이 가장 잘하는 노래를 부를 수 있다.그럼요.
Kiyoshi
ズン
    self sing: 'ズン'
Kiyoshi
ドコ
    self sing: 'ドコ'
물론 애드리브도 가능합니다.
Kiyoshi
singRandom
    (Random new nextInt: 5) = 1
        ifTrue: [ self ドコ ]
        ifFalse: [ self ズン ]
청중의 설치
청중들은 라디오를 듣고'준','준','준','docom'을 들을 때'청지!'이렇게
Audience
Object subclass: #Audience
    instanceVariableNames: 'memory'
    classVariableNames: ''
    category: 'ズンドコキヨシ'
우선 뜻을 똑똑히 듣는 노래를 들으러 가자.
Audience
listenTo: aKiyoshi
    aKiyoshi announcer subscribe: Phrase send: #hear: to: self
청지는 가사(Phrase)를 방송하면 스스로 듣게 한다.
그럼, 들어 보세요.
Audience
hear: aPhrase
    self memory add: aPhrase word.
    (self memory endsWith: #('ズン' 'ズン' 'ズン' 'ズン' 'ドコ'))
        ifTrue: [ 
            self sing: 'キヨシ!'.
            self memory removeAll ]
아, 물론memory의 지연 초기화 액세서리도 정의해야 합니다.
Audience
memory
    ^ memory ifNil: [ memory := OrderedCollection new ]
그 다음은 합창단.
Audience
sing: aString
    Transcript show: aString; cr
다 했어!
테스트
그러면 게임 라운드와 스크립트 창을 열고 다음 코드를 실행해 보세요.
Playground
kiyoshi := Kiyoshi new.
audience := Audience new.
audience listenTo: kiyoshi.
그리고 나서
Playground
kiyoshi ズン;ズン;ズン;ズン;ドコ;ズン;ズン;ドコ;ドコ;ズン;ズン;ズン;ズン;ドコ
를 입력합니다.

대화 상자.잘 됐다!
그럼 애드리브를 발휘해 주세요. 다시 한 번!
Playground
100 timesRepeat: [ kiyoshi singRandom ]
그래서 이렇게 됐어요.

총결산
Pharo Smalltalk를 사용하는 Announcement라는 방송기관은 청지와 청중을 강하게 결합시키지 않고down 청지를 만들어 보았다.
기존의changed: 업데이트:를 기반으로 한 방송기관에 비해 업데이트: 보일러판이 필요 없고 상징적인 방송 내용을 사용할 수 있을 뿐만 아니라 필요한 방송도 선택할 수 있기 때문에 자유도가 조금 높아졌다.

좋은 웹페이지 즐겨찾기