<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/dencyclopedia/">
    <title>Dencyclopedia</title>
    <link>http://w.atwiki.jp/dencyclopedia/</link>
    <atom:link href="https://w.atwiki.jp/dencyclopedia/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>Dencyclopedia</description>

    <dc:language>ja</dc:language>
    <dc:date>2013-10-19T17:24:46+09:00</dc:date>
    <utime>1382171086</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/dencyclopedia/pages/23.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dencyclopedia/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dencyclopedia/pages/38.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dencyclopedia/pages/39.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dencyclopedia/pages/37.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dencyclopedia/pages/24.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dencyclopedia/pages/19.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dencyclopedia/pages/33.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dencyclopedia/pages/31.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dencyclopedia/pages/36.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/dencyclopedia/pages/23.html">
    <title>自作ゲーム公開所</title>
    <link>https://w.atwiki.jp/dencyclopedia/pages/23.html</link>
    <description>
      自作のゲームを作りかけでも構わないからどんどんうｐしていくページ。


|作品名|リンク|作者名|状態|説明|ソース(optional)|
|TypingD3|[[TypingD3.zip(Dropbox)&gt;https://www.dropbox.com/s/myiz2z1twl9uq0o/TypingD3.zip]]|M@P3|alpha0.5|タイピングゲーム。readmeは必ず読んでね|同梱|
|SandBox|[[SandBox.zip(Dropbox)&gt;https://www.dropbox.com/s/l1pgs6dawcmkx8u/Sandbox.zip]]|M@P3|？|講座用|ソースのみ|
|SandBox|[[ShowCase.apk(Dropbox)&gt;https://www.dropbox.com/s/0ff9x1zxpr7d7y6/ShowCase.apk]]|M@P3|？|androidアプリ、紹介用|ソース[[ShowCase.zip(Dropbox)&gt;https://www.dropbox.com/s/48gjdrm1evwupdf/ShowCase.zip]]|



- ページ作成＆サンプル公開。  -- M@P3  (2013-03-25 22:26:37)
#comment    </description>
    <dc:date>2013-10-19T17:24:46+09:00</dc:date>
    <utime>1382171086</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dencyclopedia/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/dencyclopedia/pages/2.html</link>
    <description>
      *メニュー
-&amp;sizex(5){[[トップ]]}


-&amp;sizex(3){[[プログラミング技術]]}
-&amp;sizex(3){[[電子工作技術]]}
-&amp;sizex(3){[[自作ゲーム公開所]]}

-&amp;sizex(3){[[DTM班]]}

-&amp;sizex(3){[[夏合宿マニュアル置き場]]}

-&amp;sizex(3){[[過去の活動・反省]]}
+&amp;sizex(3){[[　2013年度]]}
+&amp;sizex(3){[[　2012年度]]}
+&amp;sizex(3){[[　2011年度]]}
----



// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります


//**更新履歴
//#recent(20)    </description>
    <dc:date>2013-07-08T17:02:42+09:00</dc:date>
    <utime>1373270562</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dencyclopedia/pages/38.html">
    <title>DTM班</title>
    <link>https://w.atwiki.jp/dencyclopedia/pages/38.html</link>
    <description>
      DTM班

[[2013年度CD制作]]


#comment    </description>
    <dc:date>2013-07-08T17:02:02+09:00</dc:date>
    <utime>1373270522</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dencyclopedia/pages/39.html">
    <title>2013年度CD制作</title>
    <link>https://w.atwiki.jp/dencyclopedia/pages/39.html</link>
    <description>
      芝浦祭にCDを出そうと計画するページ



#comment    </description>
    <dc:date>2013-07-08T17:00:07+09:00</dc:date>
    <utime>1373270407</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dencyclopedia/pages/37.html">
    <title>夏合宿マニュアル置き場</title>
    <link>https://w.atwiki.jp/dencyclopedia/pages/37.html</link>
    <description>
          </description>
    <dc:date>2013-06-10T07:17:19+09:00</dc:date>
    <utime>1370816239</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dencyclopedia/pages/24.html">
    <title>夏合宿仮置き場</title>
    <link>https://w.atwiki.jp/dencyclopedia/pages/24.html</link>
    <description>
          </description>
    <dc:date>2013-06-10T07:16:57+09:00</dc:date>
    <utime>1370816217</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dencyclopedia/pages/19.html">
    <title>　2012年度</title>
    <link>https://w.atwiki.jp/dencyclopedia/pages/19.html</link>
    <description>
          </description>
    <dc:date>2013-05-20T11:40:39+09:00</dc:date>
    <utime>1369017639</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dencyclopedia/pages/33.html">
    <title>環境構築</title>
    <link>https://w.atwiki.jp/dencyclopedia/pages/33.html</link>
    <description>
      ・開発環境について
簡単なプログラムであれば、メモ帳でも十分に書くことができる。
しかし、われわれプログラマは人間にしかできないクリエイティブなことをすべきであって、打ち間違いを探すような時間はまったくの無駄である。
そのため、一般的にはIDEを使用する。

Visual Studioと呼ばれるIDEがある。M$社の、win向け開発環境で、比較的に標準的な環境である。
われわれは芝浦工業大学の学生であるので、本来恐ろしく高いこのソフトを無料で手に入れることができる。
そのためにDreamSparkというサービスを利用する。
手順については明記しないでおく。
Visual Studioは強力なIDEであり、ユーザーフレンドリーである。
全てインストールすれば、VC++、VB、C#といった言語を利用できる。
これらは全て.NETフレームワークを使うソフトウェアを作るための環境である。

もし、LinuxやMacでも動かすようなプログラムを作りたいなら、Visual Studioはあまり適した解とは言えない。
その場合、eclipseなどの環境を導入する必要があるかもしれない。


・ゲーム用ライブラリについて
わがサークルが標準的に使うライブラリは、DXライブラリである。
これはDirectXを使用した、C言語でゲームを作るためのライブラリで、初心者にとってはとっつきやすい。
また、ネット上にも情報が多い。
導入方法は、公式ページにあるので参照してほしい。
ただ、このライブラリ(や、大抵のゲームライブラリ)はゲームの本質に干渉しないようにできている。
そのため、プログラマはこのライブラリを利用しつつ、自分の思うようにゲームのモデルを作っていく必要がある。
自由ということは確かだが、自由すぎて迷うかもしれない。
ネットで探すのもよいが、頭を使って解決策を導くのも醍醐味の一つであるから頑張ってほしい。
もしDirectXで作りたくないというのなら、必然的にOpenGLによる開発となる。
OpenGLはMacやLinuxでも使える描画方式であるので、個人的にはjavaと組み合わせることを勧めておく。
lwjglというライブラリがあるので、英語を読むことに抵抗がないなら見てみるといいかもしれない。    </description>
    <dc:date>2013-05-02T21:58:59+09:00</dc:date>
    <utime>1367499539</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dencyclopedia/pages/31.html">
    <title>PG講座3</title>
    <link>https://w.atwiki.jp/dencyclopedia/pages/31.html</link>
    <description>
      ダイジェスト。


さて、ここまで変数と関数の宣言と、変数をいじくる方法については述べた。
しかし、まともなコンピュータプログラムを書きたいならば、条件分岐と繰り返し処理は確実に必要である。

・条件分岐
条件式を満たしているか否かによって、実行する命令（またはブロック）を変える処理。
if-elseif-else　と、switch-case-defaultがある。（一般的にはif文、switch文と呼ばれる）
if文の例を示す。

#highlight(){{
#include&lt;stdio.h&gt;
#define MODE 0
int main(void)
{
	int i = MODE;
	if(i == 0)printf(&quot;mode 0;&quot;);
	else if(i == 1)printf(&quot;mode 1&quot;);
	else printf(&quot;unknown mode.&quot;);
	return 0;
};
}}
このように、else ifを使うことができる。else ifは何回でも重ねることができるが、後述するswitch文の方が適している場合がある。
なお、これはブロックを用いない方法である。
ブロックを用いると、
#highlight(){{
#include&lt;stdio.h&gt;
#define MODE 0
int main(void)
{
	int i = MODE;
	if(i == 0)
	{
		printf(&quot;mode 0;&quot;);
	}
	else if(i == 1)
	{
		printf(&quot;mode 1&quot;);
	}
	else
	{
		printf(&quot;unknown mode.&quot;);
	}
	return 0;
};
}}
とも書ける。この二つは同意の処理である。しかし、後者の処理の場合はあくまでブロックを実行しているため、ブロックの中にある複数の命令を一気に実行できる。

次に、switch文。
#highlight(){{
#include&lt;stdio.h&gt;
#define MODE 0
int main(void)
{
	int i = MODE;
	switch (i)
	{
		case 0:
			printf(&quot;mode 0.&quot;);
			break;
		case 1:
			printf(&quot;mode 1.&quot;);
			break;
		default:
			printf(&quot;unknown mode.&quot;);
	}
	return 0;
};
}}
switch文は、if文よりも、多くのケースの処理を分けるのに適している方式である。
その代わり、分岐を判別するための変数は一つ限りで、条件式らしい条件を与えることもできない。
また、break文は必須である。breakしない場合、そのまますぐ下のケースの処理に入ってしまう。
しかしこれを利用することで、指定した複数のケースの時に同じ命令を実行させることもできる。
つまり以下のようにできる。

