忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

反復子を自分で作ってみる

ども・・・・・・・・・・・・和佐田雅史です。
今回はイテレータについてです。

イテレータと言うのは反復子の事で、listやmapコンテナをfor文でポインタによる参照( のようなもの )を行いたい時に使います。

std::list< T >::iterator it = List.begin();

と言う感じですね。
しかし、自分でコンテナを作った時にiteratorはどう作ればよいでしょうか?

基本的には定義したコンテナクラスの中にローカルクラスとして定義するのが一般的です。

template< class T > class Freelist
{
// 実装

// ローカルクラスとして定義
class iterator : public std::iterator<.....>
};

ですが一々コンテナを作る時に定義するのははっきり言ってめんどくさいのでtemplateで作っておくと便利です。


//============================================
// コンテナ作成時の反復子
//
//
//
//============================================

#ifndef _ITERATOR_HPP_
#define _ITERATOR_HPP_

#include <iterator>

namespace Alumina
{

// friendの為の仮定義
template< typename Type , typename value_type > class iterator;
template< typename Type , typename value_type > class const_iterator;


//=============================================
// 通常iterator
//
//
//=============================================
template< typename Type , typename value_type > class iterator : public std::iterator<std::bidirectional_iterator_tag, value_type, void>
{
public:
 iterator() : _ptr(0) {}

 iterator(Type* ptr) : _ptr(ptr){}

 // ジェネリック要素へのアクセス
 Type& operator*() const {return *_ptr;}
 Type* operator->() const {return _ptr;}


 // 真偽判定
 bool operator==(const iterator& rhs) const {return _ptr == rhs._ptr;}
 bool operator!=(const iterator& rhs) const {return _ptr != rhs._ptr;}

//=============================================
//
// 演算子によるポインタ演算
//
//=============================================
 iterator& operator++() {_ptr = _ptr->_next; return *this;}
 iterator& operator--() {_ptr = _ptr->_prev; return *this;}
 iterator operator++(int i) { iterator temp = *this; ++*this; return temp; }
 iterator operator--(int i) { iterator temp = *this; --*this; return temp; }

protected:

 // メンバ
 Type* _ptr;

 friend class Type;
 friend class const_iterator;
};

//===============================================
// const_iterator
//
//
//===============================================
template< typename Type , typename value_type > class const_iterator : public std::iterator<std::bidirectional_iterator_tag, value_type, void>
{
public:
 const_iterator() : _ptr(0){}
 const_iterator(const iterator& it) : _ptr(it._ptr) {}
 const_iterator(const Type* ptr) : _ptr(ptr) {}

 const Type& operator*() const {return *_ptr;}
 const Type* operator->() const {return _ptr;}

 bool operator==(const const_iterator& rhs) const {return _ptr == rhs._ptr;}
 bool operator!=(const const_iterator& rhs) const {return _ptr != rhs._ptr;}

 //=============================================
 //
 // 演算子によるポインタ演算
 //
 //=============================================
 
 const_iterator& operator++() {_ptr = _ptr->_next; return *this;}
 const_iterator& operator--() {_ptr = _ptr->_prev; return *this;}
 const_iterator operator++(int i) { const_iterator temp = *this; ++*this; return temp; }
 const_iterator operator--(int i) { const_iterator temp = *this; --*this; return temp; }

protected:
 const Type* _ptr;

 friend class Type;
};


}
#endif


長くなりましたが、使用例を以下に示します。


// LISTNODE 型を管理するリストコンテナ
template < typename LISTNODE , template< class > class Interfase = ListType > class FreeList
{
public:

 // 実装インターフェース設定
 typedef Interfase< LISTNODE > LIST;

 // それに伴った反復子を定義
 typedef Alumina::iterator< LIST , LIST > iterator;
 typedef Alumina::const_iterator< LIST , LIST > const_iterator;

.........................

};

このように定義するだけでiteratorが使えるようになります。
便利ですね。


