NintendoDSの新デザイン「NintendoDS Lite」っていうのが3月2日に発売するみたいです。

これは、今までのNintendoDSを軽量化して、さらに使いやすくしたものです。まぁ使ってみないとわかりませんが。

詳細は、公式ページで。

http://www.nintendo.co.jp/n10/news/060126.html


後、スクウェアエニックスのゲーム「聖剣伝説」シリーズのアイドル「ラビ」のぬいぐるみとクッションが発売されます。

実際には、発売ではなく復刻なのですが、、、、

これはほしいですね。特にクッションがほしいです。

買って部屋に飾っておきましょうか・・・・


http://www.square-enix.co.jp/se-shop/

現在、中学にあった対戦テトリスの再現を作っております。

これは、たぶん明日かあさってには完成すると思います。

次に、ぷよぷよを作りたいと思います。

現在、コンパイルは倒産し、セガがぷよぷよを作っていますが。現在は、フィーバーという新しいルールのものが中心となっているのですが、やはり昔からぷよぷよをやったきた者としては昔のルール中心のほうがいいわけです。

しかし、セガはフィーバー中心のものしか作ってくれませんので、自分でできるだけ高い再現度のぷよぷよを作ってみようと思います。


the 21st century compilers

http://www.amazon.co.jp/exec/obidos/ASIN/0321210913/249-5492176-8424357

知る人ぞ知る。ドラゴンブックの新版です。

この本っていったいどうなってるんでしょうか・・・・。

もう発売しているようですけど、あんまり話題になっていません。

値段も高いですし、情報がないと買うか買わないか決められませんよ。


人工知能概論

http://www.amazon.co.jp/exec/obidos/ASIN/4320121163

学校の図書室にあったんですけど、かなり読みやすいですね。

こういう本に慣れていない人にも読みやすいように「~である。」を使わずに「~です。」を使っています。

ただ、記号(Σとか∧)に慣れていない人には厳しいかもしれません。

内容は、ゲームでよく使う、A*探索アルゴリズム、遺伝的アルゴリズム、ニューラルネットワーク、強化学習、などなど広範囲をカバーしています。


ゲーム開発のためのAI入門

http://www.amazon.co.jp/exec/obidos/ASIN/4873112168/249-5492176-8424357

買ったけど読んでません。無駄な出費でした。

上の人工知能概論みたいな本が苦手な人で、人工知能をゲームに応用させたい人にはいいかもしれません。


ゲームプログラミングのための3Dグラフィックス入門

http://www.amazon.co.jp/exec/obidos/ASIN/4939007375/249-5492176-8424357

3Dエンジンを開発するために必要な数学の知識について書いてあります。

数学だけでなく物理学についても書いてあり、内容もわかりやすいのですが、たまに公式の導出の途中で飛躍していたり、文章や式に間違いがあったりするので注意しなければなりません。

さらに、理系の高校卒業レベルの数学の知識が必要です。



それにしても、情報工学の本って高いですね・・・・。

化学のテスト終わったんですけど結構やばかったですね・・・・。

化学さえなければ脅かされることもないんですけどね。


ところで、私はとあるサイトを運営しているのですが、これの更新がまた面倒です。

PHPである程度便利にしたんですが、それでもまだ面倒です。

それで、いろいろと調べてみたところ、テンプレートエンジンというものがあるらしいです。

これは、HTMLの中に変数のようなものを書き込み、アクセスする場所によってそこにデータが移されるというものです。

つまり、一つのHTMLファイルにデータを当てはめて出力するわけです。


今まで私は、PHPからinclude_onceなどを使ってindex.phpから外部ファイルを読み込んでいましたが。

テンプレートエンジンは別のやり方で動いているわけです。


詳しくは後日説明します。


明日は化学の学年末試験です・・・・

また面倒なものがやってきましたね・・・・

ということで、明日万全の体制で試験に臨むために今日は早く寝ることにします。

なので今日は特にプログラミング関係の記事は書きません。


そういえば、今日、特活を抜け出して、友達とクレープを買いに行きました。

