<?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/gamexprogram/">
    <title>ProgramingTips</title>
    <link>http://w.atwiki.jp/gamexprogram/</link>
    <atom:link href="https://w.atwiki.jp/gamexprogram/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>ProgramingTips</description>

    <dc:language>ja</dc:language>
    <dc:date>2008-03-01T08:52:09+09:00</dc:date>
    <utime>1204329129</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/gamexprogram/pages/47.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamexprogram/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamexprogram/pages/46.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamexprogram/pages/44.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamexprogram/pages/45.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamexprogram/pages/43.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamexprogram/pages/42.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamexprogram/pages/41.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamexprogram/pages/23.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamexprogram/pages/21.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/gamexprogram/pages/47.html">
    <title>DirectX</title>
    <link>https://w.atwiki.jp/gamexprogram/pages/47.html</link>
    <description>
      *DirectX
**行列関連

 D3DXMatrixIdentity( D3DXMATRIX *out )
行列を単位行列にする    </description>
    <dc:date>2008-03-01T08:52:09+09:00</dc:date>
    <utime>1204329129</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamexprogram/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/gamexprogram/pages/2.html</link>
    <description>
      *[[ホームに戻る&gt;http://3rd.geocities.jp/gamexprogram/]]

*[[コメントフォーム]]

*ダウンロード
　　　[[サンプル&gt;http://3rd.geocities.jp/gamexprogram/sample.zip]]

*設定方法・インストール方法
-[[BorlandC++Compiler]]
-[[BCCDeveloper]]
-[[DirectXSDK(October2004)]]
-[[Luna]]

*[[C言語]]

*GAME
**[[共通]]

**[[アクション]]

**[[シューティング]]

*私的メモ
-[[DirectX]]





*更新履歴
#recent(10)

**来訪者
today:&amp;counter(today)
yesterday:&amp;counter(yesterday)

// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります    </description>
    <dc:date>2008-03-01T08:39:50+09:00</dc:date>
    <utime>1204328390</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamexprogram/pages/46.html">
    <title>複数弾を撃つ</title>
    <link>https://w.atwiki.jp/gamexprogram/pages/46.html</link>
    <description>
      *[[シューティング]]&gt;複数の弾を撃つ

前回は、一つの弾しか撃つことができなかったので、
今回は、複数の[[弾を撃つ]]ようにしてみましょう。

**ソースコード
[[shot2.cpp&gt;http://www26.atwiki.jp/gamexprogram/pub/shot2.cpp]]
[[function2.h&gt;http://www26.atwiki.jp/gamexprogram/pub/function2.h]]
[[function2.cpp&gt;http://www26.atwiki.jp/gamexprogram/pub/function2.cpp]]

**解説

 if(LunaPad::GetState(0, PAD_STATE_HOLD, PAD_BUTTON_01) )
 {
 	for(int i = 0;i &lt; BULLET_MAX;i++)
 	{
 		if(!bullet[i].IsExist)
 		{
 			bullet[i].IsExist = TRUE;
 			bullet[i].posx = player.posx;
 			bullet[i].posy = player.posy;
 			break;
 		}
 	}
 }
ここが、複数弾を撃つキモとなる部分です。
一番重要なのは、[[for文]]の途中に入り込んでいる
break文です。
このbreak文を書くことで、一回の入力ごとに
一つの弾が出るようになっています。
もしこのbreak文を書かなかったら、同時に
BULLET_MAX(今は10)個分の弾が描画されてしまい、一つの弾しか
描画されていないように見えるはずです。

&lt;[[シューティング]]に戻る    </description>
    <dc:date>2007-08-13T10:04:33+09:00</dc:date>
    <utime>1186967073</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamexprogram/pages/44.html">
    <title>シューティング</title>
    <link>https://w.atwiki.jp/gamexprogram/pages/44.html</link>
    <description>
      *シューティング
シューティングゲーム用の処理です。

-[[弾を撃つ]]
-[[複数弾を撃つ]]    </description>
    <dc:date>2007-08-13T10:03:09+09:00</dc:date>
    <utime>1186966989</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamexprogram/pages/45.html">
    <title>弾を撃つ</title>
    <link>https://w.atwiki.jp/gamexprogram/pages/45.html</link>
    <description>
      *[[シューティング]]&gt;弾を撃つ

弾を撃つ処理です。

**ソースコード
[[shot1.cpp&gt;http://www26.atwiki.jp/gamexprogram/pub/shot1.cpp]]
[[function2.h&gt;http://www26.atwiki.jp/gamexprogram/pub/function2.h]]
[[function2.cpp&gt;http://www26.atwiki.jp/gamexprogram/pub/function2.cpp]]

**解説

 if(LunaPad::GetState(0, PAD_STATE_HOLD, PAD_BUTTON_01) )
 {
 	if(!bullet.IsExist)
 	{
 		bullet.IsExist = TRUE;
 		bullet.posx = player.posx;
 		bullet.posy = player.posy;
 	}
 }
ショットする処理です。
弾が存在していないとき、弾の存在フラグをONにして、
プレイヤーの座標から出るようにしています。

 if(bullet.IsExist)
 {
 	bullet.posy -= bullet.speed;
 }
弾が存在しているときのみ、弾の座標を進めます。

 if(bullet.posy &lt; 0)
 {
 	bullet.IsExist = FALSE;
 }
 
弾が画面外に行ったとき、弾の存在フラグをOFFにしています。

 if(bullet.IsExist)
 {
 	/*描画*/
 	LunaTexture::Draw(bullet.lTex, &amp;bullet.Dst, &amp;bullet.Src, COLOR_BASE);
 }
 
弾が存在している時のみ、弾を描画するようにしています。

&lt;[[シューティング]]に戻る    </description>
    <dc:date>2007-07-25T16:28:58+09:00</dc:date>
    <utime>1185348538</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamexprogram/pages/43.html">
    <title>ポインタ3</title>
    <link>https://w.atwiki.jp/gamexprogram/pages/43.html</link>
    <description>
      *[[C言語]]&gt;ポインタ3

3回目は、構造体を使ってポインタを説明します。

**例文
 //================================================
 //include
 //================================================
 #include &lt;stdio.h&gt;
 
 //================================================
 //define
 //================================================
 #define P_AT 4 //自分の攻撃力
 #define P_DEF 2//自分の防御力
 #define E_AT 2//敵の攻撃力
 #define E_DEF 1//敵の防御力
 
 //================================================
 //struct
 //================================================
 struct tagChara
 {
 	char *name;//名前
 	int attack;//攻撃力
 	int defence;//防御力
 };
 
 //================================================
 //関数のプロトタイプ宣言
 //================================================
 void SetStatus(struct tagChara *chara, char *name, int attack, int defence);//ステータスのセット
 void DispStatus(struct tagChara *chara);//ステータスの表示
 
 //================================================
 //メイン関数
 //================================================
 int main(void)
 {
 	/*構造体変数の宣言*/
 	struct tagChara player;
 	struct tagChara enemy;
 	
 	/*ステータスセット*/
 	SetStatus(&amp;player, &quot;勇者&quot;, P_AT, P_DEF);
 	SetStatus(&amp;enemy, &quot;モンスター&quot;, E_AT, E_DEF);
 	
 	/*ステータスの表示*/
 	DispStatus(&amp;player);
 	DispStatus(&amp;enemy);
 	
 	return 0;
 }
 
 //================================================
 //ステータスセット
 //================================================
 void SetStatus(struct tagChara *chara, char *name, int attack, int defence)
 {
 	chara-&gt;name = name;
 	chara-&gt;attack = attack;
 	chara-&gt;defence = defence;
 }
 
 //===============================================
 //ステータスの表示
 //===============================================
 void DispStatus(struct tagChara *chara)
 {
 	[[printf]](&quot;%s:\t&quot;, chara-&gt;name);
 	printf(&quot;attack:%d\t&quot;, chara-&gt;attack);
 	printf(&quot;defence:%d\n&quot;, chara-&gt;defence);
 }
 
**実行結果


**解説
 void SetStatus(struct tagChara *chara, char *name, int attack, int defence);//ステータスのセット
構造体をポインタにして、関数のプロトタイプ宣言をしています。

 SetStatus(&amp;player, &quot;勇者&quot;, P_AT, P_DEF);
ステータスの設定をしています。
SetStatusの最初の引数は、構造体のポインタのため、
&amp;をつけています。

では実際に、関数の中身を見て行きましょう。
 chara-&gt;name = name;
 chara-&gt;attack = attack;
 chara-&gt;defence = defence;
構造体ポインタの変数に、引数として指定したもの
を代入しています。
構造体ポインタを代入するときは、上記の通り
-&gt;をつけるか、
(*chara).nameという風にします。
DispStatusも同じような感じです。

とりあえず、ポインタの回は以上です。
大変複雑で難しいですが、一度使い方さえ
抑えてしまえば、何とかなると思います。

&lt;[[C言語]]に戻る    </description>
    <dc:date>2007-07-18T12:20:14+09:00</dc:date>
    <utime>1184728814</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamexprogram/pages/42.html">
    <title>ポインタ2</title>
    <link>https://w.atwiki.jp/gamexprogram/pages/42.html</link>
    <description>
      *[[C言語]]&gt;ポインタ2

2回目は、関数を使ってポインタを説明します。

**例文
 //================================================
 //include
 //================================================
 #include &lt;stdio.h&gt;
 
 //================================================
 //struct
 //================================================
 struct tagChara
 {
 	int attack;//攻撃力
 	int defence;//防御力
 };
 
 //================================================
 //関数のプロトタイプ宣言
 //================================================
 void SetStatus(int *attack, int *defence);//ステータスセット
 
 //================================================
 //メイン関数
 //================================================
 int main(void)
 {
 	struct tagChara player;
 
 	/*ステータスセット*/
 	SetStatus(&amp;player.attack, &amp;player.defence);
 	
 	[[printf]](&quot;攻撃力:%d\t&quot;, player.attack);
 	printf(&quot;防御力:%d&quot;, player.defence);
 	
 	return 0;
 } 
 
 //================================================
 //ステータスセット
 //================================================
 void SetStatus(int *attack, int *defence)
 {
 	printf(&quot;攻撃力を入力せよ&quot;);
 	[[scanf]](&quot;%d&quot;, attack);
 	
 	printf(&quot;防御力を入力せよ&quot;);
 	scanf(&quot;%d&quot;, defence);
 }

**実行結果

**解説
 void SetStatus(int *attack, int *defence);
引数がポインタの関数のプロトタイプ宣言をしています。
こうしないと、正確な値が出ません(確認済)

 SetStatus(&amp;player.attack, &amp;player.defence);
関数の使用です。
ポインタを参照するため、&amp;をつけてください。

 scanf(&quot;%d&quot;, attack);
このscanfですが、少し違うところがあります。
それは&amp;がついていないところです。
これは、前回のポインタの説明に関係してきます。
前回
|ポインタ|数値:*を前につける|
||アドレス:何も付けない|
と書いたと思います。
その関係で、アドレスを参照するときには何もいらないのです。

&lt;[[C言語]]に戻る    </description>
    <dc:date>2007-07-11T17:27:20+09:00</dc:date>
    <utime>1184142440</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamexprogram/pages/41.html">
    <title>ポインタ1</title>
    <link>https://w.atwiki.jp/gamexprogram/pages/41.html</link>
    <description>
      *[[C言語]]&gt;ポインタ1
[[C言語]]で最大の難関と言われるポインタです。

**使用方法
 [[データ型]] *変数名;
変数前に*(アスタリスク)をつけることでポインタを指します。
 
**例文
 //================================================
 //include
 //================================================
 #include &lt;stdio.h&gt;
 //================================================
 //メイン関数
 //================================================
 int main(void)
 {
 	int a = 1;
 	int *p;
 	
 	p = &amp;a;//ポインタにアドレスを入れる
 	
 	[[printf]](&quot;aの変数のアドレスは%p\n&quot;, &amp;a);
 	printf(&quot;aの変数内の数値は%d\n&quot;, a);
 	
 	printf(&quot;pの変数のアドレスは%p\n&quot;, p);
 	printf(&quot;pの変数内の数値は%d&quot;, *p);
 	
 	return 0;
 }

**実行結果
&amp;ref(pointa.png)

**解説
 int *p;
pという名前のポインタを宣言しています。

 p = &amp;a;
ポインタのアドレスを代入しています。

 printf(&quot;aの変数のアドレスは%p\n&quot;, &amp;a);
%pはアドレスを表示させるものです。
そして、アドレスを示すので変数の前に&amp;をつけています。

 printf(&quot;pの変数のアドレスは%p\n&quot;, p);
 printf(&quot;pの変数内の数値は%d&quot;, *p);
ポインタにアドレスを入れた場合は、数値とアドレスを
見る方法が変わります。
アドレスの場合は、前に何も付けずに、
数値の場合は、*を付けています。

ややこしいので、少し表にしてみました。
|普通の変数の場合|数値|何も付けない|アドレス|前に&amp;|
|ポインタの場合|数値|前に*|アドレス|何も付けない|

&lt;[[C言語]]に戻る    </description>
    <dc:date>2007-07-04T16:57:58+09:00</dc:date>
    <utime>1183535878</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamexprogram/pages/23.html">
    <title>C言語</title>
    <link>https://w.atwiki.jp/gamexprogram/pages/23.html</link>
    <description>
      *C言語講座
-[[printf]]
-[[scanf]]
-[[データ型]]
-[[演算子1]]
-[[演算子2]]
-[[if-else文]]
-[[while文]]
-[[for文]]
-[[switch文]]
-[[define]]
-[[enum]]
-[[構造体1]]
-[[構造体2]]
-[[配列1]]
-[[配列2]]
-[[配列3]]
-[[関数1]]
-[[関数2]]
-[[ポインタ1]]
-[[ポインタ2]]
-[[ポインタ3]]    </description>
    <dc:date>2007-07-04T16:55:09+09:00</dc:date>
    <utime>1183535709</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamexprogram/pages/21.html">
    <title>背景のスクロール</title>
    <link>https://w.atwiki.jp/gamexprogram/pages/21.html</link>
    <description>
      **[[アクション]]&gt;背景スクロール
横スクロールアクションを作る時に、背景をスクロールさせる処理は必ず必要です
今回は、自動で背景をスクロールさせるだけの処理です
後日、この処理の応用例を載せる予定(といって滞っている)ですが、
自分でこのソースをいろいろいじって遊んでみてください。
今回表示する背景はこちらです。
&amp;ref(sample.jpg)

**ソースコード
[[BGScroll.cpp&gt;http://www26.atwiki.jp/gamexprogram/pub/BGscroll.cpp]]


**実行結果
&amp;ref(ss3.png)
背景がスクロールします

**解説
今回は特にないです。質問があったら連絡してください。
----    </description>
    <dc:date>2007-06-27T17:15:56+09:00</dc:date>
    <utime>1182932156</utime>
  </item>
  </rdf:RDF>
