<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel rdf:about="https://pinkabi.blog.shinobi.jp/RSS/100/">
    <title>PinCurve</title>
    <link>https://pinkabi.blog.shinobi.jp/</link>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="https://pinkabi.blog.shinobi.jp/RSS/" />
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
    <description>ゲームと工作と勉強と雑記のページ</description>
    <dc:language>ja</dc:language>
    <dc:date>2008-08-25T23:23:27+09:00</dc:date>
    <items>
    <rdf:Seq>
      <rdf:li rdf:resource="https://pinkabi.blog.shinobi.jp/%E3%81%A9%E3%81%86%E3%81%A7%E3%82%82%E3%81%84%E3%81%84%E3%81%93%E3%81%A8/%E7%84%A1%E9%A1%8C" />
      <rdf:li rdf:resource="https://pinkabi.blog.shinobi.jp/%E3%81%A9%E3%81%86%E3%81%A7%E3%82%82%E3%81%84%E3%81%84%E3%81%93%E3%81%A8/%EF%BD%88%EF%BD%94%EF%BD%8D%EF%BD%8C%E8%AC%8E" />
      <rdf:li rdf:resource="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A710-%E9%85%8D%E5%88%97%E5%A4%89%E6%95%B0" />
      <rdf:li rdf:resource="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A79-%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%A4%89%E6%95%B0%E3%81%A8%E3%83%9E%E3%82%A6%E3%82%B9%E5%85%A5%E5%8A%9B" />
      <rdf:li rdf:resource="https://pinkabi.blog.shinobi.jp/%E3%81%93%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/%E3%81%93%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" />
      <rdf:li rdf:resource="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A78-%E3%82%AD%E3%83%BC%E5%85%A5%E5%8A%9B%E3%81%A8%E6%9D%A1%E4%BB%B6%E5%88%A4%E6%96%AD" />
      <rdf:li rdf:resource="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A77-%E4%B9%B1%E6%95%B0" />
      <rdf:li rdf:resource="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A76-%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-2" />
      <rdf:li rdf:resource="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A75-%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-1" />
      <rdf:li rdf:resource="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A74-%E5%A4%89%E6%95%B0%E3%81%A8%E7%B9%B0%E3%82%8A%E8%BF%94%E3%81%97%E6%96%87-2" />
    </rdf:Seq>
    </items>
  </channel>

  <item rdf:about="https://pinkabi.blog.shinobi.jp/%E3%81%A9%E3%81%86%E3%81%A7%E3%82%82%E3%81%84%E3%81%84%E3%81%93%E3%81%A8/%E7%84%A1%E9%A1%8C">
    <link>https://pinkabi.blog.shinobi.jp/%E3%81%A9%E3%81%86%E3%81%A7%E3%82%82%E3%81%84%E3%81%84%E3%81%93%E3%81%A8/%E7%84%A1%E9%A1%8C</link>
    <title>無題</title>
    <description>
長い間、更新を休んでました。ごめんなさい。
まぁ、とりあえず忙しいです。
更新サボりのお詫びといっちゃなんですが、作りかけのゲームを公開しようと思います。
非常に単純なパズルゲームです。マウス入力です。
これ
まだ、ツメがあれなので、不快に思われる方がおられるかもしれません。
完成度...</description>
    <content:encoded><![CDATA[<p><br />
長い間、更新を休んでました。ごめんなさい。<br />
まぁ、とりあえず忙しいです。</p>
<p>更新サボりのお詫びといっちゃなんですが、作りかけのゲームを公開しようと思います。<br />
非常に単純なパズルゲームです。マウス入力です。<br />
<a href="http://pincurve.suki-ari.net/puzzle.lzh">これ</a><br />
まだ、ツメがあれなので、不快に思われる方がおられるかもしれません。<br />
完成度の低いゲームが大嫌い！と言う方はご遠慮ください。<br />
<br />
万が一、アドバイスをして頂ける方がおられましたら、メールでよろしくお願いします。<br />
すぐに対応するのは難しいかもしれませんが・・・</p>]]></content:encoded>
    <dc:subject>どうでもいいこと</dc:subject>
    <dc:date>2008-08-25T23:23:27+09:00</dc:date>
    <dc:creator>ぴんかび</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>ぴんかび</dc:rights>
  </item>
  <item rdf:about="https://pinkabi.blog.shinobi.jp/%E3%81%A9%E3%81%86%E3%81%A7%E3%82%82%E3%81%84%E3%81%84%E3%81%93%E3%81%A8/%EF%BD%88%EF%BD%94%EF%BD%8D%EF%BD%8C%E8%AC%8E">
    <link>https://pinkabi.blog.shinobi.jp/%E3%81%A9%E3%81%86%E3%81%A7%E3%82%82%E3%81%84%E3%81%84%E3%81%93%E3%81%A8/%EF%BD%88%EF%BD%94%EF%BD%8D%EF%BD%8C%E8%AC%8E</link>
    <title>ＨＴＭＬ謎</title>
    <description>
　今までのＨＳＰコンテンツをＨＴＭＬに纏めようとおもって早速取り掛かるのはいいのですが、なかなか難しい・・・

　メニューつくるのって、どうなんだろう？
　ホームページっていったら、やっぱり色々網状にリンクはるじゃないですか。そのときに、どのページにも同じメニューを出すにはインラインフレー...</description>
    <content:encoded><![CDATA[<br />
　今までのＨＳＰコンテンツをＨＴＭＬに纏めようとおもって早速取り掛かるのはいいのですが、なかなか難しい・・・<br />
<br />
　メニューつくるのって、どうなんだろう？<br />
　ホームページっていったら、やっぱり色々網状にリンクはるじゃないですか。そのときに、どのページにも同じメニューを出すにはインラインフレーム（？）とかいうのを使うんですかね？ちょっとやってるんですけど、ブラウザによって表示されるとか表示されないとか。実際良く分からない。<br />
<br />
　全く。ブラウザによっていろいろ表示のされ方が違うとかやめてほしいです。<br />
<br />
　]]></content:encoded>
    <dc:subject>どうでもいいこと</dc:subject>
    <dc:date>2008-07-21T22:56:57+09:00</dc:date>
    <dc:creator>ぴんかび</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>ぴんかび</dc:rights>
  </item>
  <item rdf:about="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A710-%E9%85%8D%E5%88%97%E5%A4%89%E6%95%B0">
    <link>https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A710-%E9%85%8D%E5%88%97%E5%A4%89%E6%95%B0</link>
    <title>HSP講座10-配列変数</title>
    <description>　
　今回は、変数は変数でもただの変数ではない配列変数を紹介したいと思います。とはいっても、全然難しいことではないので安心してください。

