人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

2008-01-01から1年間の記事一覧

フレーム問題に関する断想

ロボットにつけるクスリ―誤解だらけのコンピュータサイエンス作者: 星野力出版社/メーカー: アスキー発売日: 2000/01メディア: 単行本購入: 5人 クリック: 60回この商品を含むブログ (13件) を見る突然だけどこの本面白かった。フレーム問題、記号着地問題、…

立方体の描画

プリミティブの描画(2008/8/24)で使った四角形を6枚張り合わせて立方体を作ってみます。いよいよ3次元空間へ突入。cube.py サンプルスクリプト #!/usr/bin/env python #coding:utf-8 from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT i…

自機を動かす

まず、プレイヤーである自機をキーボードで動かせるようにします。ブロック崩し編のパドルの移動(2008/8/9)で解説したパドルと作り方はほとんど同じです。だだし、今回はキーボードで左右に移動するようにします。invader01.zip 自機スプライト まず自機Pl…

プリミティブの描画

プリミティブを描くサンプルです。プリミティブとはOpenGLで使える図形のことで、点、線、三角形、四角形、ポリゴンなどがあります。primitive.py サンプルスクリプト #!/usr/bin/env python #coding:utf-8 from OpenGL.GL import * from OpenGL.GLU import …

OpenGLウィンドウの表示