その帰りにゲームセンターに寄ってTimeChrisisというガンアクションゲームをやったんですが、

これがハマるハマるw

面白すぎます。

今度からゲームセンターに行ったときはこれをやることになるんですかね・・・・

まぁ、太鼓の達人も面白いですけど最近飽きてきましたし。

ってことで今日は寝ます。それでは、おやすみなさいませーw。

前回はmakefileの基本的なことを書きました。

が、重要なことを言い忘れていました。

まず、makefileの実行の仕方。

これは、コマンドラインで、makefileのあるディレクトトリで、makeコマンドを入力することによって実行します。

この場合、makefileの一番初めのターゲットだけ実行しますが、allターゲットがあった場合それを優先的に実行します。

任意のターゲットを実行したい場合、

make main.o

のように、makeコマンドの後にターゲット名をつけます、するとそのターゲット名だけ処理が実行されます。


さて、前回の私の失敗の処理は終わりました。

今回はmakefileのマクロ機能とサフィックスルールを紹介します。


まず、便利なマクロについて説明します。

マクロは、makefile以外でもプログラミングやいろいろなことで出てくる言葉ですが、いつもと同じような意味です。

前回のmakefileをマクロを使って書き直すと以下のようになります。


OBJS = main.o complex.o

program.exe : $(OBJS)

c++ -o $@ $(OBJS)

main.o : main.cpp complex.h

c++ -c main.cpp

complex.o : complex.cpp complex.h

c++ -c complex.cpp


このように、文字列に別名を与えることができます。

これによって、同じことを何度も書かなくていい、一度に複数の同じ文字列を変更できるなどのメリットが得られます。

マクロの宣言の仕方は、

マクロ名 = 文字列

であり、文字列をマクロとして展開するときは$(マクロ名)と書きます。

ちなみに、$@ははじめから用意されているマクロで、ターゲット名として展開されます。


次にサフィックスルールについて説明します。

サフィックスルールは同じ拡張子のものをまとめて別の拡張子に変えることができます。

たとえば、このmakefileでは、main.cppとcomplex.cppは両方ともcomplex.o main.oと、oファイルに変換されています。

これをまとめて書くことができ、このmakefileを書き直すと以下のようになります。

CC = c++

OBJS = main.o complex.o

program.exe : $(OBJS)

CC -o $@ $(OBJS)

.o.c :

CC -c $<

main.o : complex.h

complex.o : complex.h


この

.o.c というのが.cを.oに変換するという意味です。

コマンド部分の$<マクロはそのファイル名として展開されます。


このように、サフィックスルールとマクロを利用するだけでここまで短くすることが可能になります。


さらに、#を書き、その後ろに文字列を書くことによってコメントとして記述することができます。


以上がmakefileの機能です。

makefileはコマンドラインで使う場合なら非常に重宝しますが、Visual Studio や Borland Cなどの統合開発環境を使う場合はそちらのほうが便利です。

今では、訳に立つ場面は少なくなってきましたが、覚えることも少なく、覚えておいて損はないので、ぜひ使えるようにしておいてください。

PSPで開発する場合など、コマンドラインでコンパイルしたりリンクしたりしなければならない場面は結構多いです。

ですので、gccなどにはmakeという機能が用意されていて、コマンドプロンプトでmakeと入力すれば使えます。

このmakeという機能はmakefileというファイルの中にある情報を読み取ってその処理を実行するものです。

簡単なプログラムのようなものなのです。


たとえば、main.cppというファイルと、complex.cppというファイルと、complex.hというファイルがあるとします。

このとき、多くの場合以下のコマンドを入力してプログラムを作ります。


c++ -c main.cpp
c++ -c complex.cpp

c++ -o main.o complex.o


変更したプログラムだけコンパイルすればいいのですが、毎回これを入力するのは面倒です。

この例の場合は、3つしかソースファイルがないのでまだ楽なほうですが、ソースファイルが増えるともっと面倒になってきます。

バッチファイルを作るという手もありますが、この場合、変更していないソースファイルもコンパイルされ、効率が悪いです。

