ド素人がじゃんけんゲームのプログラミングを語ってみるの巻
1日の持ち時間があと10時間増えなければ無理という理由で、早々にプログラマーデビューを見送ることにした馬詰です。
プログラマーは遠い夢(笑)
それでも話のネタにじゃんけんゲームをド素人目線で語ります。
さて、前回の続きです。
【グー・チョキ・パー】のボックスを作ったところで、さいなら?しましたね。
先ず、じゃんけんゲームでの勝敗パターンを考えます。
私とコンピュータの手、【ぐー・ちょき・ぱー】(ここからひらがなです)で勝敗(あいこ含む)のパターンは9通りです。
図で表すと↓
手を数字で表します。
ぐー・・・0
ちょき・・・1
ぱー・・・2
ここで例のモジュラ算術が出てきます。
モジュラ算術は余りを求める式らしい。
*ここから文末に”らしい”とついているのは、「なんや、よう分からんけど、多分、こうやねん」という解釈でヨロシク!
モジュラ算術を使ってじゃんけんゲームのプログラミングをする。
余りの数で勝敗を決める。
あいこ・・・0
負け・・・1
勝ち・・・2
式は (自分-コンピュータ+3)mod 3
modはモジュラと呼ぶらしい。
modは余りを求める記号らしい。
a mod bなら a 割る bは c 余りd 答えは d らしい。
3 mod 2 は 1です。
3÷2=1…1 ですから。
自分【ぐー】コンピュータ【ちょき】としましょう。
0-1=-1です。
-1では勝敗を表す数には該当しません。
プラス3にすることで1から5の自然数になります。
(0-1+3)mod3は2です。
2は勝ちです。
自分が【ちょき】コンピュータが【ぐー】のときは
(1-0+3)mod3は1です。
1は負けです。
Tclで算術計算をするとかは
expr コマンドを使うらしい。
また、mod は % に置換するらしい。
で、試しにターミナルで
expr (2-1+3)% 3
エンターで
1
となります。
自分が【ぱー】でコンピュータが【ちょき】
1は負けです。
9パターン全部試してみました。
この9パターン。
自分はあなたに変え(player)の手を決めることで、コンピュータ(com)の手をアトランダムに選んで勝敗を決めるというプログラムを作ればいいらしい。
それが↓です。
“label”で表示させます。
label .l1 -text あなた
pack .l1
label .l2 -text コンピュータ
pack .l2
label .l3 -text 結果
pack .l3
で次はこれです。
button .b0 -text ぐー -command{
set com [expr int (rand() *3 )]
set player 0
.l1 configure -text ぐー
.l2 configure -text [lindex { ぐー ちょき ぱー } $com]
.l3 configure -text [lindex { あいこ まけ かち } [expr ($player – $com + 3)% 3] ]
puts [expr ($player – $com + 3)% 3]
}
大阪弁で説明します。
まず、3行目まで。
playerあなたがぐーのボタンを押したとき、comコンピュータは0、1、2までの整数をアトランダムに選ぶで。
4行目からは、そんときにラベルl1に表示されるのは、まずあなたはぐーやな。
コンピュータのラベルl2にはアトランダムに選ばれた数字によって手が決まるわな。
0やとぐーが表示されるやん。
ラベルl3にはその結果がモジュラ算術の式によって勝敗が決まり、表示されるってことやで。
という、プログラミングのはずです。
これをあなたであるplayerがちょきのボタンを押したとき、ぱーのボタンを押したとき、それぞれを記述して出来上がり。
ここで私がヤラレタのは全角エラー。
途中、ひらがなで、ぐーやちょきやぱーにするから、スペースが半角にしたつもりが全角になっていてエラー。
エラー表示を見るとline5が間違えてるで!と言われる。
が、Raspbian搭載のテキストエディタではスペースの全角と半角の見分けがつきにくいという不親切さ。
そんなこんなで、なんとかじゃんけんゲームは完成?
こんなことを小学生に教えて、プログラミングの面白さに翻弄させながら、論理的思考を知らん間に養うというのも、まぁ、ありかもしれない。
が、社内を見渡しても、また、近辺を見渡しても、アンバランスな人が多いわけです。
おっと、こんなん、言うたら怒られるわ(笑)
全角も半角もどうでもええやん、みんなノッテルるかい?!イェ〜イ!!てなことも、また必要ではなかろうかと思うわけです。
おっと、えらいことです。
2000文字超えました。
記録です。
芸能人がやってるアメーバブログ。
写真載っけて数行でおわり。
その中でも、GACKT氏のブログは長文というのを知り、私は密かに文字数を確認しました。
暇かよ?!
多いときで1800とか。
私は大体、1000から1500。
1500までぐらいが適当かと勝手な解釈。
それが今回は2000文字オーバー。
お疲れさまでございます。
ご精読ありがとうございました。