#highlight(){{
#include&lt;stdio.h&gt;
#define MODE 0
int main(void)
{
	int i = MODE;
	switch (i)
	{
		case 0:
		case 1:
			printf(&quot;known mode.&quot;);
			break;
		default:
			printf(&quot;unknown mode.&quot;);
	}
	return 0;
};
}}
これは、i == 0 および i == 1の時と、　それ以外の時とで分岐している。


・繰り返し文
繰り返し文はいくつかあるが、二つだけ紹介する。
whileとforである。
whileはもっとも単純な繰り返し処理で、与えた条件式が正しい（真の（trueの））時のみ繰り返し、そうでないときは繰り返さずに次の処理に移る。

以下は実行してはならない。
#highlight(){{
#include&lt;stdio.h&gt;
int main(void)
{
	int i = 0;
	while(1)
	{
		printf(&quot;hoge\r\n&quot;);
	}
	return 0;
};
}}
while(1)とは、何があろうと永久にループし続けることを意味する。言語によってはwhile(true)ともいう。
そのため、危険だということに注意すべきだ。
では、これではどうだろうか。
#highlight(){{
#include&lt;stdio.h&gt;
int main(void)
{
	int i = 0;
	while(i &lt; 10)
	{
		printf(&quot;hoge\r\n&quot;);	
		i++;
	}
	return 0;
};
}}
無限ループではなくなった。
また、
#highlight(){{
#include&lt;stdio.h&gt;
int main(void)
{
	int i = 0;
	while(1)
	{
		printf(&quot;hoge\r\n&quot;);	
		i++;
		if(i &gt;= 10)break;
	}
	return 0;
};
}}
これでも同様に動作する。
break文によって制御するのは、基本的に無限ループにしつつ、ある条件を満たしたときのみループを終えるという設計の際に有用である。
ゲームは基本的に、アップデート処理と描画処理を交互に行い、特定の動作をしない限り永久にそれを続けるため、breakによって制御する方式は分かりやすい。
無論、同じ処理をwhileの条件式にするのでもよい。好きな方法をとるといい。