しかし、makefileを書けばこのような問題は簡単に解決できます。


makefileで上の3つのコマンドを書くと、以下のようになります。


all:

program.exe

main.o : main.cpp complex.h

c++ -c main.cpp

complex.o : complex.cpp complex.h

c++ -c complex.cpp

program.exe : main.o complex.o

c++ -o main.o complex.o


このファイルをソースファイルのディレクトリに入れておいて、そこでmakeというコマンドを打てば自動的に変更されているソースファイルだけをコンパイルし、目的の物を作ります。


これらは、


main.o : main.cpp complex.h

c++ -c main.cpp



「このコマンドにより作られるファイル名」 : 「このコマンドに必要なファイル名(変更されているかチェックするときなどに使われる。)」

「コマンド」


という形式で書きます。

そして、この一つの塊をターゲットと呼びます。


以上がmakefileの書き方でした。

後、マクロなど便利な機能もありますが、時間がありませんので、次の日にでも書きます。

なぜか知りませんが、化学の学年末試験が1月17日にあります・・・・。

かなりやばい状況。

ということで、対戦テトリス開発をがんばろうと思います。


 今日はXALM(ザムル)について話します。

 XAMLとは、WindowsVistaのテクノロジの一部である、Windows Presentation Foundation(コードネーム"Avalon")のデザインを記述するための言語です。

この、記述言語でインターフェースを構築することにより、実際に動かすソースとインターフェースとの分離を実現することができます。

 たとえば、機能豊富バージョンのソフトと簡易バージョンのソフトをXAMLを利用して作るとしましょう。

そのときに、複数のXAMLファイルを用意しておけば、それらを変更することによって、簡単にインターフェースを変えることができます。

 このように、XAMLはインターフェースとソースを分離しすることによって、ソースの複雑化を防ぎ、より効率的に開発をすることができるようにします。


Googleで検索してみたところ、MSDNにも情報が載ってました。

http://www.microsoft.com/japan/msdn/longhorn/introducing/longhornch03.asp

来年から高専は100分授業になるらしいです・・・・

授業時間長くしたとしても、どうせ集中力続かないからやめてほしいですね。


ところで、ぷよぷよというゲームを知っていますか?

私が大好きなゲームなんですが、なんとぷよぷよのAIを自分で作って動かすことができるAI-COM というものが公開されています。

リンク先のWikiにもいくつかJavaアプレットで動くデモのAIがありますが、あまり強くありません。

やはり、AIには限界があるのでしょうか・・・・

がんばれば強いAIを作れるような気がするので、そのうち挑戦することにします。

ぷよぷよ得意な方で、人工知能の分野をある程度知っている方はやってみてはどうでしょうか?

結構、面白そうな感じがします。


私は人工知能概論 という本を読んだことがありますが、これは結構わかりやすく、この分野を初めて勉強する人にはぴったりだと思います。

この分野についてあんまり知らない人でも勉強してがんばってみてください。


今日の授業「電子情報工学実験」は、テトリスの製作1でした。

テトリスといえばゲーム、ゲームといえばDirectXやOpenGLなどを想像したんですけど、そこまで教える時間がないらしく、文字を扱うライブラリを使って、キャラクタベースで表示部分を作るらしいです。


ncursesというライブラリを使ったんですけど、聞いたことありませんね・・・・。

調べてみたところ、Linux関係のページしか出ませんので、おそらく、それ関係のライブラリでしょう。

まぁ、なんていうか・・・・しょぼかったですね。


せっかく対戦テトリスプロジェクトを進めているので、学校の授業とソースコードを共有することにしますか。

表示部とフィールド部で分ければ問題ないですし。


家に帰ってからは、親の手伝いをやったりしましたが、弟と一緒にバドミントンをするために出かけました♪

さすが、弟、気合が入ってない!!

「疲れたー」「疲れたー」ってオィwバドミントンやりたかったんじゃないんかい。

まだ小学2年生の弟なんですが、なんてやる気のなさ・・・・。

大丈夫なんだろうか・・・・・・。