<?xml version="1.0" encoding="UTF-8" ?>
<feed xml:lang="ja" xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0">
  <title type="text">げぇむのページ</title>
  <subtitle type="html">ゲームの原作や設定の公開、普段やっているゲームの日記です。</subtitle>
  <link rel="self" type="application/atom+xml" href="https://gamenopage.gg-blog.com/atom"/>
  <link rel="alternate" type="text/html" href="https://gamenopage.gg-blog.com/"/>
  <updated>2013-02-10T21:56:48+09:00</updated>
  <author><name>gamerx</name></author>
  <generator uri="//www.ninja.co.jp/blog/" version="0.9">忍者ブログ</generator>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
  <entry>
    <id>gamenopage.gg-blog.com://entry/35</id>
    <link rel="alternate" type="text/html" href="https://gamenopage.gg-blog.com/%E5%8E%9F%E4%BD%9C/%E7%84%A1%E9%99%90%E6%BC%82%E6%B5%81%E3%81%AE%E9%9B%B6" />
    <published>2014-02-08T13:44:02+09:00</published> 
    <updated>2014-02-08T13:44:02+09:00</updated> 
    <category term="原作" label="原作" />
    <title>無限漂流の零</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[詳細は原作の部屋を見てください。 <a href="http://gamenopage.gg-blog.com/%E5%8E%9F%E4%BD%9C/%E5%8E%9F%E4%BD%9C%E3%81%AE%E9%83%A8%E5%B1%8B" title="原作の部屋" target="_blank">原作の部屋</a> <br />
<br />
無限漂流の零<br />
<br />
主人公は、わけもわからずに異世界に放り出される。<br />
前世界の記憶はある場合もあるし、ない場合もある。<br />
一人称は俺。<br />
その世界によって種族は変わる。獣人、獣、魚、ロボット、その他色々。<br />
名前も世界によって変わる。<br />
セーブポイントはいつも似たシンボル。<br />
対存在たる敵役がいる。<br />
敵役も記憶は受け継いでいるが、主人公と共有しているわけではないので辻褄が合わないことがある。<br />
別の世界の記憶の欠片のようなもので、別の世界の後日談的なものが見られる。<br />
<br />
<br />
死んでしまった場合は、時間を引き継ぎリスポーンされる場合と、時間が戻る場合がある。<br />
目標を達成すると次の世界に移行する。<br />
その世界の目標は不明だが、何をしていても最終的に方向性がそっちの方に向かう。<br />
次の世界に持ち越せるものは、服など簡単なものだけ。最強装備は没収または無力化。<br />
<br />
<br />
<br />
推奨ジャンル<br />
どんなジャンルでも柔軟に対応可能。<br />
<br />
<br />
無限漂流の零<br />
<br />
致命の一撃が魔王に炸裂した。<br />
<br />
魔王「ぐぉおおおお！」<br />
魔王「私を倒しても無駄だ！私はいつか蘇る」<br />
魔王「その頃に貴様は生きていまい。フフフフ、グフッ・・・」<br />
<br />
俺「よく聞くセリフだな・・・」<br />
俺「このセリフも何回目だろう」<br />
<br />
俺「３６万回だったか・・・いや、１万４千回か」<br />
俺「まあ、どうでもいいか」<br />
<br />
目的を達成した実感がある。<br />
いつも通りなら、徐々に体が透明になって次の世界に行くはずだ。<br />
<br />
完全に透明になる時間は、ある程度コントロールはできる。<br />
<br />
今回は仲間もいないから気楽だな。<br />
<br />
回想<br />
仲間A「おい！お、お前、体が透けてるぞ」<br />
俺「ああ。俺、目標達成すると体が透明になって違う世界に行っちゃう体質なんだ」<br />
<br />
仲間B「ちょ、あれ冗談じゃなかったのか？」<br />
仲間C「行っちゃやだよ～」<br />
<br />
俺「悪いな。どうしようもないんだ」<br />
<br />
回想終わり。<br />
<br />
<br />
毎回説明するのは、すごく面倒だ。<br />
<br />
俺「最強装備を城の宝箱にでも入れといてやるか」<br />
<br />
次の世界に持って行ってもどうせ使えないだろうし。<br />
<br />
俺「折角だから、赤い箱を選ぶぜ」<br />
俺「これでよし」<br />
<br />
宴を早々に抜け出して、宝箱に装備を入れた。<br />
城では賑やかな祝宴が夜遅くまで行われていた。<br />
<br />
俺「さて、行くか」<br />
<br />
俺は精神を集中し、透明になる時間を一気に早めた。<br />
体が完全に透明になると同時に、光のトンネルのような風景が見える。<br />
<br />
万華鏡みたいというか、タイムトンネルみたいというか、そんな風景だ。<br />
<br />
いつから、この生活をしているのか自分でもわからない。<br />
今度は、どんなことをさせられるのだろうか。<br />
<br />
毎回違う目標。<br />
毎回違う世界。<br />
<br />
魔王を倒す目標もあれば、ランダム生成ダンジョンの１００回に到達するとか。<br />
<br />
なぜこうなったのかは知らない。<br />
単に忘れているだけかも知れないが。<br />
<br />
そして出口が見えた。<br />
<br />
辺りは一面、白かった。<br />
<br />
俺「雪国？」<br />
いや、白い砂浜だ。<br />
<br />
俺「とりあえず、街を探すか」<br />
<br />
<br />
続く？<br />
<br />
シナリオ　設定　小説　原作]]> 
    </content>
    <author>
            <name>gamerx</name>
        </author>
  </entry>
  <entry>
    <id>gamenopage.gg-blog.com://entry/34</id>
    <link rel="alternate" type="text/html" href="https://gamenopage.gg-blog.com/test/%E3%82%B2%E3%83%BC%E3%83%A05" />
    <published>2013-11-15T16:29:17+09:00</published> 
    <updated>2013-11-15T16:29:17+09:00</updated> 
    <category term="test" label="test" />
    <title>ゲーム5</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<br /><br /><a href="https://gamenopage.gg-blog.com/test/%E3%82%B2%E3%83%BC%E3%83%A05" target="_blank">つづきはこちら</a>]]> 
    </content>
    <author>
            <name>gamerx</name>
        </author>
  </entry>
  <entry>
    <id>gamenopage.gg-blog.com://entry/33</id>
    <link rel="alternate" type="text/html" href="https://gamenopage.gg-blog.com/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E5%86%86%E3%82%92%E6%8F%8F%E3%81%8F%E3%80%90html5%20javascript%20%E3%82%B2%E3%83%BC%E3%83%A0%E4%BD%9C%E6%88%90%20%E8%AC%9B%E5%BA%A7%E3%80%915" />
    <published>2013-11-15T16:28:07+09:00</published> 
    <updated>2013-11-15T16:28:07+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>円を描く【HTML5 JavaScript ゲーム作成 講座】5</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[Lesson4でキーボード入力で操作できるようにした。今回は円で敵弾を表示する。 <br />
<br />
今日の流れ <br />
1.Lesson4をフォルダごとコピー後名前の変更をしてLesson5とする。<br />
2.canvas.jsを変更する。 <br />
3.index.htmlを開く<br />
<br />
1.いつもどおりコピー<br />
<br />
2.canvas.jsを変更する。 <br />
内容<br />
<br />
var context;<br />
var width = 300;//画面幅<br />
var height = 300;//画面高<br />
var keys = new Array();//キーの状態<br />
var char_posx;//自キャラのx座標<br />
var char_posy;//自キャラのy座標<br />
var char_x;//自キャラの幅<br />
var char_y;//自キャラの高<br />
<br />
<span style="color: #ff0000;">var enemy_shot_posx;//敵弾位置</span><br />
<span style="color: #ff0000;">var enemy_shot_posy;//敵弾位置</span><br />
<br />
window.onload = function() <br />
{<br />
&nbsp;&nbsp;&nbsp; var canvas1 = document.getElementById('CV1');//指定したidの要素を取得<br />
<br />
&nbsp;&nbsp;&nbsp; canvas1.height = 300;//画面の高さ<br />
&nbsp;&nbsp;&nbsp; canvas1.width = 300;//画面の幅<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; context = canvas1.getContext('2d');//描画メソッドを使用するための準備<br />
<br />
&nbsp;&nbsp;&nbsp; context.strokeStyle = "rgb(0, 0, 0)";<br />
&nbsp;&nbsp;&nbsp; context.strokeRect(0,0,height,width);//枠を描画<br />
<br />
&nbsp;&nbsp;&nbsp; char_x = 30;<br />
&nbsp;&nbsp;&nbsp; char_y = 30;<br />
<br />
&nbsp;&nbsp;&nbsp; char_posx = 135;//自キャラの初期位置<br />
&nbsp;&nbsp;&nbsp; char_posy = 270;<br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; enemy_shot_posx = 135;//敵弾の初期位置</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; enemy_shot_posy = -10;</span><br />
<br />
&nbsp;&nbsp;&nbsp; draw();<br />
}<br />
<br />
function draw() <br />
{<br />
&nbsp;&nbsp;&nbsp; if(keys[0] == true)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char_posx -= 5;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; if(keys[1] == true)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char_posy -= 5;<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; if(keys[2] == true)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char_posx += 5;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; if(keys[3] == true)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char_posy += 5;<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; //画面からキャラを出さない</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; if(char_posx &lt; 0)</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; {</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char_posx = 0;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; }</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; else if(char_posx &gt; width - char_y)</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; {</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char_posx = width - char_y;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; }</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; if(char_posy &lt; 0)</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; {</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char_posy = 0;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; }</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; else if(char_posy &gt; height - char_y)</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; {</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char_posy = height - char_y;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; }</span><br />
<br />
<br />
&nbsp;&nbsp;&nbsp; context.fillStyle = "rgb(255, 255, 255)";//色指定<br />
&nbsp;&nbsp;&nbsp; context.fillRect(0,0,300,300);//古い表示を消去するために上書きする:<br />
<br />
&nbsp;&nbsp;&nbsp; context.strokeStyle = "rgb(0, 0, 0)";<br />
&nbsp;&nbsp;&nbsp; context.strokeRect(0,0,300,300);//枠を描画<br />
<br />
&nbsp;&nbsp;&nbsp; context.fillStyle = "rgb(0, 0, 0)";<br />
<br />
&nbsp;&nbsp;&nbsp;<span style="color: #ff0000;"> enemy_shot_posy += 5;//敵弾を動かす</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; if(enemy_shot_posy &gt; height + 10)//敵弾が画面を超えたら初期位置に戻す</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; {</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; enemy_shot_posy = -10;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; }</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp; context.beginPath();//描画準備</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp; context.arc(enemy_shot_posx, enemy_shot_posy, 10, 0, 360 * Math.PI / 180, true);//円を描画</span><br />
<span style="color: #ff0000;">&nbsp; &nbsp;&nbsp;&nbsp; context.fill();</span><br />
<br />
&nbsp;&nbsp;&nbsp; context.fillRect(char_posx,char_posy,char_x,char_y);//四角を描画:<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; setTimeout(draw, 20);//指定時間毎に呼び出す<br />
}<br />
<br />
document.onkeypress = function(e) <br />
{<br />
&nbsp;&nbsp;&nbsp; e.preventDefault();<br />
}<br />
<br />
document.onkeydown = function(e) <br />
{ <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; switch(e.keyCode)<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 37:<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[0] = true;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 38:<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[1] = true;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 39:<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[2] = true;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 40:<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[3] = true;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
}<br />
<br />
<br />
document.onkeyup = function(e) <br />
{ <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; switch(e.keyCode)<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 37:<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[0] = false;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 38:<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[1] = false;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 39:<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[2] = false;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 40:<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[3] = false;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
<br />
}<br />
<br />
<span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;"><br />
</span></span></span><br />
<span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;">3.index.htmlを開く</span><br />
<br />
<span style="color: #000000;">成功していれば<a href="http://gamenopage.gg-blog.com/Entry/34/" title="" target="_blank">この</a><a href="http://gamenopage.gg-blog.com/Entry/30/" title="" target="_blank"><span style="color: #000000;"></span></a>ようになっているはず。<br />
画面からキャラが出ると都合が悪いので、画面端に行ったらそれ以上は動かないように調整した。<br />
敵弾を追加。<br />
まだ当たり判定などはない。<br />
四角を描画するときは必要はなかったが、円を描く時などは</span></span></span><br />
<span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #ff0000;">beginPath()<span style="color: #000000;">というのが必要になるので注意。</span></span></span></span> </span>]]> 
    </content>
    <author>
            <name>gamerx</name>
        </author>
  </entry>
  <entry>
    <id>gamenopage.gg-blog.com://entry/31</id>
    <link rel="alternate" type="text/html" href="https://gamenopage.gg-blog.com/%E3%83%80%E3%83%BC%E3%82%AF%E3%82%BD%E3%82%A6%E3%83%AB%EF%BC%92/%E3%83%80%E3%83%BC%E3%82%AF%E3%82%BD%E3%82%A6%E3%83%AB%EF%BC%92%20%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%86%E3%82%B9%E3%83%88%EF%BC%94%E5%9B%9E%E7%9B%AE" />
    <published>2013-11-11T21:48:41+09:00</published> 
    <updated>2013-11-11T21:48:41+09:00</updated> 
    <category term="ダークソウル２" label="ダークソウル２" />
    <title>ダークソウル２ ネットワークテスト４回目</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[2013年11月10日に行われたダークソウル２ ネットワークテスト４回目の感想。<br />
<br />
白サインが拾えるようになった。 <br />
侵入されるようになった。 <br />
前回のボスとは他に、もう一体ボスが出た。<br />
<br />
後は基本的に前回のテストと変わらない。 相変わらず、テストではレベルが上げられない。<br />
<br />
ソウルは溜まる。<br />
商人の売っているものは、必要なものは買ったので買うものがない。 <br />
<br />
バックスタブが入りにくくなっているような気がするのだけど、気のせいかな。 <br />
バックスタブ中、無敵ってなんとかならないかな。<br />
無敵っていうのも変な気がする。<br />
<br />
途中で出てくる、デカブツの攻撃力がおかしい。 <br />
強靭が高いのかなかなか怯まないし。<br />
<br />
狭い道では、白さんが邪魔。 後ろ下がれない。<br />
バックダッシュとかで下がれたりするのだろうか？<br />
<br />
何が出てくるかわからない、ワクワク感は楽しい。<br />
しかし、ああいう鬱陶しいのは要らない。<br />
<br />
ボスは何とか倒した。骨だらけ・・・。 <br />
なんだかんだ言って全体的に楽しめた。]]> 
    </content>
    <author>
            <name>gamerx</name>
        </author>
  </entry>
  <entry>
    <id>gamenopage.gg-blog.com://entry/30</id>
    <link rel="alternate" type="text/html" href="https://gamenopage.gg-blog.com/test/%E3%82%B2%E3%83%BC%E3%83%A04" />
    <published>2013-11-08T23:45:22+09:00</published> 
    <updated>2013-11-08T23:45:22+09:00</updated> 
    <category term="test" label="test" />
    <title>ゲーム4</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<br /><br /><a href="https://gamenopage.gg-blog.com/test/%E3%82%B2%E3%83%BC%E3%83%A04" target="_blank">つづきはこちら</a>]]> 
    </content>
    <author>
            <name>gamerx</name>
        </author>
  </entry>
  <entry>
    <id>gamenopage.gg-blog.com://entry/29</id>
    <link rel="alternate" type="text/html" href="https://gamenopage.gg-blog.com/%E3%81%A8%E3%82%8A%E3%81%82%E3%81%88%E3%81%9A%E3%82%B2%E3%83%BC%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86/%E3%82%AD%E3%83%BC%E6%93%8D%E4%BD%9C%E3%80%90html5%20javascript%20%E3%82%B2%E3%83%BC%E3%83%A0%E4%BD%9C%E6%88%90%20%E8%AC%9B%E5%BA%A7%E3%80%914" />
    <published>2013-11-08T23:44:09+09:00</published> 
    <updated>2013-11-08T23:44:09+09:00</updated> 
    <category term="とりあえずゲームを作ろう" label="とりあえずゲームを作ろう" />
    <title>キー操作【HTML5 JavaScript ゲーム作成 講座】4</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[Lesson3で自キャラを表示させた。今回はキーボード入力で操作できるようにする。 <br />
<br />
今日の流れ <br />
1.Lesson3をフォルダごとコピー後名前の変更をしてLesson4とする。<br />
2.canvas.jsを変更する。 <br />
3.index.htmlを開く<br />
<br />
1.いつもどおりコピー<br />
<br />
2.canvas.jsを変更する。 <br />
内容<br />
<br />
<span style="color: #ff0000;">var context;</span><br />
<span style="color: #ff0000;">var keys = new Array();//キーの状態</span><br />
<span style="color: #ff0000;">var char_posx;//自キャラのx座標</span><br />
<span style="color: #ff0000;">var char_posy;//自キャラのy座標</span><br />
<span style="color: #ff0000;">var char_x;//自キャラの幅</span><br />
<span style="color: #ff0000;">var char_y;//自キャラの高さ</span><br />
<br />
window.onload = function() <br />
{<br />
&nbsp;&nbsp;&nbsp; var canvas1 = document.getElementById('CV1');//指定したidの要素を取得<br />
<br />
&nbsp;&nbsp;&nbsp; canvas1.height = 300;//画面の高さ<br />
&nbsp;&nbsp;&nbsp; canvas1.width = 300;//画面の幅<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; context = canvas1.getContext('2d');//描画メソッドを使用するための準備<br />
<br />
&nbsp;&nbsp;&nbsp; context.strokeStyle = "rgb(0, 0, 0)";<br />
&nbsp;&nbsp;&nbsp; context.strokeRect(0,0,300,300);//枠を描画<br />
<br />
&nbsp;&nbsp;&nbsp; char_x = 30;<br />
&nbsp;&nbsp;&nbsp; char_y = 30;<br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; char_posx = 135;//自キャラの初期位置</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; char_posy = 270;//自キャラの初期位置</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; draw();</span><br />
}<br />
<br />
<span style="color: #ff0000;">function draw() </span><br />
<span style="color: #ff0000;">{</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; if(keys[0] == true)</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; {</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char_posx -= 5;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; }</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; </span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; if(keys[1] == true)</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; {</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char_posy -= 5;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; }</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; if(keys[2] == true)</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; {</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char_posx += 5;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; }</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; </span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; if(keys[3] == true)</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; {</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char_posy += 5;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; }</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; context.fillStyle = "rgb(255, 255, 255)";</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; context.fillRect(0,0,300,300);//古い表示を消去するために上書きする:</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; context.strokeStyle = "rgb(0, 0, 0)";</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; context.strokeRect(0,0,300,300);//枠を描画</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; context.fillStyle = "rgb(0, 0, 0)";</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; context.fillRect(char_posx,char_posy,char_x,char_y);//四角を描画:</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; </span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; setTimeout(draw, 20);//指定時間毎に呼び出す</span><br />
<span style="color: #ff0000;">}</span><br />
<br />
<span style="color: #ff0000;">document.onkeydown = function(e) </span><br />
<span style="color: #ff0000;">{ </span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; switch(e.keyCode)</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 37:</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[0] = true;&nbsp;&nbsp;&nbsp; </span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 38:</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[1] = true;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 39:</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[2] = true;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 40:</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[3] = true;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span><br />
<span style="color: #ff0000;">}</span><br />
<br />
<br />
<span style="color: #ff0000;">document.onkeyup = function(e) </span><br />
<span style="color: #ff0000;">{ </span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; switch(e.keyCode)</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 37:</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[0] = false;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 38:</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[1] = false;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 39:</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[2] = false;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case 40:</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keys[3] = false;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span><br />
<br />
<span style="color: #ff0000;">}</span><br />
<br />
<br />
3.index.htmlを開く<br />
<br />
成功していれば<a href="http://gamenopage.gg-blog.com/Entry/30/" title="" target="_blank">この</a>ようになっているはず。<br />
<span style="color: #000000;"><br />
変数は関数の外で宣言することで他の関数でも使用することができる。<br />
その関数の中で宣言した変数は、基本的にその関数の中でしか使用できない。<br />
あまり多用すると不具合の元なので最少限がいいと思う。<br />
<br />
drawという関数を作成し、そちらで描画などの操作をするように変更。<br />
また、</span><span style="color: #000000;">setTimeoutという関数で、指定した時間ごとにdrawが呼び出される。<br />
</span><br />
<span style="color: #ff0000;"><span style="color: #000000;">document.onkeydown = function(e)はキーを押した時に呼び出され、eという変数を渡す。<br />
<br />
switchはその変数の内容によって処理を分けたい時に使う。<br />
case 37: とはe.keyCodeが37の時に以下の処理を行うという意味である。<br />
この時に使うのはコロンであり、セミコロンではないので注意。<br />
キーコードはブラウザによって違うので注意。<br />
</span></span><span style="color: #000000;"><br />
var keys = new Array();は変数 keysは配列であることを示す。<br />
配列とは変数の集まりのようなものである。<br />
keys[0] = 19;<br />
keys[1] = 7;<br />
のように扱う。<br />
<br />
true;は論理式に使う。真ならtrue、偽ならfalseである。onとoffのような意味。<br />
<br />
break;はcaseの処理を終了してswitchの外に出すことを意味する。<br />
<br />
</span><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;">document.onkeyup = function(e) はキーを離した時に呼び出される。<br />
<br />
なぜキー押した時と離した時の処理が必要かというと、基本的にキーは一個ずつしか処理できないからだ。しかし、ゲームには同時押しという処理が必要になるので、何らかの処理をしなければならない。<br />
今回の処理は、キーを押したら、trueを入れ、キーを離せば、falseが入るようにしている。<br />
そしてdraw()が呼び出される毎に、trueと判定されたキーのみ処理するようにしている。<br />
</span><br />
<span style="color: #000000;">&rarr;と&larr;を同時に押して見れば分かるが、停止しているように見える。しかし内部的にはｘ座標がマイナスされた後にプラスされ、移動量は差し引き０になっている。<br />
<br />
</span><br />
<br />
</span> </span>]]> 
    </content>
    <author>
            <name>gamerx</name>
        </author>
  </entry>
  <entry>
    <id>gamenopage.gg-blog.com://entry/28</id>
    <link rel="alternate" type="text/html" href="https://gamenopage.gg-blog.com/test/%E3%82%B2%E3%83%BC%E3%83%A03" />
    <published>2013-11-07T01:08:49+09:00</published> 
    <updated>2013-11-07T01:08:49+09:00</updated> 
    <category term="test" label="test" />
    <title>ゲーム3</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<br /><br /><a href="https://gamenopage.gg-blog.com/test/%E3%82%B2%E3%83%BC%E3%83%A03" target="_blank">つづきはこちら</a>]]> 
    </content>
    <author>
            <name>gamerx</name>
        </author>
  </entry>
  <entry>
    <id>gamenopage.gg-blog.com://entry/27</id>
    <link rel="alternate" type="text/html" href="https://gamenopage.gg-blog.com/%E3%81%A8%E3%82%8A%E3%81%82%E3%81%88%E3%81%9A%E3%82%B2%E3%83%BC%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86/%E6%9E%A0%E3%81%A8%E5%A1%97%E3%82%8A%E3%81%A4%E3%81%B6%E3%81%97" />
    <published>2013-11-07T00:54:02+09:00</published> 
    <updated>2013-11-07T00:54:02+09:00</updated> 
    <category term="とりあえずゲームを作ろう" label="とりあえずゲームを作ろう" />
    <title>枠と塗りつぶし【HTML5 JavaScript ゲーム作成 講座】3</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[Lesson2で画面サイズの変更方法を示した。 しかし、実はfillRectは塗りつぶすものであるため、後に用いると既に描画したものを上書きしてしまう。<br />
というわけで、枠だけ描画する方法と自キャラらしきものを作る。 <br />
<br />
今日の流れ <br />
1.Lesson2をフォルダごとコピー後名前の変更をしてLesson3とする。<br />
2.canvas.jsを変更する。 <br />
3.index.htmlを開く<br />
<br />
1.いつもどおりコピー<br />
<br />
2.canvas.jsを変更する。 <br />
内容<br />
<br />
window.onload = function() <br />
{<br />
&nbsp;&nbsp;&nbsp; var canvas1 = document.getElementById('CV1');//指定したidの要素を取得<br />
<br />
&nbsp;&nbsp;&nbsp; canvas1.height = 300;//画面の高さ<br />
&nbsp;&nbsp;&nbsp; canvas1.width = 300;//画面の幅<br />
&nbsp;&nbsp;&nbsp; <br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; var context = canvas1.getContext('2d');//描画メソッドを使用するための準備</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; context.strokeStyle = "rgb(0, 0, 0)";//枠の色を指定する</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; context.strokeRect(0,0,300,300);//枠を描画</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; var char_x = 30;//自キャラ幅</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; var char_y = 30;//自キャラ高さ</span><br />
<br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; context.fillStyle = "rgb(0, 0, 0)";//四角の色を指定する</span><br />
<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp; context.fillRect(135,270,char_x,char_y);//自キャラを描画:</span><br />
}<br />
<br />
3.index.htmlを開く<br />
成功していればの<a href="http://gamenopage.gg-blog.com/Entry/28/" target="_blank">ゲーム3</a>ように黒枠に黒の自キャラが表示されているはず。<br />
自キャラと言っても、ただの四角だが。<br />
<span style="color: #000000;">strokeRectは枠を描画する<br />
fillRectは塗りつぶした四角を描画する<br />
という違いがある。<br />
<br />
</span><br />
<span style="color: #000000;"><a title="" href="http://gamenopage.gg-blog.com/Entry/29/" target="_self">キー操作【HTML5 JavaScript ゲーム作成 講座】4</a><br />
<br />
</span>]]> 
    </content>
    <author>
            <name>gamerx</name>
        </author>
  </entry>
  <entry>
    <id>gamenopage.gg-blog.com://entry/26</id>
    <link rel="alternate" type="text/html" href="https://gamenopage.gg-blog.com/test/%E3%82%B2%E3%83%BC%E3%83%A02" />
    <published>2013-11-07T00:32:48+09:00</published> 
    <updated>2013-11-07T00:32:48+09:00</updated> 
    <category term="test" label="test" />
    <title>ゲーム2</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<br /><br /><a href="https://gamenopage.gg-blog.com/test/%E3%82%B2%E3%83%BC%E3%83%A02" target="_blank">つづきはこちら</a>]]> 
    </content>
    <author>
            <name>gamerx</name>
        </author>
  </entry>
  <entry>
    <id>gamenopage.gg-blog.com://entry/25</id>
    <link rel="alternate" type="text/html" href="https://gamenopage.gg-blog.com/test/20131103" />
    <published>2013-11-03T22:51:27+09:00</published> 
    <updated>2013-11-03T22:51:27+09:00</updated> 
    <category term="test" label="test" />
    <title>ゲーム1</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<br /><br /><a href="https://gamenopage.gg-blog.com/test/20131103" target="_blank">つづきはこちら</a>]]> 
    </content>
    <author>
            <name>gamerx</name>
        </author>
  </entry>
</feed>