次に、for文。
for文とは、ループ処理に入ろうとするときの処理と、ループするかどうかの条件式と、処理を終えて次のループへ入る直前の処理と、を与えて動く繰り返し文である。
#highlight(){{
#include&lt;stdio.h&gt;
int main(void)
{
	for(int i = 0; i &lt; 10; i++)
	{
		printf(&quot;hoge\r\n&quot;);
	}
	return 0;
};
}}
前述のものと同じように動くのだが、随分とすっきりしたのがわかるだろうか。
なお、環境によってはint i を別に宣言する必要があるかもしれない。しかし、最近のコンパイラならばこのままで動くだろう。



・使い分け
このように、条件分岐と繰り返し文は幾通りかのやり方がある。
忘れないでほしいのは、これらはプログラム次第で相互に代替できるということだ。
ゆえに、使い分けは実はさほど重要ではない。
無論、使い分けられるならば読みやすいソースになるだろうが、趣味のプログラムならばあまり気にする必要はない。
参考までに、whileは無限ループのみで使い、他はできるだけforを使うという方式を提示しておく。個人によって最適解は異なるので、模索してほしい。    </description>
    <dc:date>2013-04-30T12:01:27+09:00</dc:date>
    <utime>1367290887</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dencyclopedia/pages/36.html">
    <title>ゲーム製作1</title>
    <link>https://w.atwiki.jp/dencyclopedia/pages/36.html</link>
    <description>
      ゲームを作るにあたって、いくつかの点を通例としてあげられる。

・updateとdrawは分離すること。
updateとは、移動処理などの、裏方の処理である。
drawとは、描画処理である。

drawは、基本的に60回/sec実行すればよく、それ以上は無意味なことが多い。
updateは、開発者の意向により実行間隔は異なる。
そのため、これらは混ぜるべきではない。updateの処理においてdrawする、あるいはその逆はあまりよい書き方とは言えない。
描画処理は非常に重い処理である。そのため、update処理とdraw処理を同時に行おうとすると、処理時間である1/60秒内に処理できない部分が発生する。
ただ単に描画できなかっただけなら問題はないが、updateさえされていないなら問題だ。
そのため基本的には、updateが全て終わった後にdrawを実行、あるいはフレーム落ちということにしてdrawせずに次のupdateを行う。
#highlight(){{
//疑似コード

void main()
{
	while(true)
	{
		update();//モデルのアップデート
		sleep();//drawを始める時間まで待機
		draw();//描画
	}
}

void update()
{
	updatePlayer();
	updateEnemy();
}

void draw()
{
	drawPlayer();
	drawEnemy();
}

}}

追加してください...    </description>
    <dc:date>2013-04-29T17:57:56+09:00</dc:date>
    <utime>1367225876</utime>
  </item>
  </rdf:RDF>
