Suche senden
Hochladen
Smalltalkでじゃんけん
•
2 gefällt mir
•
3,421 views
M
Masashi Umezawa
Folgen
CROSS 2014 「言語CROSS」でのじゃんけんゲーム課題の解答です
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 13
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
メカニカルキーボード使い始めたら捗った話
メカニカルキーボード使い始めたら捗った話
pmw1415
IMのはなし
IMのはなし
stibear (stibear1996)
ソフトウェア制作実験「脳トレしりとりゲーム」
ソフトウェア制作実験「脳トレしりとりゲーム」
TomomiKondo
メタプログラミングってなに?
メタプログラミングってなに?
KazukiWata
VC++プロジェクト向け難読化ツールの開発
VC++プロジェクト向け難読化ツールの開発
Shuzo Kashihara
アセンブラ短歌 - 坂井弘亮
アセンブラ短歌 - 坂井弘亮
asmtanka
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
Masashi Umezawa
FileManで楽々ファイル操作
FileManで楽々ファイル操作
Masashi Umezawa
Empfohlen
メカニカルキーボード使い始めたら捗った話
メカニカルキーボード使い始めたら捗った話
pmw1415
IMのはなし
IMのはなし
stibear (stibear1996)
ソフトウェア制作実験「脳トレしりとりゲーム」
ソフトウェア制作実験「脳トレしりとりゲーム」
TomomiKondo
メタプログラミングってなに?
メタプログラミングってなに?
KazukiWata
VC++プロジェクト向け難読化ツールの開発
VC++プロジェクト向け難読化ツールの開発
Shuzo Kashihara
アセンブラ短歌 - 坂井弘亮
アセンブラ短歌 - 坂井弘亮
asmtanka
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
Masashi Umezawa
FileManで楽々ファイル操作
FileManで楽々ファイル操作
Masashi Umezawa
TruffleSqueakの紹介
TruffleSqueakの紹介
Masashi Umezawa
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門
Masashi Umezawa
TaskItの紹介
TaskItの紹介
Masashi Umezawa
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Masashi Umezawa
Revealing ALLSTOCKER
Revealing ALLSTOCKER
Masashi Umezawa
TarandocでJSONを永続化
TarandocでJSONを永続化
Masashi Umezawa
Dockerizing pharo
Dockerizing pharo
Masashi Umezawa
今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門
Masashi Umezawa
Tarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒す
Masashi Umezawa
VerStixの紹介
VerStixの紹介
Masashi Umezawa
Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今
Masashi Umezawa
Pyonkeeを鳴らす
Pyonkeeを鳴らす
Masashi Umezawa
Smalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へ
Masashi Umezawa
Tarantalk
Tarantalk
Masashi Umezawa
Smalltalkと型について
Smalltalkと型について
Masashi Umezawa
Introduction of Pharo 5.0
Introduction of Pharo 5.0
Masashi Umezawa
Why!? Smalltalk
Why!? Smalltalk
Masashi Umezawa
Pillarの紹介
Pillarの紹介
Masashi Umezawa
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Masashi Umezawa
NanoStrand
NanoStrand
Masashi Umezawa
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Weitere ähnliche Inhalte
Mehr von Masashi Umezawa
TruffleSqueakの紹介
TruffleSqueakの紹介
Masashi Umezawa
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門
Masashi Umezawa
TaskItの紹介
TaskItの紹介
Masashi Umezawa
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Masashi Umezawa
Revealing ALLSTOCKER
Revealing ALLSTOCKER
Masashi Umezawa
TarandocでJSONを永続化
TarandocでJSONを永続化
Masashi Umezawa
Dockerizing pharo
Dockerizing pharo
Masashi Umezawa
今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門
Masashi Umezawa
Tarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒す
Masashi Umezawa
VerStixの紹介
VerStixの紹介
Masashi Umezawa
Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今
Masashi Umezawa
Pyonkeeを鳴らす
Pyonkeeを鳴らす
Masashi Umezawa
Smalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へ
Masashi Umezawa
Tarantalk
Tarantalk
Masashi Umezawa
Smalltalkと型について
Smalltalkと型について
Masashi Umezawa
Introduction of Pharo 5.0
Introduction of Pharo 5.0
Masashi Umezawa
Why!? Smalltalk
Why!? Smalltalk
Masashi Umezawa
Pillarの紹介
Pillarの紹介
Masashi Umezawa
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Masashi Umezawa
NanoStrand
NanoStrand
Masashi Umezawa
Mehr von Masashi Umezawa
(20)
TruffleSqueakの紹介
TruffleSqueakの紹介
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門
TaskItの紹介
TaskItの紹介
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Revealing ALLSTOCKER
Revealing ALLSTOCKER
TarandocでJSONを永続化
TarandocでJSONを永続化
Dockerizing pharo
Dockerizing pharo
今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門
Tarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒す
VerStixの紹介
VerStixの紹介
Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今
Pyonkeeを鳴らす
Pyonkeeを鳴らす
Smalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へ
Tarantalk
Tarantalk
Smalltalkと型について
Smalltalkと型について
Introduction of Pharo 5.0
Introduction of Pharo 5.0
Why!? Smalltalk
Why!? Smalltalk
Pillarの紹介
Pillarの紹介
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
NanoStrand
NanoStrand
Kürzlich hochgeladen
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
Kürzlich hochgeladen
(7)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Smalltalkでじゃんけん
1.
CROSS 2014 言語CROSS Smalltalkによる じゃんけんお題別解解説 2014 SoftUmeYa,
LLC Masashi Umezawa
2.
じゃんけん課題 * プレイヤーは二人。片方はコンピューター。 * 手は「グー、チョキ、パー」。あとは一般的なじゃんけ んの規則にのっとります *
少なくとも、プレイヤーかコンピューターが勝ったかを 判定できること * 入力・出力は自由。ゲーム用の関数が定義されて、 対話コンソールから入力で きれば十分とします * じゃんけんのルールをどう実装するかは、各種の言語 で差が出ることを期待 (関数型、オブジェクト型の違い) * 余力でリッチなGUIを実装してくれる人がいる * ライブラリ自慢
3.
どう解く? 関数型の言語ではパターンマッチとか 使ってくるであろう Smalltalk的にはオブジェクト指向っぽく 解くのが礼儀というもの ガチなOOで でもコードはシンプルに さて...
4.
街で見かけたじゃんけん ポケモンのおみくじバトル マクドのハッピーセットのおまけ あ、これだ!
5.
勝ち負けの関係 素直にクラス間の関係として表してみる
6.
クラス間の関係 良くあるのは スーパークラス・サブクラスの関係 「勝つクラス・負けるクラス」というの を導入する
7.
クラス間の関係の実装 Goo,Choki,PaaのスーパークラスTeを定義 クラスインスタンス変数 wins, losesを定義 Te
class instanceVariableNames: 'wins loses' Te class >> initializeで関係を設定する initialize Goo wins: Choki; loses: Paa. Paa wins: Goo; loses: Choki. Choki wins: Paa; loses: Goo. • 宣言的でいい感じ
8.
勝ち負け判定 相手のクラスがどちら側か調べるだけ Te >> pong:
other を実装 pong: other self class wins = other class ifTrue: [^#win]. self class loses = other class ifTrue: [^#lose]. ^#draw 以上で終わり! 動かしてみる
9.
ワークスペースで実行 goo := Goo
new. paa := Paa new. choki := Choki new. goo pong: paa. "=> #lose" choki pong: paa. "=> #win" choki pong: choki. "=> #draw"
10.
待てよ... * じゃんけんのルールをどう実装するかは、各種の言語 で差が出ることを期待 (関数型、オブジェクト型の違い) * 余力でリッチなGUIを実装してくれる人がいる *
ライブラリ自慢 期待に応え切れていない?
11.
SmalltalkでのUI MorphicかMVC Webアプリでやります Seaside • • 継続ベースのWebアプリフレームワーク http://seaside.st/ 「SeasideへGO!!」 • http://www.ogis-ri.co.jp/otc/hiroba/technical/seaside/
12.
継続によるフロー制御 ゲームの流れを「普通の」アプリっぽく書ける JankenGameTask >>
go howManyRounds := self call: JankenTitleView new. 何回先取か聞く [self someoneWins: howManyRounds] 誰かが先取する whileFalse: [ までループ [| playerTe comTe pongResult | playerTe := self call: (JankenPongInputView on: self). comTe := Te subclasses atRandom new. pongResult := self call: (JankenPongJudgeView playerTe: playerTe comTe: comTe). pongResults add: pongResult. あいこの場合は続 pongResult = #draw] whileTrue]. けてポン self call: (JankenEndView on: self). self initialize 成績表示して最初に戻る
13.
Webブラウザから実行 http://localhost:8080/jankenにアクセス ライブなデバッグもしてみる CSSスタイルの動的変更 コードの変更
Jetzt herunterladen