　例えば、シューティングゲームを作るとしましょう。当然、敵が動いて襲ってくるはずです。「敵が動く」ということは、1コマ1コマ敵の座標が変わっているというこ...</description>
    <content:encoded><![CDATA[<p>　<br />
　今回は、変数は変数でもただの変数ではない<strong>配列変数</strong>を紹介したいと思います。とはいっても、全然難しいことではないので安心してください。<br />
<br />
　例えば、シューティングゲームを作るとしましょう。当然、敵が動いて襲ってくるはずです。「敵が動く」ということは、1コマ1コマ敵の座標が変わっているということです。アニメーションの時にやったように、敵の座標を変数で管理して、1コマ1コマ値をちょっとずつ変えながら描画すれば出来そうです。ここで具体的に敵の座標を<br />
　tekix, tekiy<br />
という2つの変数で管理するとします。<br />
<br />
　そのシューティングゲームには1匹の敵しか出てこないなら上でいいでしょう。しかし恐らく、一般的なシューティングゲームには、敵は少なくても3匹は出てくるはずです。と言うことで変数を増やして<br />
　tekix1, tekiy1, tekix2, tekiy2, tekix3, tekiy3 <br />
としましょう。（一番最初の文字でなければ変数の名前に数字が使えます。）<br />
<br />
　このシューティングゲームを作っている間に更に2匹欲しくなってきました。やっぱり敵は多いに越したことはないですよね。と言うことで変数をもっと増やして<br />
　tekix1, tekiy1, tekix2, tekiy2, tekix3, tekiy3, tekix4, tekiy4, tekix5, tekiy5<br />
としました。<br />
<br />
　ここの辺りで気付いた人は入ると思いますが、<strong>上の方法では非常に面倒</strong>です。敵の数を増やすたびに変数の数も増えていくと言うのは不合理です。しかも、この場合では、敵によって変数名が違うため、例えその敵が同じ種類で同じ動きをするとしても、それぞれに対してプログラムを個別に書かなくてはなりません。<br />
<br />
　変数の1番最後の数字が変わっているだけなのに・・・<br />
<br />
　ここで非常に便利なのが<font size="3"><strong>配列変数</strong></font>です。これを使うと<br />
　tekix, tekiy<br />
という、たった2つの変数名で、いくつもの敵の座標を管理することが出来ます。<br />
<br />
　<font size="3"><strong>配列変数</strong></font>とは、普通の変数の集まりです。その変数の集まり全体に変数名があり、それぞれには識別するために番号が付けられています。その、それぞれを識別するための番号を「<strong>添え字</strong>」と言います。<br />
<br />
　呼び方のシステムとしては、駅のコインロッカーによく似ています。例えばある駅に、「改札口前ロッカー」と「売店横ロッカー」があるとします。それぞれ、いくつかのロッカーの集まりです。通常、ロッカーには通し番号が付けられていますよね？それで、「改札前ロッカーの3番」とか、「売店横ロッカーの5番」とか言う風に呼べるわけです。<br />
<br />
　配列変数も非常にこれと似ています。<strong>「改札前ロッカーの3番」という呼び方の、「改札前ロッカー」の部分が配列変数の変数名にあたり、「3番」の部分が配列変数の添え字にあたります。</strong>また、1つ1つのロッカー（1つ1つの変数）を<font size="3"><strong>要素</strong></font>といいます。つまり、<strong>改札前のロッカーが全部で50個あった時、要素数は50個</strong>である、と言う風に言います。<br />
<br />
　プログラム上でどのように使うかと言うと<br />
　　<font color="#0000ff"><strong>変数名（添え字）<br />
</strong><font color="#000000">のように使います。ちょっとだけ具体的に使ってみましょう<br />
<br />
&nbsp;</font><font color="#339966">// 配列変数を作成</font><font color="#0000ff"><br />
&nbsp;dim tekix, 3<br />
&nbsp;dim tekiy, 3</font></font></p>
<p><font color="#0000ff"><font color="#0000ff">&nbsp;<font color="#339966">// 配列変数にそれぞれ値を代入</font><br />
&nbsp;tekix(0) = 100<br />
&nbsp;tekiy(0) = 100<br />
&nbsp;tekix(1) = 200<br />
&nbsp;tekiy(1) = 200<br />
&nbsp;tekix(2) = 300<br />
&nbsp;tekiy(2) = 300</font></font></p>
<p><font color="#339966"><font color="#0000ff">&nbsp;// それぞれの位置に円を描画</font></font><font color="#0000ff"><font color="#0000ff"><br />
&nbsp;repeat 3<br />
&nbsp; circle tekix(cnt) - 5, tekiy(cnt) - 5, tekix(cnt) + 5, tekiy(cnt) + 5<br />
&nbsp;loop</font></font><font color="#0000ff"><font color="#000000"><br />
<br />
　&nbsp;実行すると小さい円が斜めに3つ表示されます。<br />
<br />
　プログラムを最初から見ていきましょう。まず<br />
<font color="#0000ff">&nbsp;dim tekix, 3<br />
&nbsp;dim tekiy, 3</font><br />
があります。dim命令が使われていますが、これはそれぞれ、「tekixという要素数が3の配列変数を作れ」「tekiyという要素数が3の配列変数を作れ」といっています。実はこのdim命令をつかって<br />
　<font color="#0000ff">dim 変数名</font><br />
と言う風に要素数を指定しなければ、普通の変数を作ることが出来ますが、今までは省略してきました。<strong>この命令を使わなくても、最初に変数に代入した時にHSPが勝手に作ってくれる</strong>からです。配列変数でもこの命令を使わなくとも、最初に代入した時に配列変数を作ってくれます。つまり、この2行は無くてもとりあえず問題ありません。こういう命令があることを示すために書いておきました。<br />
<br />
　つぎに、<br />
<font color="#0000ff">&nbsp;tekix(0) = 100<br />
&nbsp;tekiy(0) = 100<br />
&nbsp;tekix(1) = 200<br />
&nbsp;tekiy(1) = 200<br />
&nbsp;tekix(2) = 300<br />
&nbsp;tekiy(2) = 300</font><br />
とあります。これは、tekix、tekiyという配列変数の各要素に値を代入しています。普通の変数と違うのは、何番目の要素かを示す添え字があるところです。ここで注意して欲しいのは、<strong>要素の番号は0から始まる</strong>、と言うことです。よってこの場合、要素数が3であるため、添え字に指定できるのは、0、1、2の3つです。<br />
<br />
　そして、注目して欲しいのはこの部分です。<br />
<font color="#0000ff"><font color="#000000">&nbsp;</font>repeat 3<br />
&nbsp; circle tekix(cnt) - 5, tekiy(cnt) - 5, tekix(cnt) + 5, tekiy(cnt) + 5<br />
&nbsp;loop</font><br />
repeat命令とloop命令で、circle命令を3回繰り返しています。このcircle命令ではtekix、tekiyの配列変数の要素の値を利用して円を描画するわ訳ですが、添え字の部分に「cnt」とかかれています。これは<strong>システム変数の1種で、repeat-loop命令で何回目の繰り返しか、と言う値が入っています</strong>。つまり、一番最初の繰り返しでは0、次の繰り返しでは1、その次の繰り返しでは2、・・・と言う風に順次変化していきます。よって、3つの円がそれぞれの位置に描画されます。<br />
　ここで味噌なのが、<strong>添え字には普通の命令のパラメータと同じように、変数や、計算式を入れることが出来る</strong>、と言うことです。これが、普通の変数の名前の最後に数字を付ける時との大きな差で、配列変数を利用する時の最大の利点です。上のプログラムの描画部分のような書き方は、ゲームを作る際にたくさん出てくると思うので是非身につけて下さい。<br />
<br />
　今回の例はあまり面白くないかもしれませんが、これから配列変数は割と出てくると思います。いろいろ、配列変数で遊んでください。</font></font></p>]]></content:encoded>
    <dc:subject>HSP入門</dc:subject>
    <dc:date>2008-07-19T13:42:46+09:00</dc:date>
    <dc:creator>ぴんかび</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>ぴんかび</dc:rights>
  </item>
  <item rdf:about="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A79-%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%A4%89%E6%95%B0%E3%81%A8%E3%83%9E%E3%82%A6%E3%82%B9%E5%85%A5%E5%8A%9B">
    <link>https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A79-%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%A4%89%E6%95%B0%E3%81%A8%E3%83%9E%E3%82%A6%E3%82%B9%E5%85%A5%E5%8A%9B</link>
    <title>HSP講座9-システム変数とマウス入力</title>
    <description>
