人工知能に関する断創録

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

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

2008年総括

2008年目標(2008/1/1)のつづき。今年ももう終わりか・・・ログを読み直してみるとけっこういろんなことがあった。 ゲーデル・エッシャー・バッハ(2008/1/25)を熟読。理解できたのかな? 国際会議参加のためオーストリアへ出張(2008/2/11)10年前の中国…

マップファイル

ファイルからマップを読み込んでみます。基本的にRPG編のマップのロード(2008/6/1)とほとんど同じです。load_map.zip Mapクラス マップを表すMapというクラスを新たに追加します。Mapクラスはマップ内のプレイヤースプライト、まだ登場してませんが敵スプ…

Amazon Web Serviceで書籍情報を取得する

注意 2009/8/15からProduct Advertising APIの仕様が変更になりました。認証用のシグネチャをリクエストに添付する必要があるので下のコードに修正が必要です。 PythonでAmazon Product Advertising APIを使う(2010/1/16) を参照してください。本が大好き…

二段ジャンプ

二段ジャンプというのはジャンプ中に空中でもう一回ジャンプできるアクションです。スペースキーでジャンプして空中にいる間にもう一度スペースキーを押すとさらにジャンプできます。これで高いところにも上れます。double_jump.zip ジャンプ回数 変更はPyth…

ブロックとの衝突判定

