棒消しゲームがどうの

アバター
usao
記事: 1889
登録日時: 11年前

棒消しゲームがどうの

投稿記事 by usao » 5年前

棒消し とかいうやつ.
viewtopic.php?f=3&t=20575

「棒消し」でググったら
小学生か中学生あたりの時期に1回くらいしかやったことなさそうな暇つぶし用ゲームであった.
誰もが初見5分後には
「このゲームには必勝法がある…!」
と某漫画のごとくつぶやきそうな浅い内容である.

が,ゲーム内容は残念でも,プログラミングの課題用のネタとして見ると,
よくある

CODE:

#
##
###
####
とか表示させるだけの「ザ・はじめての問題」みたいなやつと,
何らかのGUIの習得も兼ねて電卓あたりを作らせる類の課題との
間あたりを埋めるネタとしてそこそこ良いのではなかろうか.

以下の段階的プログラミング課題表(謎)で言えば,ネタ不足になりがちなLV2付近の問題に位置するだろう.
LV1 : #を階段状に表示(上記)
LV2 : 迷路自動生成
LV3 : 電卓(上記)
LV4 : 2D描画手段(OpenCVとか)で自前で3D表示

アバター
もるも
記事: 54
登録日時: 8年前

Re: 棒消しゲームがどうの

投稿記事 by もるも » 5年前

シンプルなゲームでも対戦AIを作るのは容易ではないという悩ましさ・・・。

アバター
usao
記事: 1889
登録日時: 11年前

Re: 棒消しゲームがどうの

投稿記事 by usao » 5年前

この棒消しの場合,AI(と呼ぶのか?)としては,とりあえず
【ランダムで消す棒を選ぶだけ】というのがすぐに思いつく.
(自分なら,まず真っ先にこれを仮実装する.)
が,「何も考えてませーん!乱数でーす!」ってのがありありと見えるプログラムを相手にするのは
ゲームとしてはとても面白くないだろうと思う.

質問掲示板の該トピックにおいては
【ひたすらガチで最善手を打つ】実装がなされているけど,
それはそれで「絶対に勝てないことが確定している」ってのは,やはりゲームとしては面白くはないだろう.

「ゲーム」になるためには,両者の中間的な強さのを用意する必要がある.
プレイヤが勝つ可能性が存在するが,完全な馬鹿ではないと見える挙動を示すやつが必要だ.
すぐに思いつく簡便な方法としては,
【手番毎に,両アルゴリズムのうちのどちらを用いるかを乱数で決める】みたいなものが考えられる.
「基本的には最善手を打ってくるけど,たまにミスる」的な.

あるいは
【最初はランダムだけど,ある程度「終盤」になると最善手を選んでくる】というのも良いかもしれない.
(勝利できる手が明確な盤面において,いかにも乱数な挙動で勝ちを逃すような挙動を避ける)

アバター
usao
記事: 1889
登録日時: 11年前

Re: 棒消しゲームがどうの

投稿記事 by usao » 5年前

各盤面において,各手が選ばれる確率をデータとして用意すれば,
乱数で手を決定しても説得力があるものになり得る.
有効手ほど選ばれやすく,そうでない手ほど選ばれにくく値が設定されていればよいわけだ.

で,その確率データをゲームの結果を踏まえ変動させれば,それは「学習」と呼ぶものになるのだろう.

(「そもそもそこまでする価値のある内容のゲームか? コレ」っていうのを度外視して)
そのくらいの内容を盛り込めば,新入社員とかに最初にやらせて様子を見る用の問題としては良いものになるかもしれない.

アバター
もるも
記事: 54
登録日時: 8年前

Re: 棒消しゲームがどうの

投稿記事 by もるも » 5年前

相手側のしくじり度調整・・・となるとなんだかかわいい感じ。