　今回はマウスを簡単に使ってみたいと思います。

　マウスのボタンの入力は、前回触れたgetkey命令で取得できます。キーコードは、「HSP講座8」の表のとおり、左ボタンが1、右ボタンが2です。

　キーボードと違うのは、マウスの座標の取得ですが、それは、システム変数の値を利用することで...</description>
    <content:encoded><![CDATA[<p><br />
　今回はマウスを簡単に使ってみたいと思います。<br />
<br />
<strong>　マウスのボタンの入力は、前回触れたgetkey命令で取得できます。</strong>キーコードは、「HSP講座8」の表のとおり、左ボタンが1、右ボタンが2です。<br />
<br />
　キーボードと違うのは、マウスの座標の取得ですが、それは、<span style="font-size: small"><strong>システム変数</strong></span>の値を利用することで、簡単に取得できます。<br />
<br />
　<span style="font-size: small"><strong>システム変数</strong></span>とは、変数の一種です。今まで使ってきた、自分たちで初期化して使う変数とは違い、<strong>HSPのシステムであらかじめ用意されている変数</strong>のことです。システムが用意する変数であるため、変数の名前はあらかじめ決まっています。<br />
<br />
　例えば、<strong>「mousex」というシステム変数には、マウスカーソルのx座標が入っています</strong>。また、同じように「mousey」というシステム変数に、マウスカーソルのy座標が入っています。<br />
<br />
　実際に使ってみましょう。<br />
　次のプログラムは、マウスの左ボタンを押している間、カラフルで大小さまざまな円がマウスカーソルの位置に描画され、右ボタンを押すと、画面内が白でクリア（塗りつぶし）されると言うものです。<br />
<br />
&nbsp;<span style="color: #339966"><span>// 乱数初期化<br />
</span></span><span style="color: #0000ff">&nbsp;randomize<br />
&nbsp;<br />
&nbsp;repeat</span></p>
<p><span style="color: #0000ff">&nbsp; <span style="color: #339966">// マウス左ボタン検出<br />
</span>&nbsp; getkey lclick, 1<br />
&nbsp; <span style="color: #339966">// マウス右ボタン検出</span><br />
&nbsp; getkey rclick, 2</span></p>
<p><span style="color: #0000ff">&nbsp; <span style="color: #339966">// 条件：左が押されていれば</span><br />
&nbsp;<span style="color: #800080"> <span style="color: #ff0000">if (lclick == 1) {</span></span><span style="color: #ff0000"><br />
</span>&nbsp;&nbsp; <span style="color: #339966">// 色：ランダム</span><br />
&nbsp;&nbsp; color rnd(256), rnd(256), rnd(256)</span><br />
<span style="color: #0000ff">&nbsp;&nbsp; <span style="color: #339966">// 半径：1から100の間でランダム</span><br />
&nbsp;&nbsp; r = rnd(100) + 1</span><br />
<span style="color: #0000ff">&nbsp;&nbsp; <span style="color: #339966">// (mousex, mousey)中心の円描画<br />
</span>&nbsp;&nbsp; circle mousex - r, mousey - r, mousex + r, mousey + r<br />
&nbsp; </span><span style="color: #ff0000"><span>}</span></span></p>
<p><span style="color: #0000ff">&nbsp; <span style="color: #339966">// 条件：右が押されていれば</span><br />
&nbsp; <span style="color: #ff0000"><span>if (rclick == 1) {</span></span><span style="color: #800080"><br />
</span>&nbsp;&nbsp;<span style="color: #339966"> // 色：白<br />
</span>&nbsp;&nbsp; color 255, 255, 255</span><br />
<span style="color: #0000ff">&nbsp;&nbsp;<span style="color: #339966"> // 画面内塗りつぶし<br />
</span>&nbsp;&nbsp; boxf<br />
&nbsp; </span><span style="color: #ff0000"><span>}</span></span></p>
<p><span style="color: #0000ff">&nbsp; wait 5<br />
&nbsp;loop<br />
</span><br />
　if文の色をちょっと変えてみました。見やすいでしょうか？<br />
<br />
　実行すると、マウスを押している間、ずっと円が描画されると思います。円と次の円が描画されるまでの時間が、「wait 5」です。（実際は、他の処理も多少時間をとっていますが）<br />
<br />
<br />
　プログラムの説明ですが、getkey命令付近は、大体分かると思います。前回説明したとおりです。<br />
<br />
　今回は色と半径をランダムにしています。「r = rnd(100) + 1」の「+1」は「r」が0になるのを防ぐ役割があります。「+1」がなければ、rの範囲は0～99ですが、「+1」することで1~100となっています。　<br />
<br />
　問題のマウス座標ですが、円描画の行を見てください。<br />
&nbsp;&nbsp; <font color="#0000ff">circle mousex - r, mousey - r, mousex + r, mousey + r<br />
　</font>となっています。このように、「mousex」「mousey」というシステム変数も、<strong>代入さえしなければ、普通の変数のように利用することが出来ます</strong>。この「mousex」「mousey」には、常に、その時のマウスの座標が入っているため、マウスを押しながら移動させたりしても円はマウスの位置にちゃんと描画されます。<br />
<br />
　とても簡単だとは思いませんか？ここまでやってくれば、簡単なペイントソフトみたいなものは出来そうな気がしますね。</p>]]></content:encoded>
    <dc:subject>HSP入門</dc:subject>
    <dc:date>2008-07-15T22:47:59+09:00</dc:date>
    <dc:creator>ぴんかび</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>ぴんかび</dc:rights>
  </item>
  <item rdf:about="https://pinkabi.blog.shinobi.jp/%E3%81%93%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/%E3%81%93%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">
    <link>https://pinkabi.blog.shinobi.jp/%E3%81%93%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/%E3%81%93%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6</link>
    <title>このサイトについて</title>
    <description>