ブロックを作成します。パイソンはブロックと衝突するのでぶつかったり、乗ったりできるようになります。block.zip ブロッククラス まずブロックを表すクラスを作成します。ブロックもスプライトなのでSpriteを継承して作ります。 class Block(pygame.sprite…

Objective-CとCocoa

iPhoneアプリを作りたくてiPhone SDKをインストールしたまではいいが、開発にはObjective-CとCocoaフレームワークの知識が必須なことがわかった。まったく知らなかったので下の3冊を購入して読み始めた。Objective-CはC++の親戚だろうと思ってなめてたのだが…

ジャンプ

上キーでジャンプできるようにしてきます。ジャンプをかっこよく見せるには重力を実装する必要があります。jump.zip ジャンプ処理 Pythonのupdate()をみてください。 JUMP_SPEED = 8.0 # ジャンプの初速度 GRAVITY = 0.2 # 重力加速度 def __init__(self): .…

PDFからテキストを抽出する

自分が収集した論文データベースを対象にいろいろ言語処理してみようと考え中。そのためにはまずPDFファイルからテキスト部分を抽出できなくてはいけない。調べてみたところXpdfというツールが見つかったので使い方メモ。ソースコードからコンパイルもできる…

検索とランキング

集合知プログラミング作者: Toby Segaran,當山仁健,鴨澤眞夫出版社/メーカー: オライリージャパン発売日: 2008/07/25メディア: 大型本購入: 91人 クリック: 2,220回この商品を含むブログ (277件) を見る4章の検索とランキングを読んだ。pythonを使ってシンプ…

左右移動

蛇(パイソン)を左キー、右キーで左右に移動できます。アクションゲームではキャラクターの微妙な動きが必要なので移動は小数で計算し、画面に描画するときに整数座標に戻しています。move.zip サンプルスクリプト #!/usr/bin/env python #coding: utf-8 im…

iPhone購入

iPhoneを購入しました。一部の前評判がかなり悪かったのでちょっと躊躇していたのですが、使ってみるとそれほど悪くはなかったです。前に買ったPDAよりずっといい。App Storeでアプリケーションをインストールするとかなり使えるマシンになりました。Wikiped…

数学ガール フェルマーの最終定理

数学ガール フェルマーの最終定理 (数学ガールシリーズ 2)作者: 結城浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2008/07/30メディア: ペーパーバック購入: 35人 クリック: 441回この商品を含むブログ (261件) を見る何かすごかった。ピタゴラス…

集合知プログラミング

集合知プログラミング作者: Toby Segaran,當山仁健,鴨澤眞夫出版社/メーカー: オライリージャパン発売日: 2008/07/25メディア: 大型本購入: 85人 クリック: 2,153回この商品を含むブログ (267件) を見るWebサービスのAPIを解説してる本だろうと勝手に思って…

ファイアボール

ここでは始点から終点へ向けて弾をまっすぐ飛ばす方法を説明します。1945では敵機が自機に向けてまっすぐ弾を飛ばす際に同じアルゴリズムを使っています。サンプルスクリプトでは、画面の中央(始点)からマウスでクリックした方向(終点)にファイアボール…

理性の限界

理性の限界――不可能性・不確定性・不完全性 (講談社現代新書)作者: 高橋昌一郎出版社/メーカー: 講談社発売日: 2008/06/17メディア: 新書購入: 54人 クリック: 285回この商品を含むブログ (176件) を見る地味だけど非常に面白かった。理性の限界を 選択の限…

キーボードの利用

キーボードを使う方法です。ティーポットがキーボードによって回転します。上下左右キーで回転速度が上がります。また、Lキーを押すとライティングのオンオフを切り替えます。照明をオフにするとマテリアルが無効になるのでglColor3f()で設定した青色が見え…

1945

縦スクロールのシューティングゲームです。このゲームは、Game Programming at scriptedfunさんのページを参考にしています。カテゴリの1945に作り方のチュートリアルがあります。素材は、FLYING YOGI(リンク切れ)さん、効果音はザ・マッチメイカァズさん…

ゲームオーバー画面

タイトル画面とゲームオーバー画面を追加します。画面間の遷移はゲーム状態を導入するとわりと簡単にできます。invader07.zip ゲームのクラス化 前回までと違ってmain()に書いていた処理をInvaderクラスに変えました。 START, PLAY, GAMEOVER = (0, 1, 2) # …

爆発エフェクト

ミサイルがエイリアンに当たったときに爆発エフェクトが出るようにします。爆発エフェクトもスプライトとして実装するのでエイリアンやミサイルと作り方はほとんど同じです。invader06.zip 爆発アニメーション 爆発には上の画像を使います。キャラクターアニ…

ライティング

ライティングとは3次元空間に光源を置いてオブジェクトを照らすことをいいます。光が当たると陰ができて3次元っぽく見えるようになります。ライティングしてないティーポット(2008/9/6)と比べてみると違いは明らかだと思います。また、3次元オブジェクトの…

エイリアンの反撃

エイリアンがビームを撃つようにします。invader05.zip ビームクラス エイリアンが発射するビームを実装します。まずShotクラスを全部コピーしてください。これで9割完成です(笑)プレイヤーが発射する弾とエイリアンが発射するビームはほとんど同じです。…

プレイヤーの攻撃

自機から発射したミサイルでエイリアンを倒せるようにします。そのためには、ミサイルとエイリアンが衝突したかを検出する必要があります。Pygameには衝突判定の簡単な方法がたくさんあります。ここではスプライトグループ同士の衝突判定を使います。invader…

惑星

恒星のまわりを回る惑星とその衛星です。太陽と地球と月をイメージしてますが縮尺はめちゃくちゃです。実際、太陽はもっとずっと大きいです。月を太陽ではなく地球を中心にして回すのに苦労しました・・・座標変換は慣れないと難しい。このプログラムはOpenG…

神々のトライフォース

某ゲームのあれです。三角形を3つ書いて回転させるだけです。何かなつかしい。triforce.py 神々のトライフォース #!/usr/bin/env python #coding:utf-8 from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * import sys angle = 0.0…

回転キューブ

OpenGLに慣れるためにここまでの知識を使っていろいろ作ってみます。まずは、立方体の描画(2008/8/31)で作ったカラフルな立方体(カラーキューブ)を回転させてみます。スクリーンショットは何か歪んでますが立方体です。rotating_cube.py 回転キューブ #!…

平行移動・回転・拡大縮小

ティーポットのような3次元オブジェクトを平行移動、回転、拡大縮小する方法です。平行移動、回転、拡大縮小は3次元オブジェクトの頂点座標を変換することで実現できるのでモデリング変換とかアフィン変換と呼ばれます。数学的には頂点の座標にある行列をか…

ライフゲーム

人工知能というより人工生命の分野ですが最初はライフゲームを作ってみます。ライフは人生という意味もありますがライフゲームは人生ゲームとはまったく関係ありません。まず、フィールド(黒い部分)をマウスクリックすると、黄色い■が出てきます。もう一度…

エイリアン襲来

を実装します。invader03.zip エイリアンクラス エイリアンも自機、ミサイルと同様にスプライトなので作り方はほとんど同じです。 class Alien(pygame.sprite.Sprite): """エイリアン""" speed = 2 # 移動速度 animcycle = 18 # アニメーション速度 frame = …

ミサイルの発射

スペースキーを押すと自機からミサイルが発射できるようにします。invader02.zip ミサイルクラス まず発射されるミサイルを表すクラスShotを作成します。これもスプライトで実装します。 class Shot(pygame.sprite.Sprite): """プレイヤーが発射するミサイル…

ティーポット

立方体の描画(2008/8/31)では、四角形プリミティブを6枚使って自分で立方体を作ったわけですが、3次元オブジェクトを作るコマンドがあらかじめ用意されています。今回はそれを使って3次元オブジェクトを描画してみます。サンプルは有名なティーポットと呼…