<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>自由帳：Cページ</title>
<link>https://ameblo.jp/shaold/</link>
<atom:link href="https://rssblog.ameba.jp/shaold/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>プログラム学習記:このブログは、管理人葉月によるゲーム研究の場です。ここにあるソースは、実験的な物や研究的なものを多大に含んでいます。たとえ何か問題が発生しても責任は負いません。</description>
<language>ja</language>
<item>
<title>ブロックを動かせるようになった結果がこれだよOTL</title>
<description>
<![CDATA[ <a href="http://stat.ameba.jp/user_images/20090913/21/shaold/f0/78/j/o0196012410252943306.jpg"><img src="https://stat.ameba.jp/user_images/20090913/21/shaold/f0/78/j/t01960124_0196012410252943306.jpg" alt="自由帳：Cページ-積んでる"></a><br><br>ようやくブロックを押せるようになりました。<br>で、嬉々として動かしていたのですが、こうなってしまい、<br>（黄土色の場所は行けない部分なため）積みました。<br>ブロックを引く処理も検討してみたものの、今回書いた方法とは違う方法を考えないと駄目みたいです。<br><br>なので、とりあえず整理する意味で押す処理を書いておきます。<br><br><pre>// 中略済みマップデータ<br>int M_Active[ MAP_HEIGHT ][ MAP_WIDTH ] =<br>{<br>        { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },<br>        { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },<br>        { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },<br>        { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },<br>        { 1,1,1,1,1,0,0,<span style="color: rgb(238, 130, 238);">2</span>,0,0,0,0,0,0,0,0,0,0,1,1 },<br>        { 1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1 },<br>        { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }<br>} ;<br><br>0:行ける場所<span style="font-family: &quot;ＭＳ Ｐゴシック&quot;,Osaka,&quot;ヒラギノ角ゴ Pro W3&quot;,Arial,Helvetica;"><br></span>1:行けない場所<span style="color: rgb(238, 130, 238);"><span style="font-family: &quot;ＭＳ Ｐゴシック&quot;,Osaka,&quot;ヒラギノ角ゴ Pro W3&quot;,Arial,Helvetica;"><br></span>2</span>:ブロック<br><br>//物体の位置の初期化<br>for( i = 0 ; i &lt; MAP_HEIGHT ; i ++ ){<br>for( j = 0 ; j &lt; MAP_WIDTH ; j ++ ){<br>if( M_Active[ i ][ j ] == 2 ){y=i,x=j;}<br>}<br>}<br><span style="color: rgb(238, 130, 238);">2</span>の位置を数えるのがめんどくさかったために作った処理だが、<br><span style="color: rgb(238, 130, 238);">2</span>の位置を複数使うときに問題があるため改良の余地がある。<br></pre><span style="font-family: monospace;">&nbsp;</span>//ブロックを動かす上でのメイン処理。<span style="font-family: monospace;"><br></span>//ブロックの前でZ+十字キーで使用可能になる。<span style="font-family: monospace;"><br></span>obj_select=<span style="color: rgb(0, 0, 255);">can_or_cannot(ch.x,ch.y,ch.muki);</span><br><pre>if(obj_select==1)  walking_flag=0;<br>if(obj_select==2) { <br>if(KeyBuf[KEY_INPUT_Z ]){<br>if    (KeyBuf[ KEY_INPUT_UP ]&amp;&amp; M_Active[ y-1 ][ x ]!=1){        //上向きy--<br>y--;<br>M_Active[ y+1 ][ x ]=0;<br>}<br>　　　　if(KeyBuf[ KEY_INPUT_RIGHT ] &amp;&amp; M_Active[ y ][ x+1 ]!=1){        //右向きx++<br>x++;<br>M_Active[ y ][ x-1 ]=0;<br>}<br>if(KeyBuf[ KEY_INPUT_DOWN ]&amp;&amp; M_Active[ y+1 ][ x ]!=1) {       //下向きy++<br>y++;<br>M_Active[ y-1 ][ x ]=0;<br>}<br>if(KeyBuf[ KEY_INPUT_LEFT ]&amp;&amp; M_Active[ y ][ x-1 ]!=1){        //左向きx--<br>x--;<br>M_Active[ y ][ x+1 ]=0;<br>}<br>}<br>M_Active[ y ][ x ]=2;<br>}<br>DrawGraph( x* MAP_SIZE, y*MAP_SIZE , dra[1] , FALSE ) ;<br><br>処理は、<br>・十字キーが押されていて、移動先が通行可能ならば、<br>例：if(KeyBuf[ KEY_INPUT_UP ]&amp;&amp; M_Active[ y-1 ][ x ]!=1)<br>・ブロックを押す。<br>例：y--;<br>・そして、移動前のブロックの位置を消去。<br>例：M_Active[ y+1 ][ x ]=0;<br>・後は、移動後のブロックの位置を書き加える。<br>M_Active[ y ][ x ]=2;<br>・それだけである。<br><br>全ソース<br><a href="http://members3.jcom.home.ne.jp/strolling/zukai/mainGame.txt">http://members3.jcom.home.ne.jp/strolling/zukai/mainGame.txt</a><br><br>本編と関係のない後記。<br>以前の記事で、関数化のことに触れたが、<br>この計画は、もう少し作りこんでからにしようと思った。<br>なぜなら、どの処理情報がどこで必要になるかの予測が難しかったからである。<br>今回、関数化がゲームプログラミングの邪魔になってしまったことからも、<br>そのことをつくづく感じた。<br><br></pre>
]]>
</description>
<link>https://ameblo.jp/shaold/entry-10342021388.html</link>
<pubDate>Sun, 13 Sep 2009 23:04:07 +0900</pubDate>
</item>
<item>
<title>パネルを動かすプログラムに関して。</title>
<description>
<![CDATA[ <a target="_blank" href="http://ameblo.jp/shaold/entry-10175943359.html">http://ameblo.jp/shaold/entry-10175943359.html</a><br><br>で考えた仕様をもう少し細かくしてみた。<br><br>メモ：秒数指定に関して。<br>物の重さを表現するために入れようかとも思ったのだが、<br>処理がめんどくさくなりそうなら省くかもしれない。<br><br>IF Enterが押されているか？{　//物を掴む処理<br>　　IF ↑（上）<br>　　　　IF   　　10秒以下　何もしない<br>　　　　ELSE　10秒以上　上に移動<br>　　IF →（右）<br>　　　　IF   　　10秒以下　何もしない<br>　　　　ELSE　10秒以上　右に移動<br>　　IF ↓（下）<br>　　　　IF   　　10秒以下　何もしない<br>　　　　ELSE　10秒以上　下に移動<br>　　IF ←（左）<br>　　　　IF   　　10秒以下　何もしない<br>　　　　ELSE　10秒以上　左に移動<br>}<br>ELSE{<br>　　押されていない場合はここ。<br>}<br><br>こうやって考えてみると、<br>前後左右に動かす処理は、歩く処理と似ている部分がある事に気づく。<br>主にこの辺。<br><br>     if(walking_flag==1){        　　　//歩くフラグが立っていたら<br>　　if     (ch-&gt;muki==0)        　　　//上向きならch-&gt;y座標を減らす<br>　　　　ch-&gt;y--;<br>            　　else if(ch-&gt;muki==1)        //右向きならch-&gt;x座標を増やす<br>                    　　　　ch-&gt;x++;<br>            　　else if(ch-&gt;muki==2)        //下向きならch-&gt;y座標を増やす<br>                    　　　　ch-&gt;y++;<br>            　　else if(ch-&gt;muki==3)        //左向きならch-&gt;x座標を減らす<br>                    　　　　ch-&gt;x--;<br>      }<br>  else{<br>　　break;<br>  }<br><p>で、現在この十字キー部分をうまく利用して、汎用的な関数にできないものか？と考えている。</p>
]]>
</description>
<link>https://ameblo.jp/shaold/entry-10269358555.html</link>
<pubDate>Thu, 28 May 2009 03:44:06 +0900</pubDate>
</item>
<item>
<title>歩行プログラム（スクロール版の動作）</title>
<description>
<![CDATA[ 以前、こういう風にキャラを歩かせるように作った。<br><a href="http://ameblo.jp/shaold/entry-10118548934.html" target="_blank">http://ameblo.jp/shaold/entry-10118548934.html</a><br><br><br>が、RPGではこういう風に歩かないことに気づいた。<br>では、どこを歩いているのか？<br><br>答えは、常に真ん中を歩いているということだ。<br>つまり、キャラは歩く動作のみで背景が動いているのである。<br><br>これをどうプログラムするのか分からないのでもう少し煮詰めてみようかと思う。<br><br>上記の問題を含みながらも完成した関数<br><a href="http://members3.jcom.home.ne.jp/strolling/zukai/walk.txt" target="_blank">http://members3.jcom.home.ne.jp/strolling/zukai/walk.txt</a><br><a target="_blank" href="http://members3.jcom.home.ne.jp/strolling/zukai/walk_h.txt">http://members3.jcom.home.ne.jp/strolling/zukai/walk_h.txt</a><br><br>前回のプログラム<span class="date">　（2008-07-25）との違いは、<br>１キャラが歩いているアニメーションを追加<br><br>２データと処理の分離<br>関数へは、キャラ画像（画像は12分割限定）とキャラの位置を渡すだけでOK！<br><br>３立ち止まり時に、歩く途中の画像で止まらないように補正する関数を追加<br><br>の３点。<br>マップに関しては、後ほど。<br>だんだんこのブログがバージョン管理のためにupするようになってきているような…。</span><span class="date"><br><br>追記<br>キャラを常に真ん中に配置するには、</span><br>DrawGraph( ch-&gt;x , ch-&gt;y , ch-&gt;c , TRUE ) ;　と言う関数を、<span style="font-family: monospace;"><br></span>DrawGraph( 250 , 250 , ch-&gt;c , TRUE ) ;　に変更すればいいと言うことが判明した。<br><br>（ちなみに250と言うのは暫定。使用するときは、#defineで数値を固定したほうが良さそう。）<br><br>追記その２<br>この関数内に背景を入れる処理も一緒に書かないといけないことが分かった。<br>背景と歩く処理を別に書いた場合、背景をロード後歩く処理に移り、<br>歩いている間は背景が消えてしまう。<br>そして、歩き終わったら背景画像が再びロードされると言った具合になった。<br>改良の余地があるが、歩かせる<span style="font-weight: bold;">だけ</span>と言う意味では完成してるので、そのままにしておく。<br>（けっしてめんどくさかった訳ではない。）<br>
]]>
</description>
<link>https://ameblo.jp/shaold/entry-10188284561.html</link>
<pubDate>Mon, 05 Jan 2009 22:50:48 +0900</pubDate>
</item>
<item>
<title>パネルを動かすプログラム</title>
<description>
<![CDATA[ <a href="http://stat.ameba.jp/user_images/94/1d/10117390894.jpg"><img border="0" src="https://stat.ameba.jp/user_images/94/1d/10117390894_s.jpg" alt="自由帳：Cページ"></a><br><br>上画面のようなプログラムを作りたいと考えています。<br><br>動きは、<br>１，パネルを動かす<br>２，１を繰り返してパネルを完成させる<br>３，チャラリラリラリｒ…じゃなかった。謎解き完了！<br><br>もう少しこの動きを細かく考えてみると…<br><br><br>キャラが歩いてきてパネルにぶつかる。<br>判定基準<br>IF ぶつかっているか？{<br>  何秒間ぶつかっているかを調べる(）<br>　IF １０秒以上<br>　　パネルを一マス前へ<br><br>　ELSE １０秒以下<br>　　そのまま<br>}<br><br>う～ん。こんな感じだろうか…<br>で、くっつけたパネルが正しいのかどうかを調べるには…<br><br><a href="http://stat.ameba.jp/user_images/04/20/10118324689.jpg"><img border="0" src="https://stat.ameba.jp/user_images/04/20/10118324689_s.jpg" alt="自由帳：Cページ"></a><br><br>上画面のように、<br>マップ位置と、パネル画像に数値を持たせて、指定した位置に来ているのかをチェック。<br>それが全て一致していることを確認したら、初めて謎解き音が鳴る。<br><br>そして魔王降臨！<br><br>こんな感じか。<br>ふぅ。こうやって見ると、普段何気なくやってるゲームが凄いものに見えてくるよ。<br>
]]>
</description>
<link>https://ameblo.jp/shaold/entry-10175943359.html</link>
<pubDate>Tue, 09 Dec 2008 23:31:14 +0900</pubDate>
</item>
<item>
<title>設計</title>
<description>
<![CDATA[ 長い事、プログラムを書く前に設計を行うというのはどういうことか分からなかった。<br>いくら設計が必要だといわれても…だ。<br><br>だが、あるときその意味に気づいた。<br>それは……<br><br>設計とは、<br><br><font size="3" style="font-weight: bold;">処理を細分化し、複数の関数に分けたとき、<br>それをどう組み合わせて、一つのソフトウェアを作るのか？<br></font><br>を考えるときに初めて必要になるものだということだ。<br><br>…ちなみに、この答えで正解かどうかは分からない(爆<br>
]]>
</description>
<link>https://ameblo.jp/shaold/entry-10171721644.html</link>
<pubDate>Sun, 30 Nov 2008 17:54:01 +0900</pubDate>
</item>
<item>
<title>小屋を建ててみた！</title>
<description>
<![CDATA[ <p><br><a href="http://stat.ameba.jp/user_images/97/6d/10080391684.jpg" target="_blank"><img src="https://stat.ameba.jp/user_images/97/6d/10080391684_s.jpg" border="0"></a> <br></p><p>とりあえず小屋が完成しましたｗ</p><p>屋根の作り方で散々悩みましたが無事完成です。</p><br><p>やり方としては、四角い画像（屋根）を縦に２つ並べて自由変形。</p><br><p><strong><font color="#000088">int DrawModiGraph( int x1, int y1, int x2, int y2,<br>　　　　　　　　　　int x3, int y3, int x4, int y4,<br>　　　　　　　　　 int GrHandle , int TransFlag );</font></strong><br></p><p>で、上図のように平行四辺形にして完成！</p><br><p>この変形が大変でした。</p><p>なんせ数学の出来ない上に、左右の区別ができないプログラマなもんで、</p><p>逐一、この位置はどっちだ？</p><p>とか、２次関数の教科書引っ張り出してｘが横で？ええとｙが縦？？</p><p>とか言いながらあーでもないこーでもないと必死で計算していたわけです。</p><br><p>そしてやっとこさ。</p><p>プログラムはもうちっと改良せにゃならんので今回は省きます。</p>
]]>
</description>
<link>https://ameblo.jp/shaold/entry-10121185059.html</link>
<pubDate>Tue, 29 Jul 2008 00:13:30 +0900</pubDate>
</item>
<item>
<title>それっぽくなってきた</title>
<description>
<![CDATA[ <p><a href="http://stat.ameba.jp/user_images/7f/0d/10079605782.jpg" target="_blank"><img src="https://stat.ameba.jp/user_images/7f/0d/10079605782_s.jpg" border="0"></a> <br></p><p>段々ゲーム画面<strike>だけ</strike>それっぽくなってきました（笑</p><p>無論動かすことも可能です。</p><br><br><p>まとめ：全ソース</p><br><p><a href="http://members3.jcom.home.ne.jp/strolling/zukai/grm.html" target="_blank">http://members3.jcom.home.ne.jp/strolling/zukai/grm.html</a> </p>
]]>
</description>
<link>https://ameblo.jp/shaold/entry-10120106386.html</link>
<pubDate>Fri, 25 Jul 2008 23:16:03 +0900</pubDate>
</item>
<item>
<title>キャラを動かしてみた</title>
<description>
<![CDATA[ <p><a href="http://stat.ameba.jp/user_images/0b/65/10078585757.jpg" target="_blank"><img height="172" src="https://stat.ameba.jp/user_images/0b/65/10078585757_s.jpg" width="220" border="0"></a> <br></p><p>今回は、構造体とポインタを使用しております。</p><p>えーちなみに、描画されている線のようなものは、</p><p><strike>自作で作った迷路ｄ</strike>動かした時に消去されずに残ったメイの起動です。</p><br><p>ちなみにメイってのはついさっき即効で思いついたキャラの名前なのは内緒の方向でお願いしますねｗ（ぇ</p><br><br><p><font color="#008000">//構造体 zは座標のz</font><br>struct z{</p><p>　　　　int x;<br>　　　　int y;</p><p>}chara,*ch;</p><br><p>char KeyBuf[ 256 ] ;<br>int chara1[11];<br><br>int gra;<br>int i,j;</p><p>ch = &amp;chara; 　<font color="#008000">//charaのアドレスをポインタchへ<br></font>ch -&gt; x = 60;<br>ch -&gt; y = 60;<br></p><br><p>SetDrawScreen( DX_SCREEN_BACK ) ; <font color="#008000">//描画先を裏画面に設定<br></font>LoadDivGraph( "img/kyara2.bmp" , 12 , 3 , 4 , 32 , 32 , chara1 ) ;<br><br><br>while(!CheckHitKey( KEY_INPUT_ESCAPE )){<br>GetHitKeyStateAll( KeyBuf ) ; 　　　　　　<font color="#008000">// すべてのキーの状態を得る<br></font><br>if( KeyBuf[ KEY_INPUT_LEFT ] == 1 ){<br>　　　ch -&gt; x--;<br>　　　i=10;<br>}<br><br>if( KeyBuf[ KEY_INPUT_UP ] == 1 ){<br>　　　ch -&gt; y--;<br>　　　i=1;<br>}</p><p>if( KeyBuf[ KEY_INPUT_RIGHT ] == 1 ){<br>　　　ch -&gt; x++;<br>　　　i=4;<br>}</p><p>if( KeyBuf[ KEY_INPUT_DOWN ] == 1 ){<br>　　　ch -&gt; y++;<br>　　　i=7;<br>}</p><br><p>DrawGraph( ch -&gt; x , ch -&gt; y , chara1[i] , TRUE ) ; <font color="#008000">//画像を描画<br></font>ScreenFlip();</p><br><p>}<br></p><p>※　<font color="#0000ff">-&gt;</font>　のマークはアローダイアグラムといい、ポインタが構造体のメンバ（x，y）へアクセスする方法です。</p>
]]>
</description>
<link>https://ameblo.jp/shaold/entry-10118548934.html</link>
<pubDate>Mon, 21 Jul 2008 15:40:44 +0900</pubDate>
</item>
<item>
<title>背景を入れてみた</title>
<description>
<![CDATA[ <p>この画像を敷き詰めて、</p><p><br><a href="http://stat.ameba.jp/user_images/76/b7/10073615519.jpg" target="_blank"><img height="71" src="https://stat.ameba.jp/user_images/76/b7/10073615519_s.jpg" width="71" border="0"></a> <br></p><br><p>こんな風に作ってみました。</p><p><br><a href="http://stat.ameba.jp/user_images/fe/b5/10073615284.jpg" target="_blank"><img height="172" src="https://stat.ameba.jp/user_images/fe/b5/10073615284_s.jpg" width="220" border="0"></a> </p><p><br></p><p>ソースは、</p><br><p>#define MAP_SIZE 71 <font color="#008000">// マップチップ一つの画像サイズ<br></font>#define MAP_WIDTH 11 <font color="#008000">// マップの幅<br></font>#define MAP_HEIGHT 9 <font color="#008000">// マップの縦長さ</font></p><br><p><font color="#008000">// マップのデータ<br></font>int MapData[ MAP_HEIGHT ][ MAP_WIDTH ] =<br>{<br>　　{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,<br>　　{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,<br>　　{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,<br>　　{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,<br>　　{ 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 } ,<br>　　{ 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 } ,<br>　　{ 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 } ,<br>　　{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,<br>　　{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }<br>} ;</p><br><p>int gra;<br>int i,j;</p><br><p>gra = LoadGraph("img/green1.bmp");</p><br><p><font color="#008000">// マップを描く<br></font>for( i = 0 ; i &lt; MAP_HEIGHT ; i ++ ){<br>　　　 for( j = 0 ; j &lt; MAP_WIDTH ; j ++ ){</p><br><p>　　　　　if( MapData[ i ][ j ] == <font color="#0000ff">0</font> ){　　<font color="#008000">//　MapData[ MAP_HEIGHT ][ MAP_WIDTH ] が　０なら画像を描画</font></p><p>　　　　　　DrawGraph( i * MAP_SIZE , j * MAP_SIZE , gra , FALSE ) ;<br>　　　　　}<br>　　　}<br>}</p><br><p>です。</p><p>ちなみに、<br>DrawGraph( i * MAP_SIZE , j * MAP_SIZE , gra , FALSE )の、</p><br><p>i * MAP_SIZE　と　j * MAP_SIZE　は、</p><p>マップを描く位置を表しています。 </p>
]]>
</description>
<link>https://ameblo.jp/shaold/entry-10110942386.html</link>
<pubDate>Sun, 29 Jun 2008 00:13:29 +0900</pubDate>
</item>
<item>
<title>一枚の画像を分割表示してみた</title>
<description>
<![CDATA[ <p><a href="http://stat.ameba.jp/user_images/93/36/10073398357.jpg" target="_blank"><img src="https://stat.ameba.jp/user_images/93/36/10073398357_s.jpg" border="0"></a> <a href="http://stat.ameba.jp/user_images/8a/3e/10073391294.jpg" target="_blank"></a></p><br><p>見ての通り…じゃないかもしれませんが、画像を分割してみました。</p><p>ついでに画像も変更です。</p><br><p>int kyara1[11];</p><br><p>LoadDivGraph( "kyara2.bmp" , 12 , 3 , 4 , 32 , 32 , kyara1 ) ;</p><p><br>DrawGraph( 30 ,50 , kyara1[7] , TRUE ) ;<br>DrawGraph( 100 ,50 , kyara1[4] , TRUE ) ;<br>DrawGraph( 170 ,50 , kyara1[2] , TRUE ) ;<br>DrawGraph( 240 ,50 , kyara1[10] , TRUE ) ;</p><br><p>ちなみにこれは、下の画像を、配列で分け、格納してから表示しています。</p><p><br><a href="http://stat.ameba.jp/user_images/25/ab/10073399335.jpg" target="_blank"><img height="128" src="https://stat.ameba.jp/user_images/25/ab/10073399335.jpg" width="95" border="0"></a> <br></p><p>左上から</p><p>0　，1　，2</p><p>3　，4　，5</p><p>6　，7　，8</p><p>9　，10，11<br></p><p>の順です。</p><br><p>とりあえず、基礎的な学習でもしながら、ゲームのアイディアを練っていこうかと思います。<br></p>
]]>
</description>
<link>https://ameblo.jp/shaold/entry-10110624116.html</link>
<pubDate>Fri, 27 Jun 2008 23:29:27 +0900</pubDate>
</item>
</channel>
</rss>
