四目並べ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)

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

まだ続くよ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です