　ここはプログラミングについての記事が主である雑記HPです。

　次のカゴテリーの中に興味があるものがあればご覧下さい。

●HSP入門（今のところメインコンテンツ）
　HSPによるゲームプログラミングの講座です。今までにプログラミングの経験がない方を対象に書いています。僕自身未熟で勉...</description>
    <content:encoded><![CDATA[<p><br />
　ここはプログラミングについての記事が主である雑記HPです。<br />
<br />
　次のカゴテリーの中に興味があるものがあればご覧下さい。<br />
<br />
●HSP入門（今のところメインコンテンツ）<br />
　HSPによるゲームプログラミングの講座です。今までにプログラミングの経験がない方を対象に書いています。僕自身未熟で勉強中の身なので色々間違いや勘違いなどあるかもしれません。それでも何かゲームが作りたい！と思う方、是非見てみてください。<br />
<br />
●ゲームプログラミング<br />
　ゲームを作ることに関していろいろ書くところです。まだあまり書いていません。<br />
<br />
●電子工作<br />
　電子工作についてぐだぐだ書いてあります。あまりにも中途半端なので見ないほうがいいかもしれません。<br />
<br />
●どうでもいいこと<br />
　&rdquo;日記&rdquo;的な要素が強い記事です。気が向いた時に見てください。<br />
<br />
　上のどれについても、記事内に誤りや勘違いが含まれている可能性が十分あります。このHPのことで何か問題が起きてもぴんかびは責任を負えませんのでご了承ください。<br />
<br />
　このページはリンクフリーです。相互リンクも大歓迎です。もし相互リンクしていただける方は、恐れ入りますがメールを下さい。アドレスは<br />
　_m_s_k_あっとまーくmail.goo.ne.jp<br />
です。（メールする際、上の&rdquo;あっとまーく&rdquo;の部分を&rdquo;@&rdquo;に直してください。）<br />
<br />
　他にも、感想や要望がありましたら、メール下さい。<br />
　　<br />
<br />
<br />
</p>]]></content:encoded>
    <dc:subject>このサイトについて</dc:subject>
    <dc:date>2008-07-13T20:11:57+09:00</dc:date>
    <dc:creator>ぴんかび</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>ぴんかび</dc:rights>
  </item>
  <item rdf:about="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A78-%E3%82%AD%E3%83%BC%E5%85%A5%E5%8A%9B%E3%81%A8%E6%9D%A1%E4%BB%B6%E5%88%A4%E6%96%AD">
    <link>https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A78-%E3%82%AD%E3%83%BC%E5%85%A5%E5%8A%9B%E3%81%A8%E6%9D%A1%E4%BB%B6%E5%88%A4%E6%96%AD</link>
    <title>HSP講座8-キー入力と条件判断</title>
    <description>　今日は、玉をキーボードで動かしてみようと思います。