それではお疲れ様でした。

拍手[0回]

PR

ソース統合ツール

ども、こんばんわ~

お久しぶり。ZAKIです

年次製作もようやく肩の荷が下りそうですね

僕らのチームはデジタルワークス出れませんでしたが、

出れられる方にはがんばって欲しいです


さて、今回のテーマは「ソース統合ツール」です。

製作終盤になるとチーム製作なら必ず出てくる「ソース統合作業」

やれどこ更新しただの、まるまるコピーしたら動かないだの、面倒です

自分と相手の同じソースでどこが違うのかを表示してくれるような便利ツールないかなぁとか思いませんか?

実はあるんです。それ

拍手[0回]

発表会お疲れ様でした。


こんばんは。矢那です。

1年生&2年生の皆さん発表会お疲れ様でした。
満足したチームもあれば納得いかないチームもあると思います。
これをバネにして頑張ってください。まだまだ先はありますよ!


さて、今日はちょっとだけ就活のお話でもしようと思います。
実は一回書いて、ブラウザが落ちて(´・ω・`) してますが、ちゃっちゃと進めていきましょう。
さらにEKさんの二番煎じになる可能性大ですが、気にしない!


◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇

2009年度卒の皆さんは就活に本腰を入れる時期になりました。

企業によって既にエントリー受付どころか説明会を開催していたりして日にちの前後はあるものの、
今月からゲーム業界の求人が本格的になると思っていいでしょう。
一次募集のピークは3月だと思います。もちろん企業によって違いますが。
ちなみに某H社は2月末でエントリーを締め切っていました。先ほど確認したところ、今年の求人もほぼ同様になっています。
このように企業によって差が激しいので、気になったらすぐにリクナビや公式HPで確認しましょう。

そしてその後は2月~5月までのスケジュールを決めてしまうと日程管理がしやすいです。
そのためにはやはりエントリーが必要になるのですが、気になった企業は片っ端からしておくと楽ですね。
去年はリクナビは毎ナビで一括エントリーする企業が多かったので使いやすかったです。
ウェブ上で受付している企業はHPをブックマークし、エントリー済みフォルダを作って、完了したHPを移動してました。

エントリー時はアンケート形式で簡単にできる企業から、「このままプリントアウトしたら履歴書になるんじゃね?」ぐらいぎっしり記入する企業まで様々です。(某S社とか某K社とか…)
作業は1~2日ほどかけてじっくり行うと飽きずにできるはず。頑張ってエントリーしましょう。



と、長くなりましたが今日はこれで終わりに…する前に。


フォルダ整理中に去年の矢那さんの就活スケジュールメモを発見しました。
人柱一例として参考になればと思います。去年の話なんで参考までにね!

ついでに他のGESメンバーのスケジュールとかも書ける範囲内で書いてくれるといいな、とか言ってみる。

◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇

拍手[0回]

VC++のエラー番号

ども、こんば…おはようございます

気づけばもう朝でした。ZAKIです

最近更新が滞っていて申し訳ありません

デジタルワークスの選考会がもう間近で、GESメンバーも完全に修羅場モードに移行中なのです

恐らく、それらが一段落つくまでは、更新できないと思います

楽しみにされている方(いるのかな?)には申し訳ありませんが、

もう少しの間更新を休むことになりますので、何卒、ご理解頂きたいと思います。


さて、今回はふと見つけたVS(VC++)のエラーコード一覧ページのリンクを張っておきますね。

http://msdn2.microsoft.com/ja-jp/library/8x5x43k7(VS.80).aspx

msdnの公式ページの一部です。

左の項目からエラーコードを探してみてください。

地味に役に立つことを祈っていますw

それでは、今回はこの辺りで。

あでゅーノシ

拍手[0回]

C++でクラスの不思議

ども、こんばんわ~

久しぶりに登場のZAKIです

学校ではラボにちょこちょこ出現していますけどねw

製作もそろそろ終盤

完成に向けてラストスパートをかけているころじゃないでしょうか

今年の2年生の作品は完成度が高いのが多そうなので楽しみです

寒いですが、風引かないように体調には気をつけましょうね


さて、今回は「C++でクラスの不思議」です。

まず、このコードを見てください。

#include <stdio.h>

//インターフェイスA
class A {
public:
 virtual void MesA() = 0;
};

//インターフェイスB
class B {
public:
 virtual void MesB() = 0;
};

//実装クラスC
class C : public A , public B {
public:
 void MesA() { printf("Aのメソッドです。\n"); }
 void MesB() { printf("Bのメソッドです。\n"); }
};

//メイン関数
int main()
{
 C  c;
 void * pVoid = NULL;
 B *  pB  = NULL;
 
 pVoid = (void *)&c;

 //普通にキャストした場合
 pB = (B *)&c;
 pB->MesB();

 //void *を通してキャストした場合
 pB = (B *)pVoid;
 pB->MesB();

 return 0;
}

さぁ、このコードを実行したとき、どういう結果が出るでしょうか?

「あれ?」と思うような結果になりませんか?

拍手[0回]

OpenGL Shader Language

ども・・・・・・・・・・・・・・・GES会長の和佐田雅史です。

今日はいつものようにJUNK堂へ行っていましたが、新しい書籍が出ていたので紹介しておきます。

「GLUTによるOpenGL入門2 テクスチャマッピング」

遂にOpenGL Shader Languageの書籍が日本でも出ました。
同じシリーズの奴を一年次読んでましたが、今回のも中々に良書だと思います。

前半は環境マップ、放線マッピング、ShadowMap、バンプマップ等を固定機能のみで実装するやり方等が乗っています。

どれも代表的で非常に魅力的なEffectばかりです。
計算式なども乗ってますし、プログラムに直すとどうなるかもきちんと記述されています。

Shaderを使いたくない人はこちらでも充分でしょう。

後編はOpenGL Shader Language( 以下GLSL )を利用したプログラムです。

GLSLの基本的な記述の仕方から前半の内容をGLSLで記述したもの、視差マッピング( パララクスマッピング等とも呼ばれています )やトーンマッピング等も載ってます。


値段は2500円とかなりお買い得です。
OpenGLでゲームを開発する方は一見の価値ありだと思います。

それでは以上で書籍の紹介を終わります。
お疲れ様でした。

拍手[0回]

次世代ワールドホビーフェア

UNI_0131.jpg

ども・・・・・・・・・・・GES会長の和佐田雅史です。


1月13日にて次世代ワールドホビーフェア2008が京セラドーム大阪にて開催されました。
お子様向けの小さなゲームショウという感じの祭典でしたが、


アトラス、カプコン、コナミ、セガ、ソニー・コンピュータエンタテイメント、任天堂、レベルファイブ、バンダイナムコゲームズ等格業界の大手企業もブースを出していました。


次世代というだけあって近日発売のゲームを出展している所もありましたし、待ち時間120分などゲームショウ宛らの賑わいでした。


しかしゲームショウとは違い入場料も無料で、家族連れの方々が多かったように思います。
祭典自体は子供向けのものでしたし、ゲーム自体も子供向けの物が多かったですが、


子供達や一般の方々が嬉しそうにゲーム機に触れるのを見て、
私も一層の努力し、ユーザーの方々に喜んで貰えるようなゲームを作って行きたいと感じさせるそんな一日でした。

拍手[0回]

デジャヴ


いつものように25動を見ていました。
あまりランキングはチェックしないのですが、久しぶりに見てみようとチェックしました。

ら、ですね。

こんなものを発見。





この手の動き。この発想。このツール。このマリヲ。

全ての事実が一人を指しているようにしか見えません。

どっかで見たな。うん。でも多分違うだろうな、と思いつつ今日もあの方のHPに張り付いています。
 


久々に雑文から矢那でした。

拍手[0回]

作品発表へ向けて

ども・・・・・・・・・・・GES会長の和佐田雅史です。


前回矢那さんがプレゼンテーションについて書きました。
後一ヶ月ほどでいよいよ作品発表という丁度良い時期なので、本日は作品発表における要点または注意事項等を書いていこうと思います。


今回は綺麗事を言うつもりは一切無いので、読む方は心して読んでください。


1.プレゼンテーションにおける準備期間

少なくとも3日前にはデバッグを終えてプレゼンテーションの準備に取り掛かるべきです。
デバッグは作品の規模にもよりますが、私は大体一週間程行うようにしています。


原稿に関しては作品に出来るだけ多く関わった方に書いてもらいましょう。
そこから要点だけを抜き出して覚えておき、本番ではそれをその場の雰囲気に合わせてプレゼンします。

原稿を暗記するのは予期せぬ事態が起きた時、対処出来ない可能性大なのでお勧めできません。
ディスプレイに何も映らなかったり、Soundが出なかったり等、本人の意図しない事態が起こる可能性もあります。

発表が必ず成功するとは限りませんので、予期せぬ事態が起きた場合の策は常に用意して置くべきです。


プレゼンテーションに関して不安がある方は遠慮なく先生や先輩等を相手に練習していただけるよう頼んでみましょう。


因みにですが

「恥ずかしい・・・・・・」

とか

「見せたくない・・・・・・」

等と言って躊躇しているようではデジタルワークスには出れません。


2.どういった感じでプレゼンをすべきか?

他の作品には無い面白さ、作品の主なシステム、これらは勿論必須でしょう。
ツールなどを作った方はゲームの発表を終えた後、または合間に

「この作品を制作する過程でこういうツールも制作しました」

と言う程度で留めて置くと良いでしょう。
ツールや技術的な説明が長くなると聞き手側がダレます。発表者側の技術力が高ければ高いほど大衆から反感を買うでしょうし、大衆はそのような講義形式の発表は望んでいません。

しかし、高度な技術を使っているのであれば反感を買わない程度に言いましょう。

「この作品では某C社の2.5Dモーションブラーを実装しています」

とか

「ツール開発にはManaged DirectXを利用し、業界でも注目されているC#で開発致しました。」

これだけでも効果はかなり期待できます。

( 現在ツール開発はC++よりもC#で開発する傾向が高いです )
プレゼンでは必ず時間内に終えることの出来るよう、短すぎない程度のプレゼンをして行きましょう。


3.自分が不利になるような発言は一切しない

矢那さんも書いていましたが、

「時間が無いので実装していません」
「私のチームはグラフィッカーが居ないのでタイトルが作れませんでした」

等々自分で自分の首を絞めるような発言は一切しないようにしましょう。
例えばですが、企業説明会で態々自社の悪い所を発表するような企業はありませんよね?


それと同じです。

だからと言って出来てないものを出来ていると虚言するのはやめましょう。
そんな人は就活戦争では生き残れません。

出来る人間からすればそれは冒涜に近いものですし、面接や作品審査では絶対に見抜かれます。


プレゼンでは余計な事は言わず、第一に大衆の興味を引く様なプレゼンをする事を心掛け、自分の作った作品に自身を持って悔いの無いプレゼンテーションをしましょう。



長々と話してしまいましたが、言う事は以上です。


特に2年生はデジタルワークスに出る事がアピールの一つにも繋がりますので頑張って下さい。
それではお疲れ様でした。

拍手[0回]

書籍の紹介 Vol.2

ども・・・・・・・・GES会長の和佐田雅史です。
新年が明けて新しい書籍も出ましたので少し紹介しておきます。


・OpenGLの神髄
GLUT等を使わずにOpenGLを利用するプログラムなどが掲載されており、
( Windows、Linux対応 )

情報が少ないGLSLについても取り上げられていました。
ただ、本気でOpenGLをやりたい方はOpenGLプログラミングガイド( 通称赤本 )、GLSLをやりたい方は
OpenGL Shader Langage( オレンジ本 )

を購入する事をお勧めいたします。

・DirectXシェーダープログラミング
結構解り易く解説してある良書だと思います。
基本的なレンダリング部分の解説やShaderの仕組み、BumpMapやShadow等の良く多用されるテクニックについてもわかりやすく書かれてありました。

これからHLSLを始める方は是非お勧めの一冊です。

※ただ、詳しい計算方法や理論が知りたい方はDirectX9シェーダープログラミングブックの方がいいかもしれません。



・大規模C++ソフトウェアデザイン
大規模なシステムを開発するためのC++の使用方法を、あますことなく学ぶことが出来る一冊。
データーベース、オペレーティングシステム、フレームワークなどの大規模開発に携わるC++ソフトウェアの専門家にとって決定版ともいえる内容となっています。

Effective C++等と同様に強くなりたい方には必須の書籍だと思います。

拍手[0回]

便利ツールのご紹介

ども、こんばんわ~

すっかりもやしっ子のZAKIです

外に出る機会がないんですよね~

あ、明日から学校ですね

授業やら製作やらガンガンがんばっていきましょー

製作と言えば、この時期は修羅場ですね

1年生にとっては初めての人が多いんじゃないでしょうか。

怖くないですよ~楽しいですよ~


さて、今回は「便利ツールのご紹介」です。

僕がよく使っているツールをとりあえず、紹介してみようと思います。


拍手[0回]

実家で発見

ども、こんにちわ~

しばらくぶりのZAKIです

お正月にいっぱい食べたり飲んだりしていたら、体が壊れました

ブログの更新が無かったのは、つい最近まで寝込んでたからですw

飲みすぎ食べ過ぎには注意しましょうね~

さて、今回も雑記です。

いきなりですが、コレはなんでしょーかっ?

CA370229.JPG















拍手[0回]

年末のご挨拶。

みんな書いているので便乗して。
こんにちは、文月浩加です。

年末をだらけて過ごしました…。
年賀状も昨日出すという冒涜…。

出した相手には多分、よくて、三が日。悪ければもっと遅いと思います…。


今年はホールスタッフでてんやわんやでしたね…。
ほんとーに怒られながらも頑張りました。

個人的にほんとーにいろんなことがありました。
でも、いい年でした。

来年はどんな年になるのやら。
とりあえず、最後の大仕事、Digital Worksが待ち受けております…。

GESスタッフの皆さんにも遠慮なくてつだっていただこうと思ってますので
どうぞよろしく。


というわけで、あと12時間切りましたが
皆さんはどう過ごすのかな?

皆さんZAKIさんのアンケートにも答えてくださいね~。

では、良いお年をっ!

浩加でした。

拍手[0回]

年賀状

ども、こんばんわ~

こたつの魔力に勝てる気がしないZAKIです

いいですねコタツ

ずっと埋まっていたい衝動に駆られます

さぁ、今年も残すところあと2日となりました。

掃除は済ませたか?神棚にお祈りは?コタツの隅でぷるぷるしながらトイレを我慢する準備はOK?

と、某有名漫画のセリフを借りて、心配をしてみました。

さぁ、もうこの時期になると雑記しか出てきません。

タイトルもあるとおり年賀状を今更書いています。

皆さんはもう書いたりしましたか?

test001.jpg











僕の場合はこんな感じ。

画像が荒いのはわざとですw

届いてからのお楽しみってやつですよw

僕が年賀状を書く上でのモットーは「元旦に高いテンションをお届けする」です

別名、小学生クオリティともいう。

届いた人は今年はラッキーイヤーにきっとなる

そんな勘違いと一緒に新年にやってきます。

さぁ、存分に恥ずかしがるがいい。

それでは今回はこの辺りで。

あでゅーノシ

拍手[0回]

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]