PyOpenGLで遊ぶためのウィンドウを表示するところまで。OpenGL自体にはウィンドウを表示する関数はないためGLUTと呼ばれる拡張ツールキットを使います。以下のサンプルを実行するにはPyOpenGLとGLUTのインストールが必要です。PyOpenGLのインストール(2008/…

スコアの表示

ゲームスコアが画面の中央に表示されるようにします。ブロックを連続して壊すことで高得点が狙えるようにしました。ボールを落としてしまうと減点です。breakout06.zip スコアの表示 まず、スコアボードを表すクラスScoreBoardを作ります。 class ScoreBoard…

PyOpenGLでTeapot

PyOpenGLでTeapotをレンダリングしてみた。矢印キーで回転できる。ひな形プログラムとしてちょうどいいかも。 #!/usr/bin/env python #coding:utf-8 import sys from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * window = None …

反射方向の調整

前回までのプログラムを実行してしばらく遊んでみるとわかりますが、ボールがいつも同じ方向に跳ね返るためまったく面白くありません。プレイヤーができるのはボールを落とさないようにすることだけです。今回は、ボールがパドルに当たる位置によって反射方…

ボールの反射音

ボールがブロックやパドルに当たったとき音が鳴るように改良します。効果音はザ・マッチメイカァズさんからお借りしています。breakout04.zip 効果音のロード まず効果音をロードします。効果音はすべてBallのクラス変数へセットします。クラス変数なのでボ…

ブロックを壊す

ブロックを配置してボールが当たると壊れるようにします。ブロックをブロックグループに追加し、ボールスプライトとブロックグループの衝突判定を行います。Spriteの衝突判定機能を使うと簡単にできます。ここまでくるとゲームっぽくなってきます。breakout0…

ボールの反射

次に画面内を跳ね回るボールを実装します。パドルにボールを当てると跳ね返ります。breakout02.zip ボールスプライト まずボールを表すクラスです。これもパドルと同じくSpriteを継承してデフォルトスプライトグループ(containers)も指定します。 class Ba…

パドルの移動

これから数回にわたってブロック崩しを作ろうと思います。今回は、ボールを跳ね返すラケット(パドル)をマウスで動かせるところまで作ります。ブロック崩しの素材は、FLYING YOGI(リンク切れ)さんからお借りしています。breakout01.zip パドルスプライト …

PyOpenGL

2008年目標(2008/1/1)になっていたOpenGLの勉強を始めた。3Dは以前DirectXをやっていたことがあったが、あまりに難しくて挫折したことがある・・・今はPCをMacにしてしまったこともあり、DirectXは使えないので代わりにOpenGLを使うことにした。OpenGLはさ…

ポアンカレ予想

今さらだけど図書館にポアンカレ予想の本が並んでいたので読んでた。ポアンカレ予想は「単連結な三次元閉多様体は、三次元球面に同相である」という予想。フェルマーの最終定理と違って問題を聞いてもよくわからないなぁ。何でも宇宙の形を解き明かすための…

戦闘画面

まだ戦えるわけではありませんが、戦闘画面を実装してみました。フィールドを歩いていると何か強そうな(笑)モンスターに襲われます。コマンドの選択などはすべてスペースキーを使います。とりあえずにげることしかできません。モンスターのグラフィックは…

ゲーム状態の導入

今回はタイトル画面をつけます。タイトル画面のように別の画面が入ってくると実装がこんがらがってくるため、ゲーム状態によって更新・描画・イベントハンドラを分離するようにスクリプトを修正します。また、今までmain()に書いていた処理をクラス化します…

パーティー

今までずっとプレイヤーは1人だったので仲間を増やしてパーティを組みます。説明を読む前にスクリプトを動かしてパーティの各プレイヤーの動きがどうなっているか観察してみることをおすすめします。観察のポイントは、先頭ではないプレイヤーは1人前にいる…

探索による問題解決

今日は、エージェントアプローチ人工知能第2版の3章「探索による問題解決」を読んでた。そういえば大学の人工知能の講義では一番はじめに探索やったなぁ。この本にも載ってるけど8クイーンとか15パズルが例に出て探索アルゴリズムの説明とか受けた覚えがある…

町をつくる

今回は新しい町のマップを追加します。新しいマップを追加するためにはスクリプトを書き換える必要はないです。マップエディタでtown.mapを作る、イベントファイルtown.evtを作る、field.evtに町へ移動する移動イベントを配置するだけです。それとは別に町の…

コマンドウィンドウ

コマンドウィンドウを実装します。メッセージウィンドウの表示で説明したWindowクラスを拡張してCommandWindowクラスを作ります。コマンドは、はなす、つよさ、そうび、とびら、じゅもん、どうぐ、さくせん、しらべるの8つです。ドラクエと同じか(笑)スペ…

宝箱と扉を開ける

今回は3つのイベントを追加します。宝箱と扉と一般オブジェクトです。宝箱と扉はスクリーンショットで見えますね。扉は前に立ってスペースキーを押すと開きます。宝箱は上に乗ってスペースキーを押すと調べます。一般オブジェクトとは玉座・いす・机などの特…

デバッグ情報の表示

今回はちょっと簡単ですが、画面上にデバッグ情報が表示されるようにします。下のスクリーンショットのように画面の左上にマップ名、プレイヤー名、プレイヤー座標(単位:マス)を表示します。せっかくなので前に作ったメッセージエンジン(2008/6/28)を使…

効果音を鳴らす

マップ間移動するときにザッザッザッと鳴るようにしてみます。いずれは宝箱を開けるときにガチャ、扉を開けるときにバタンと鳴るようにしますが今回はザッザッザッだけです。効果音はザ・マッチメイカァズさんからお借りしています。効果音入るとリアルにな…

BGMを鳴らす

無音の世界で寂しかったので今回はBGMを鳴らしてみます。現在の仕様ではBGMイベントを作り、マップをロードするときにBGMを鳴らすようにしています。音楽の再生の方法はBGMと効果音の再生(2008/5/11)で解説してるので参照してください。BGMはTAM Music Fac…

マップ間移動

別のマップに移動できるようにします。王様たちも待っていることですし、今回はお城でも作りましょう。pyrpg18.zip 移動イベント キャラクターイベント(2008/6/22)と同じように移動イベントを配置することでマップ間移動を行います。プレイヤーが移動イベ…

人工知能の関連分野

エージェントアプローチ人工知能の第2版が届いたのでさっそく読み始めた。今日は1章。人工知能と関連する分野とそこで扱われる疑問が面白かったのでまとめておく(pp.6-16)。こういう広大な領域と関係があるからやっぱり面白いんだよなぁ。哲学 形式的規則…

マップの読み込み

マップの保存で作成したバイナリ形式のマップを読み込めるようにします。マップの読み込みはLキーを押してください。ウィンドウが開くのでマップ名を入力します。マップファイルの拡張子を除いて大文字にした名前がマップ名です。たとえば、field.mapを読み…

マップの保存

作ったマップを保存できるようにしましょう。マップは1マス8bitのバイナリ形式でファイルに保存します。1マス8bitで表現するので256種類までマップチップが使える計算です。マップの保存はSキーを押してください。ウィンドウが開くのでマップ名を入力します…

バイナリマップのロード

マップエディタ編のマップの保存で作成したバイナリマップを読み込めるようにします。またキャラクターチップとマップチップを大幅強化してキャラクターチップとマップチップ(2008/6/24)がすべて使えるように拡張します。pyrpg17.zip キャラクターチップの…

エージェントアプローチ人工知能 第2版 日本語版

エージェントアプローチ人工知能 第2版作者: S.J.Russell,P.Norvig,古川康一出版社/メーカー: 共立出版発売日: 2008/07/10メディア: 単行本購入: 4人 クリック: 485回この商品を含むブログ (17件) を見るエージェントアプローチ人工知能 第2版の日本語版がつ…