　キー情報は、getkey命令で取得します。getkey命令は、ある指定したキーが、押されている状態か押されていない状態かを取得する命令で、
getkey 変数, キーコード
と言う風に使います。
　キーコードとは、キーボードのキー一...</description>
    <content:encoded><![CDATA[<p>　今日は、玉をキーボードで動かしてみようと思います。<br />
<br />
　キー情報は、<strong>getkey命令</strong>で取得します。getkey命令は、ある指定したキーが、押されている状態か押されていない状態かを取得する命令で、<br />
<font color="#0000ff">getkey 変数, キーコード</font><br />
と言う風に使います。<br />
　キーコードとは、キーボードのキー一つ一つに割り振られた番号のことで、次のようになっています。<br />
<br />
&nbsp;<font color="#800000"> キーコード : 実際のキー<br />
&nbsp;------------------------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; : マウスの左ボタン<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp; : マウスの右ボタン<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; : キャンセル（[CTRL]+[BREAK]）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; : ３ボタンマウスのまん中のボタン<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp; : [BACKSPACE]（PC98の[BS]）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp; : [TAB]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 13&nbsp;&nbsp;&nbsp; : [ENTER]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16&nbsp;&nbsp;&nbsp; : [SHIFT]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 17&nbsp;&nbsp;&nbsp; : [CTRL]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18&nbsp;&nbsp;&nbsp; : [ALT]（PC98の[GRPH]）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20&nbsp;&nbsp;&nbsp; : [CAPSLOCK]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 27&nbsp;&nbsp;&nbsp; : [ESC]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32&nbsp;&nbsp;&nbsp; : スペースキー<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 33&nbsp;&nbsp;&nbsp; : [PAGEUP]（PC98の[ROLLDOWN]）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 34&nbsp;&nbsp;&nbsp; : [PAGEDOWN]（PC98の[ROLLUP]）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 35&nbsp;&nbsp;&nbsp; : [END]（PC98の[HELP]）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 36&nbsp;&nbsp;&nbsp; : [HOME]（PC98の[HOMECLR]）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 37&nbsp;&nbsp;&nbsp; : カーソルキー[&larr;]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 38&nbsp;&nbsp;&nbsp; : カーソルキー[&uarr;]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 39&nbsp;&nbsp;&nbsp; : カーソルキー[&rarr;]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 40&nbsp;&nbsp;&nbsp; : カーソルキー[&darr;]<br />
&nbsp;&nbsp; 48～57&nbsp;&nbsp;&nbsp; : [0]～[9]（メインキーボード）<br />
&nbsp;&nbsp; 65～90&nbsp;&nbsp;&nbsp; : [A]～[Z]<br />
&nbsp; 96～105&nbsp;&nbsp;&nbsp; : [0]～[9]（テンキー）<br />
&nbsp;112～121&nbsp;&nbsp;&nbsp; : ファンクションキー [F1]～[F10]<br />
</font><br />
（「HSP　HELP　Browser　Ⅱ」　から引用）<br />
<br />
　この数値をgetkey命令に指定すると、<strong>押されている状態であれば変数に1が、押されていない状態であれば変数に0が代入されます</strong>。<br />
<br />
　実際に使えば分かると思います。ちょっと長いですが次のプログラムを実行してみてください。<br />
<br />
<font color="#0000ff">&nbsp;<font color="#339966">// 初期位置</font><br />
&nbsp;x = 100<br />
&nbsp;y = 100</font></p>
<p><font color="#0000ff">&nbsp;<font color="#339966">// 移動スピード<br />
</font>&nbsp;sp = 10</font></p>
<p><font color="#0000ff">&nbsp;<font color="#339966">// 半径</font><br />
&nbsp;r = 10</font></p>
<p><font color="#0000ff">&nbsp;repeat</font></p>
<p><font color="#0000ff">&nbsp; <font color="#339966">// キー情報取得</font><br />
&nbsp; getkey hidari, 37<br />
&nbsp; getkey ue, 38<br />
&nbsp; getkey migi, 39<br />
&nbsp; getkey sita, 40</font></p>
<p><font color="#0000ff">&nbsp; <font color="#339966">// 移動</font><br />
&nbsp; if (hidari == 1) {<br />
&nbsp;&nbsp; x -= sp<br />
&nbsp; }<br />
&nbsp; if (ue == 1) {<br />
&nbsp;&nbsp; y -= sp<br />
&nbsp; }<br />
&nbsp; if (migi == 1) {<br />
&nbsp;&nbsp; x += sp<br />
&nbsp; }<br />
&nbsp; if (sita == 1) {<br />
&nbsp;&nbsp; y += sp<br />
&nbsp; }</font></p>
<p><font color="#0000ff">&nbsp; <font color="#339966">// 描画始め ++++++++++++++++++</font><br />
&nbsp; redraw 0<br />
&nbsp; <br />
&nbsp; <font color="#339966">// 背景</font><br />
&nbsp; color 0, 0, 0<br />
&nbsp; boxf</font></p>
<p><font color="#0000ff">&nbsp; <font color="#339966">// 玉</font><br />
&nbsp; color 255, 255, 255<br />
&nbsp; circle x - r, y - r, x + r, y + r</font></p>
<p><font color="#0000ff">&nbsp; redraw 1<br />
&nbsp; </font><font color="#339966">// 描画終わり ++++++++++++++++</font></p>
<p><font color="#0000ff">&nbsp; wait 3</font></p>
<p><font color="#0000ff">&nbsp;loop<br />
</font><br />
　カーソルキー（十字キー）を押すと、その方向に玉が動くと思います。<br />
<br />
　最初に<br />
<font color="#0000ff"><font color="#000000">&nbsp; </font>x -= sp<br />
</font>　という書き方に触れておきますが、これは今まで使ってきた、<br />
&nbsp; <font color="#0000ff">x = x - sp</font>　<br />
　と同じことです。つまり、<strong>xの値をspの値だけ減らす</strong>、と言う意味です。スマートに見えるので書き換えました。<br />
　今まではspの部分は定数を用いてきましたが、変数にすることで、「アイテム取得でスピードアップ！」と言うような処理が出来ます。今回はしていませんが、今後ゲームを作る際に、こういう書き方が必要になると思うので、こうしておきました。他に、spの代入する値を変更するだけで、spの部分の値を一括変更できるというメリットもあります。<br />
<br />
　キーの情報の取得はこの部分です。<br />
<font color="#0000ff">&nbsp; getkey hidari, 37<br />
&nbsp; getkey ue, 38<br />
&nbsp; getkey migi, 39<br />
&nbsp; getkey sita, 40</font><br />
　37,38,39,40と言うキーコードは、上の表で見ると、カーソルキーの左、上、右、下であることが分かると思います。<br />
　つまり、カーソルキーが押されているか押されていないかの情報が、それぞれ、hidari、ue、migi、sitaと言う変数に代入されることになります。<br />
<br />
　そして、その変数の値を利用しているところがここです。<br />
<font color="#0000ff"><font color="#000000">&nbsp; </font>if (hidari == 1) {<br />
&nbsp;&nbsp; x -= sp<br />
&nbsp; }<br />
&nbsp; if (ue == 1) {<br />
&nbsp;&nbsp; y -= sp<br />
&nbsp; }<br />
&nbsp; if (migi == 1) {<br />
&nbsp;&nbsp; x += sp<br />
&nbsp; }<br />
&nbsp; if (sita == 1) {<br />
&nbsp;&nbsp; y += sp<br />
&nbsp; }</font><br />
　ここで、if (なんたら) {　かんたら }　という文が出てきました。この文を<strong>if文</strong>と言います。ifと言うのは英語で「もしも～ならば」という意味を持ちますが、プログラム上のif文もそうです。<strong>もし（）内の条件が満たされていれば、｛｝内の処理をします</strong>。逆に（）内の条件が満たされていなければ、｛｝内の処理を行いません。<br />
　ここで<strong>==は左辺と右辺が等しい場合、という条件を示します</strong>。つまり、それぞれ、hidari、ue、migi、sitaの値が1、つまりキーが押されている状態であれば｛｝内の処理を行うというものです。｛｝内の処理はそれぞれ、x座標、あるいはy座標を変化させる処理となっているので、カーソルキーを押すと、円が移動する、ということになります。<br />
　xを増やすか減らすかという符合の問題は、x座標の正方向が右、y座標の正方向が下、と言うことを考えれば分かると思います。<br />
<br />
　<br />
<br />
　なんだかゲームっぽくなってきたと思いませんか？次はマウスでも触ってみるかもしれません。<br />
<br />
　あと、HSP　HELP　Browser　Ⅱは、スクリプトエディタのメニューのヘルプ＞HSP命令リファレンスを開く、から起動することが出来ますので、命令の詳細が知りたい時や、どんな命令や関数があるか知りたい時は開いてみてください。<br />
<br />
</p>]]></content:encoded>
    <dc:subject>HSP入門</dc:subject>
    <dc:date>2008-07-12T12:30:01+09:00</dc:date>
    <dc:creator>ぴんかび</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>ぴんかび</dc:rights>
  </item>
  <item rdf:about="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A77-%E4%B9%B1%E6%95%B0">
    <link>https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A77-%E4%B9%B1%E6%95%B0</link>
    <title>HSP講座7-乱数</title>
    <description>
これまでは、プログラムを実行する度、毎回同じ処理をしていました。
そんなプログラムにはそろそろ飽きてきたかもしれません。

ということで、とりあえず乱数を使ってみようと思います。

