月別アーカイブ: 2011年12月

四目並べ1 『はじめのAI』

最初のAIができました。

ゲーム開始(swf)

今回はAIって何なのかと、このAIについて軽く解説します。

1. そもそもAIってなに?

このブログではAIって言葉がたびたび出てきてますが、そもそもAIって何でしょう?

Artificial Intelligenceの略なので、日本語だと「人工知能」になります。
人工知能っていうとSFの世界に出てくるような人型ロボットのようなイメージが出てくるでしょうか。

ここでは人間の代わりになる

遊び相手

っていうイメージが近いと思います。

2. 今回のAIについて

プレイしてみた人は気づいたと思いますが、今回のAIはすごく弱いです。
自分がリーチになっても無視しますし、相手がリーチにも気が付きません。

ちょっとAIの部分のソースコードを見てみましょう。

	public class FoolAI extends Brain {
		/** 
		 * 自分が打てる手のリスト(moves)を受け取って、
		 * その中から一つ手を選んでゲーム(target)に渡す。
		 **/
		override public function think( moves:Vector.<Move>; ):void {
			target.move( moves[ int(moves.length * Math.random()) ] );
		}
	}

AIの部分だけ抜き出したコードなので少しわかりずらいですし、分からなくても別に問題ありません。ああ短いなあ、というのを感じてもらえればOKです。

なにをやってるかというと、自分の打てる手からランダムで手を選んで打ってるだけです。

3. こんなAIになにか意味があるの?

もちろん、それなりの意味があって作ってます。
このAIがやってることで重要なことが2つ。

  1. ルールを破らない。
  2. 自分の打てる手をすべて把握してる。

1.はどんなAIでも必要になることですね。2.も重要なので最初に押さえておくと良いです。
これらの部分を飛ばして、リーチになってたらとかを書き始めると、コードがごちゃごちゃしてバグが出やすくなりますし、なかなか強くならない原因にもなります。

こうやって単純なAIを動かしてみて上の2つがしっかりできていることを確認しておくと、あとの作業がグッと楽になります。

それにプレーする側はさまざまです。
子供から大人、初心者から上級者、すべての人の遊び相手が同じというわけにはいきません。
まずはまったくの初心者でも勝てるようなAIを作っておくというのは強いAIを作るのと同じくらい重要なんじゃないかと思ってます。

最後に今回のソースコード全体はこちら(GitHub)

それでは今回はここまで。

まだ続くよ。

四目並べ0 『AIを作る前に』

四目並べ
ゲームが無ければ、ゲームAIはつくれませんね。
最初にAIを作るまえの下準備をしていきます。

1. ルールを決める

今回作るゲームは四目並べと言います。
ざっとこんな感じ。

四目並べ

別名:
重力付き四目並べ

人数:
2人

ルール:
重力のある盤面に交互に自分の駒を配置します。
先に自分の駒を縦、横、ななめのどれかの方向に4つ並べられれば勝ち。

盤面の大きさ:
6×6

パス:
パスあり。ただし、最初の1手と直前に自分か相手がパスをしている場合は禁止。

以上

公式ルールがあるわけじゃないので、細かいところは自由にきめていけばいいと思います。
今回は面白そうなのでパスありにしてみました。

「文章読んでもよくわからなかったよ」という人は下にサンプルがあるので、それをプレイしてみれば分かりやすいと思います。

2. プログラミング言語を決める

ActionScript3.0を使います。いわゆるFlashですね。
Flashを作るにはAdobeの有料ソフトを使わないといけないと思われがちですが、フリーのすばらしい開発環境FlashDevelopがあるので、それを使います。

FlashDevelopに関する詳しい説明はFlashDevelop.jpを見るのが早いので気になる人はそちらを見ましょう。

どの言語を使えばいいかというのも、誰に見てもらいたいのかと自分の実力を考えて各個人が自由に決めればいいと思います。とりあえずFlashというのはブラウザで気軽に見れる優良な選択肢なのでオススメです。

そんなFlashを勉強したい人にはいいサイトがたくさんあるので、いくつか紹介しておきます。

Flash学習サイト

Wonderfl
ブラウザだけでFlashが作れる!サンプルコードがたくさん見れる!Flashコミュニティサイト。
実際にプログラムを動かしながら学ぶのが手っ取り早いので、とりあえずWonderflのアカウントを作ってしまうというのは一つの手だと思います。

グラフィックスプログラミング
湘北短期大学情報メディア学科の授業資料。プログラミング初心者でもActionScriptで簡単なゲームが作れるように、詳しく解説されています。

HAKUHIN’s home page -Flashゲーム講座-
ゲーム制作でつかえる講座がたくさんあります。Flash制作で困ったことがあったらここを見ればOK。

Adobe ActionScript 3.0 リファレンスガイド
本家AdobeさんのActionScriptマニュアル。これを読んで理解できるようになれば怖いものなし。やや上級者向け。

3. ゲーム制作開始

ルールと言語が決まったので、もうゲームを作り始めてしまいます。
とりあえず、人間vs人間で戦えるようになるところまで。

ゲームを開く(swf)

ここまではプログラム書く比重としてはわりと重いんですが、あんまり面白く解説できるところがないので特に解説はしません。ソースコードをこちら(GitHub)に置いたので読みたい人は好きにのぞいてください。

最後に

最後にAI制作の目標をどどん。

楽してそこそこ強いAIを作る!

…大文字で言うほどのことでもないですね。

ともあれ今回はここまで。準備はできたので、次回からAIを作っていきます。

続く!

ブログ始めますよ。

はじめに

どうせ長続きしないでしょうが、ブログ始めますよ。

というのも、いまボードゲームのAIを作ってるのですが、
この制作方法を残しておけば学習教材として面白いんじゃない?と思ったわけです。

ゲームAIっていうとムズカシそうなイメージがありますが、
実はそんなに難しくないよってことが伝わればいいと思ってます。

とはいえ、とつぜん将棋や囲碁のAIを作るのは難しいので、
まずは簡単に作れる範囲で四目並べ(詳しくはwikipedia参照)に挑戦してみましょう。

目標

どうせ書くなら、『分かりやすく』を目指します。

中学生でもわかる!
高校生でも実践できる!

というのが目標です。
なおかつ、上級者にも収穫があることを書ければ理想的ですね。

製作途中のゲームサンプルも置くので楽しみながら勉強してもらえればと思います。