釧路ossコミュニティ札幌支部 CHaser勉強会してきた
なんかとても久しぶりにブログ書いてる。まあ良いか。
てんやわんやさんに気軽に参加しなよーっと言ってもらいましたので、
9月から釧路ossコミュニティ札幌支部にjoinしました。
9月あたりに、どんな勉強しようか〜という話をみんなでして、「Chaser」というプログラミング競技をやってみよう!ということになった。
CHaserは全国情報技術教育委員会がやっているプログラミング競技の一つ。
サンプルを動かした動画があったので載せておく。どんな感じなのか大体これでわかる。
専用サーバを通じて、クライアントと呼ばれる自動で動くようにプログラミングされたものを一対一で戦わせる。
壁に囲まれたフィールド上に配置されたハートを相手より多く取るか、xブロックを相手の上にのせると勝ち。また、相手が自らxブロックの上に乗る自滅行動で勝つこともある。
先手・後手で順番に行動し、自分のターンになると複数ある行動パターンの中から1つ実行できる。行動パターンは図1を参照。
図1: クライアントの行動パターン
(参照: 全国情報技術教育委員会「ルールブック(確定版).pdf」 )
localでも動かせるサーバ+開発するための諸々の環境一式が、U-16釧路プログラミングコンテストのページにあると教えていただいた。
ので、今はこれを使ってクライアントの開発を進めている。
この中に入ってたのはRubyクライアントだったよ。勿論他の言語使っても良い。そこは自由気ままに書きましょう。
勉強会では、どんな行動を取れるクライアントが良いか、という話になった。
どんな危機にも対応できる万能クライアントが理想だろうが、それを全て実装するっていうのはそれはまぁたいそうなエネルギーを要するだろう。
ということで、まずは 「死なない」クライアントを作ることが最優先だと思う。
ハートを沢山とっても、ゲームの最後でxブロックを置かれる or xブロックに乗って自滅なんてしたら元も子も無い。
簡単な発想からいくと、
・xブロックが自分の隣のマスにあったら、walkの選択肢から外す
というものがあるよね。
あとは、敵にxブロックを置かれるのも避けたい。いくつか対策はあるけど、
・敵が近くにいたら、敵から離れる方向へwalk
がチキン戦法としてはまぁ思いつく方法。でももし進んだ方向にxブロックの群れがあって、自分の背後以外xブロックだったら…という場面もある。なので、敵とxブロックの位置関係を把握しつつ逃げ道を決めなければならないね。
そういえばこの、把握しつつ、という部分が重要じゃないかなーって話にもなった。
要は、「一個前の行動で得た情報を覚えさせる」という実装が1つの勝敗のカギになってくるんじゃないかと。
ただ、相手側の行動もあるので、一個前の行動で得た情報はもしかすると変わってしまっている可能性もある。それでも、ハートを取られてブロックが増えるとか、一手先にxブロックで閉じ込める罠を作られるとかが、まぁ大きな変化かな。
んーでも、ここまで考えてたら本当にキリが無いと思う。
なので、単純に一個前のフィールド情報を基に、いかにxブロックと敵から逃げるかっていうのが死なないクライアントの簡単な戦法なんじゃないかなぁと。
ハートを取るのは二の次で、2~3手くらいで安全判断してから取るとか。かなり保守的なかんじになるね。
保守派もいればその反対もあるのだが、考えだすとキリが無いので今回は保守派の考察だけ。。
机上の空論かもしれないので、まずはこれを実装してみることにする。
【宣伝】釧路ossコミュニティ札幌支部【初見も大歓迎!】
札幌では毎月、IT関係に興味のある人達が集まって勉強会を開催しています。
参加は自由で、身分・性別・年齢・国籍関係なく、いつでもどなたでもウェルカムです。
本コミュニティについてや勉強会の情報については、Facebookの釧路ossコミュニティ札幌支部のコミュニティページをご覧下さい!
興味のある方は、本コミュニティのFacebookページへのコメントや、お知り合いの札幌支
私のブログのコメントからでもいいのですが、コメント通知に気付くのが遅かったりするのでオススメしません。ごめんなさい。。。