乱数とはランダムな数のことです。サイコロ振った目の数みたいなもんです。
ただ、パソコン内でサイコロを振...</description>
    <content:encoded><![CDATA[<p><br />
これまでは、プログラムを実行する度、毎回同じ処理をしていました。<br />
そんなプログラムにはそろそろ飽きてきたかもしれません。<br />
<br />
ということで、とりあえず<strong><font size="3">乱数</font></strong>を使ってみようと思います。<br />
<br />
<strong><font size="3">乱数</font></strong>とは<strong><font size="3">ランダムな数</font></strong>のことです。サイコロ振った目の数みたいなもんです。<br />
ただ、パソコン内でサイコロを振っているわけではないので、<br />
プログラムで使えるのは<br />
計算から求められた擬似的な乱数です。<br />
<br />
その前に、<strong><font size="3">関数</font></strong>の説明をしておこうと思います。<br />
（乱数と同じ&rdquo;数&rdquo;がついていますが全く関係ありません。）<br />
<br />
特に難しい話ではないのですが、中学や高校の数学で、<br />
y = f(x) とか&nbsp;y = g(x) とか、あるいはf(x)の中身を具体的に書いて、<br />
y&nbsp;= 2x とかいう関数を見たことがあるかと思います。<br />
プログラム上の関数もこんな感じです。&nbsp;<br />
<strong>xの値を与えることで、f(x)の値が決まる</strong>、というものです。<br />
このxのことを命令と同様にパラメータと言いますが、<br />
<strong>このパラメータの数は1つとは限りません。</strong><br />
x, y, zの値を参考に、g(x, y, z)の値が決まる、というのもあるでしょう。<br />
<br />
実際に使ってみましょう。<br />
<br />
&nbsp;<strong><font color="#0000ff"><font color="#339966">// 半径</font><br />
&nbsp;r = 5<br />
<br />
<font color="#339966">// 乱数の初期化</font><br />
&nbsp;randomize<br />
&nbsp;<br />
&nbsp;repeat</font></strong></p>
<p><strong><font color="#0000ff">&nbsp;<font color="#339966"> // ランダムに位置を決める<br />
</font>&nbsp; x = rnd(640)<br />
&nbsp; y = rnd(480)</font></strong></p>
<p><strong><font color="#0000ff">&nbsp; <font color="#339966">// 円の描画<br />
</font>&nbsp; circle x - r, y - r, x + r, y + r <br />
&nbsp;<br />
&nbsp; wait 1<br />
&nbsp;&nbsp; <br />
&nbsp;loop<br />
</font></strong><br />
実行したら、黒い点が次々に表示されます。<br />
<br />
もう、大体のプログラムの流れは分かると思うので割愛します。<br />
<br />
乱数を使う時は、使う前にrandomize命令を置いて下さい。乱数が初期化されます。<br />
これをしないと、乱数が毎回同じ、つまり乱数でなくなってしまいます。<br />
<br />
それをしたあとに、<br />
<font color="#0000ff"><font color="#000000">&nbsp;</font><strong>x = rnd(640)<br />
&nbsp;y = rnd(480)<br />
</strong></font>のところで、乱数を作っています。<br />
rnd関数が乱数を発生させる関数で、数値のパラメータを1つとります。<br />
上のプログラムの場合、xに0から639までの数（640通り）の中のどれか、<br />
yに0から479までの数（480通り）のどれかがランダムで代入されます。<br />
<br />
前にも言った通り、ウィンドウのサイズはデフォルト（標準初期値）で640&times;480なので、<br />
rnd関数によって決められた円の中心座標は、画面内のどこかの点です。<br />
<br />
乱数の使い方は大体分かったでしょうか？<br />
ゲームでも、<br />
降り注ぐ岩の位置とか、<br />
的の出てくる微妙なタイミングとか<br />
煙球のランダムな色など<br />
色々使えるとおもうので、覚えておきましょう。<br />
<br />
<br />
次回はキーボードの情報を利用する予定です。<br />
ここから、面白くなってくる可能性があります。</p>]]></content:encoded>
    <dc:subject>HSP入門</dc:subject>
    <dc:date>2008-07-11T23:47:25+09:00</dc:date>
    <dc:creator>ぴんかび</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>ぴんかび</dc:rights>
  </item>
  <item rdf:about="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A76-%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-2">
    <link>https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A76-%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-2</link>
    <title>HSP講座6-アニメーション-2</title>
    <description>
前のプログラムでチカチカしていた理由。

それは、背景を塗りつぶした瞬間が見えてしまっていた、ということです。
背景を塗りつぶした瞬間と、その後に円を描画した絵が交互に映ったため、チカチカ見えたのです。

次のようにプログラムを変えましょう。

// 変数初期化
&amp;amp;nbsp;x ...</description>
    <content:encoded><![CDATA[<p><br />
前のプログラムでチカチカしていた理由。<br />
<br />
それは、背景を塗りつぶした瞬間が見えてしまっていた、ということです。<br />
<strong>背景を塗りつぶした瞬間と、その後に円を描画した絵が交互に映った</strong>ため、チカチカ見えたのです。<br />
<br />
次のようにプログラムを変えましょう。<br />
<br />
<font color="#0000ff"><font color="#339966">// 変数初期化</font><br />
&nbsp;x = 100 <br />
&nbsp;y = 100<br />
&nbsp;r = 10</font></p>
<p><font color="#0000ff">&nbsp;repeat</font></p>
<p><font color="#0000ff">&nbsp; <strong><font color="#339966">// 描画モード&rarr;0</font><br />
&nbsp; redraw 0</strong></font></p>
<p><font color="#0000ff">&nbsp; <font color="#339966">// 背景塗りつぶし<br />
</font>&nbsp; color 0,&nbsp; 0,&nbsp; 0 <font color="#339966">// 黒<br />
</font>&nbsp; boxf</font></p>
<p><font color="#0000ff">&nbsp;<font color="#339966"> // 円の描画<br />
</font>&nbsp; color 255, 255, 255 <font color="#339966">// 白<br />
</font>&nbsp; circle x - r, y - r,&nbsp; x + r, y + r</font></p>
<p><font color="#0000ff">&nbsp; <strong><font color="#339966">// 描画モード&rarr;1</font><br />
&nbsp; redraw 1</strong></font></p>
<p><font color="#0000ff">&nbsp; <font color="#339966">// x座標を5増やす</font><br />
&nbsp; x = x + 5</font></p>
<p><font color="#0000ff">&nbsp; <font color="#339966">// 50ms待つ</font><br />
&nbsp; wait 5</font></p>
<p><font color="#0000ff">&nbsp;loop<br />
<br />
<br />
<font color="#000000">redraw命令が新しく加わりました。redraw命令は描画モードを変更する命令です。<br />
描画モード0は、描画命令が実行されても、実際の画面には反映されず、仮想画面上の描画にとどまる、と言う状態です。<br />
一方描画モード1は、描画命令が実行されたその時に、実際の画面に反映されるというモードです。<br />
また、描画モード1にした瞬間、それまで仮想画面にあったイメージが実際の画面に反映されます。<br />
<br />
と言うことは、<strong>いろいろ描画する前に描画モードを0にしておいて、全ての描画が終わったところでモードを1にすれば、描画の過程は画面に反映されず、結果のみが見える</strong>ということになります。これで、ちらつきが解決されます。<br />
これから、いろいろプログラムを書いていく上で、呪文のように毎回書くことになります。大切なことなので、是非覚えておきましょう。<br />
</font><br />
</font></p>]]></content:encoded>
    <dc:subject>HSP入門</dc:subject>
    <dc:date>2008-07-09T20:43:30+09:00</dc:date>
    <dc:creator>ぴんかび</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>ぴんかび</dc:rights>
  </item>
  <item rdf:about="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A75-%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-1">
    <link>https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A75-%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-1</link>
    <title>HSP講座5-アニメーション-1</title>
    <description>今日は、アニメーションをしたいと思います。
これを、プレーヤーが動かせるようになればゲーム？ですからゲームプログラマーまでもう少しです。


今までは、動かない図形や文字を描いてきました。
今日は動く図形を描くわけですが、ちょっとした工夫で簡単に出来ます。

パラパラマンガを作ったこと...</description>
    <content:encoded><![CDATA[<p>今日は、<strong>アニメーション</strong>をしたいと思います。<br />
これを、プレーヤーが動かせるようになればゲーム？ですからゲームプログラマーまでもう少しです。<br />
<br />
<br />
今までは、動かない図形や文字を描いてきました。<br />
今日は動く図形を描くわけですが、ちょっとした工夫で簡単に出来ます。<br />
<br />
パラパラマンガを作ったことはあるでしょうか？原理はあれと全く同じです。<br />
<strong>１コマ１コマ少しずつ変化するコマを連続的に速く切り替えることにより、人間の目にはそれが動いているように見える</strong>、というものです。<br />
<br />
まず、このプログラムを見てください。<br />
<br />
&nbsp;<font color="#0000ff"><strong>x = 100&nbsp;<br />
&nbsp;y = 100<br />
&nbsp;r = 10<br />
&nbsp;circle x - r, y - r,&nbsp; x + r, y + r<br />
</strong></font><br />
今まで言ってきませんでしたが、パラメータを指定する時に、数式で書くことも可能です。<br />
つまり、この「circle」のパラメータは数値に直すと「90,90,110,110」ですね。<br />
と言うことは上のプログラムで、(x, y)つまり(100, 100)を中心に、半径r=10の円が描かれることは理解できるでしょうか？パッとみて分からない人も、今までのところを振り返りながらちょっと考えれば分かるはずです。<br />
<br />
あと補足ですが、今回のプログラムにはあちこちにスペースが入っています。これは見易さのためで、命令とパラメータの間のスペース（今回の場合、「circle」の直後のみ）以外は必要ではありません。好みで入れても入れなくてもいいです。<br />
<br />
<br />
で、上のプログラムで（x,y）中心の円が描けると言うことは、このxとyという変数をちょっとずつ変化させながら、描画すれば、アニメーションになると言うことです。ということで、次のプログラムにしてみましょう。<br />
<br />
&nbsp;<font color="#0000ff"><strong><font color="#339966">// 変数初期化</font><br />
&nbsp;x = 100 <br />
&nbsp;y = 100<br />
&nbsp;r = 10<br />
<br />
&nbsp;repeat<br />
<br />
&nbsp; <font color="#339966">// 背景塗りつぶし</font><br />
&nbsp; color 0, &nbsp;0, &nbsp;0 <font color="#339966">// 黒</font><br />
&nbsp; boxf<br />
<br />
&nbsp; </strong><strong><font color="#339966">// 円の描画<br />
&nbsp; <font color="#0000ff">color 255, 255, 255 </font><font color="#339966">// 白</font><br />
</font>&nbsp; circle x - r, y - r,&nbsp; x + r, y + r<br />
<br />
&nbsp; </strong><strong><font style="BACKGROUND-COLOR: #ffffff" color="#339966">// x座標を5増やす<br />
</font>&nbsp; x = x + 5<br />
<br />
&nbsp; <font color="#339966">// 50ms待つ</font><br />
&nbsp; wait 5&nbsp;&nbsp;<br />
<br />
&nbsp;loop<br />
</strong></font><br />
ちょっとプログラムが長くなってきたので、<strong><font size="3">コメント</font></strong>を入れてみました。（&larr;用語）<br />
コメントとは、プログラムの節々に入れるメモみたいなものです。<br />
//や;の後なら、好きなことが書けるので、自分で分かりやすいようなコメントを是非入れておきましょう。<br />
この癖はつけておいたほうがいいです。<br />
<br />
コメントを見れば、どの行がどんな役割があるか分かると思います。<br />
<br />
ちょっと付け足すと、<br />
<br />
・repeat命令にパラメータで繰り返し数を指定していないのは、無限に繰り返すことを意味します。<br />
こんなループのことを<strong>無限ループ</strong>と言ったりします。<br />
<br />
・boxf命令にパラメータが1つもないのは、画面全体の塗りつぶしを意味します。<br />
<br />
プログラム全体の流れとしては、<br />
まず、無限ループに入る前に、変数を初期化しておきます。<br />
そして、ループに入り、次のことを繰り返します。<br />
<strong>①背景を塗りつぶす</strong><br />
　これがないと、前のターンで書いたものが残ったままなので必要です。試しに消してやってみるとよく分かります。<br />
<strong>②円を描く<br />
</strong>　その時の変数の値で(x,y)を中心に半径rの円を描きます。実質変化する変数はxのみですが・・・<br />
<strong>③x座標を増やす</strong><br />
　ちょっと円の中心位置をずらします。これで、動いているように見えます。<br />
<strong>④50ms待つ<br />
</strong>　wait命令が、待ち時間を作る命令です。パラメータ&times;10ms待ちます。<br />
　これがないと、フリーズに近い状況になってしまうので注意しましょう。絶対必要です。<br />
<br />
とにかく、描く&rarr;待つ&rarr;描く&rarr;待つ&rarr;・・・と繰り返すのが基本です。<br />
ゲームでも、おおよそこんな流れなので覚えておきましょう。<br />
<br />
この例では、xを変化させましたが、yとかrとかを変化させても面白いかもしれません。<br />
<br />
気付いた人はいるかもしれませんが、<br />
上のプログラムを実行すると、チカチカします。<br />
この対策は次回します。<br />
<br />
<br />
</p>]]></content:encoded>
    <dc:subject>HSP入門</dc:subject>
    <dc:date>2008-07-08T22:42:07+09:00</dc:date>
    <dc:creator>ぴんかび</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>ぴんかび</dc:rights>
  </item>
  <item rdf:about="https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A74-%E5%A4%89%E6%95%B0%E3%81%A8%E7%B9%B0%E3%82%8A%E8%BF%94%E3%81%97%E6%96%87-2">
    <link>https://pinkabi.blog.shinobi.jp/hsp%E5%85%A5%E9%96%80/hsp%E8%AC%9B%E5%BA%A74-%E5%A4%89%E6%95%B0%E3%81%A8%E7%B9%B0%E3%82%8A%E8%BF%94%E3%81%97%E6%96%87-2</link>
    <title>HSP講座4-変数と繰り返し文-2</title>
    <description>前回の続きで、3の倍数を表示するプログラムを考えていきます。

前回の最終的なプログラムは

&amp;amp;nbsp;x=3
&amp;amp;nbsp;mes x
&amp;amp;nbsp;x=x+3
&amp;amp;nbsp;mes x
&amp;amp;nbsp;x=x+3
&amp;amp;nbsp;mes x
&amp;amp;nbsp;x=x+3
&amp;amp;nbsp;mes ...</description>
    <content:encoded><![CDATA[前回の続きで、3の倍数を表示するプログラムを考えていきます。<br />
<br />
前回の最終的なプログラムは<br />
<br />
<font color="#0000ff">&nbsp;x=3<br />
&nbsp;mes x<br />
&nbsp;x=x+3<br />
&nbsp;mes x<br />
&nbsp;</font><font color="#0000ff">x=x+3<br />
&nbsp;mes x<br />
&nbsp;x=x+3<br />
&nbsp;mes x<br />
&nbsp;x=x+3<br />
&nbsp;mes x<br />
&nbsp;x=x+3<br />
&nbsp;mes x<br />
&nbsp;x=x+3<br />
&nbsp;mes x<br />
&nbsp;x=x+3<br />
&nbsp;mes x<br />
&nbsp;x=x+3<br />
&nbsp;mes x<br />
</font><br />
でした。最初の2行以外は、同じ事の繰り返しです。<br />
これを今回は<strong>repeat命令</strong>と<strong>loop命令</strong>を使って簡単にします。<br />
repeat命令とloop命令は繰り返し文を作るための命令です。<br />
繰り返し文のことは<strong><font size="3">ループ</font></strong>とも呼びます。ループの方が言いやすいので、今後は多用すると思います。<br />
<br />
それで、使い方ですが、<br />
repeatとloopは互いを対にして、1組で1つのループを作ります。下のようにして使います。<br />
<br />
<font style="BACKGROUND-COLOR: #0000ff"><font style="BACKGROUND-COLOR: #ffffff" color="#0000ff">&nbsp;repeat 10<br />
&nbsp; mes &quot;なんたら&quot;<br />
&nbsp;&nbsp;mes &quot;かんたら&quot;<br />
&nbsp;loop</font><br />
</font><br />
このように<strong>repeatを先、loopを後に書く事によって、その間のプログラムを繰り返します</strong>。<br />
繰り返し回数は、repeatの後にパラメータとして与えます。<br />
<font size="3"><strong>今は、必ず繰り返し回数を書いてください。</strong><br />
</font>繰り返し回数を書かないと、無限に繰り返すことになり、ウィンドウが固まります。<br />
万一そうなってしまった場合は、Ctrl+Alt+Deleteでタスクマネージャーを開いて、「応答なし」のタスクを終了してください。<br />
<br />
<br />
で、実際に上のプログラムを実行すると、「なんたら」「かんたら」「なんたら」「かんたら」・・・・と言う風に、「なんたら」「かんたら」が10回繰り返し表示されると思います。<br />
<br />
<br />
これを利用して、3の倍数のプログラムを書き直すと、下のようになります。<br />
<br />
<font color="#0000ff">&nbsp;x=3<br />
&nbsp;mes x<br />
&nbsp;<strong>repeat 8<br />
&nbsp; x=x+3<br />
&nbsp; mes x<br />
&nbsp;loop<br />
</strong></font><br />
だいぶ簡単になりました。<br />
<br />
簡単に動作を説明すると、1行目「x=3」でまずxの値を3に初期化します。前回は言ってませんでしたが、一番最初の代入は、その後の代入と違って、今から変数としてxを使いますよ、という宣言も含んでいます。<br />
2行目「mes x」で、ここでのxの値、つまり3を表示します。<br />
この次3行目で、ループに入ります。<br />
4行目でxの値を3増やし、5行目で表示します。<br />
そして6行目でloop命令にたどり着くと、また3行目のrepeat命令まで戻って、4行目、5行目を繰り返します。<br />
<br />
分かったでしょうか？<br />
今まで、１行目&rarr;２行目&rarr;３行目&rarr;４行目&rarr;５行目&rarr;・・・・・&rarr;最終行、<br />
と言う風に上から下まで順番に実行していました。<br />
が、今回のプログラムでは２行目を実行した後、<br />
４行目&rarr;５行目&rarr;４行目&rarr;５行目&rarr;・・・・・・&rarr;５行目、<br />
と言う風な繰り返しがあります。と言うことです。<br />
<br />
もう少しプログラムを代えて、こうできるのは分かるでしょうか？<br />
<br />
<font color="#0000ff"><strong>&nbsp;x = 0<br />
&nbsp;repeat&nbsp;9<br />
&nbsp; x = x + 3<br />
&nbsp; mes x<br />
&nbsp;loop<br />
</strong></font><br />
ちょっと考えれば、これも３の倍数を表示してくれるプログラムであることが分かると思います。<br />
このプログラムでは、xを0から始め、後は「3増やして表示」をいうのを繰り返しています。<br />
確かに、3、6、9、・・・と繰り返しますね。<br />
<br />
このプログラムであれば、3の倍数がいっぱい欲しければ、2行目の「9」をもっと大きな数にすればいいだけですし、4の倍数が欲しければ、3行目の「3」を「4」に書き換えるだけです。<br />
<br />
<br />
2回にわたって、3の倍数を表示するなんて何も面白くない話でしたが、<br />
その間に出てきた変数や、ループは非常に重要です。これからボコボコ出てきます。<br />
ちょっと辛抱してここの辺りを理解すれば、後にゲーム作りが更に楽しくなると思います。<br />
<br />
<br />
<br />
最後に、前回書き忘れていたことを書きます。<br />
<br />
まず、<br />
前回何気なく出てきた「x=x+3」の「+」。他の記号も書いておきましょう。<br />
<br />
「-」・・・ 引き算。（例）3引く2&rArr;3-2<br />
「*」・・・ 掛け算。（例）5掛け2&rArr;5*2<br />
「/」・・・ 割り算。（例）8割る2&rArr;8/2<br />
「%」・・・ 割り算のあまり。（例）5割る3の余り（2）&rArr;5%2<br />
<br />
これらの記号のことを<strong>演算子</strong>と言います。<br />
<br />
で、次に、変数の名前の付け方ですが、<br />
これまでは「x」しか使ってきませんでした。<br />
しかし、「y」や「a」とかいう記号も使えるのは当たり前で、<br />
「okane」とか「teki」とかゆう風にアルファベットをいくつか並べたものでもOKです。<br />
ただし、命令や他のワードとかぶらないように注意しましょう。<br />
<br />
<br />
次は、何かが動くかも。]]></content:encoded>
    <dc:subject>HSP入門</dc:subject>
    <dc:date>2008-07-06T14:56:34+09:00</dc:date>
    <dc:creator>ぴんかび</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>ぴんかび</dc:rights>
  </item>
</rdf:RDF>
