« 2007年03月 | メイン | 2007年05月 »

2007年04月19日

【講座】HSPよく使うフレーズ 第28回 パスワード入力

HSPセンターの掲示板に質問があって、”パスワード入力”を作りたいと
いうのがあったので、ちょっと作ってみた。

そして、さらにメルマガ用に改造してみたよ。

入力はinput、比較はifを使うとできる。

inputにはちょっとコツがあって、いったん処理をとめてユーザーの
入力を待つ処理が必要。それにはbuttonと組み合わせて使うと便利だよ。

”hsp”がパスワードになってます。
暗号にしたり、ファイルに書き出せるようになると面白いね。

sdim pw,100
sdim errmes,100
*screen_init
cls
if errmes!"" :mes errmes
mes "パスワードを入力して<GO>ボタンをクリックしてください。"
input pw
button "GO",*check
stop
*check
if pw="hsp" {
goto *main
} else {
errmes="パスワードが違います。"
goto *screen_init
}
stop
*main
cls
mes "パスワード認証に成功しました。"
stop
[pass.hsp/hsp3]

(うすあじ)

投稿者 usuaji : 20:43

【講座】HSP3ワンポイントテクニック 第19回

このコーナーでは、HSP3の変わった使用例や、気がつきにくい機能など
を紹介していきたいと思います。

前回に引き続いて、型の扱いについて取り上げていきましょう。
HSP3では、「整数型」「実数型」「文字列型」を主に使用すると
言いました。(わからない人は前回のワンポイントテクニックを
参照してください。)
「実数型」と「整数型」については、既に触れているので、
今回は「文字列型」について解説していきましょう。

a="mojiretsu"

このように、「文字列型」は「"」で囲んだ部分を文字列として格納
することができます。HSP3では、文字列として格納する文字数や
文字の種類に制限はありません。ただし、スクリプトに書くときには
特別な書き方が必要な文字もあります。

a="ABC\"DEF"

上の例では、「ABC"DEF」という文字列が代入されます。
「"」は囲むための記号として使われているので、直接書くことが
できないため、「\"」を使うことになっているのです。
他にも、「\」を使っていくつかの特殊な文字を記述できます。

「\n」 → 通常の改行(CR/LF)
「\r」 → 特殊な改行(CR)
「\t」 → タブ
「\\」 → \

代入された変数は、パラメーターに指定することができるほか、
いくつかの計算を行なうことができます。
「文字列型」で行なうことのできる計算は、「+」とif命令で使用
するための論理演算子(「=」「!=」)のみとなっています。

"abc" + "def" → "abcdef" (接続)
"abc" = "abc" → 1 (一致しているかを比較)
"abc" != "abc" → 0 (違っているかを比較)

複数の型が混在する時の計算は、最初に出てくる「型」が結果を
決めるということを前回説明しましたが、「文字列型」の場合も
同じことが言えます。

a = "abc" + 123 + "def"
mes a

のようなスクリプトがあった場合、変数aは、「abc123def」という
文字列になります。自分で型を変換する場合は、strまたはstrf
関数を利用します。たとえば、

a = str(123)

は、「123」という文字列が変数aに代入されます。

a = strf( "%06d", 123 )

は、フォーマット指定により「000123」という文字列になります。
「文字列型」は不定な長さを扱うので、一部だけを取り出したり、
検索を行なうなど様々なサポート命令が用意されています。
文字列の操作は、最初慣れないうちは不自由に感じるかもしれま
せんが、どの命令がどのような機能を持っているか知っていれば、
ほとんどの処理は難しくなくなるでしょう。

(おにたま)

投稿者 usuaji : 20:42

【よみもの】もーりおのつぶやき 第7回

みなさモ、こんにちモ。
舌足らずな牛、『もーりお』でフガフガ。

新入生おめでとー、新学期おめでとー、4月おめでとー
春はドキドキワクワクだモ。
期待と不安がいりまじるモモ。
そんなあまずっぱい気持ち、いいなぁフガフガ。
春には切なさがいりまじるんだよねぇ、フガフガ。
その切なさは、初恋に似てるんだよね、フガフガ。
もーりおは草を食ってるばかりだモ。


o O(もーりおのつぶやき)
眠れないの ドキドキしちゃって
そうかい ぼくが あたためてあげよう
やだモモ もーりおさんたら ウフフフ

意味:
はっ!いかんモモ妄想が!!
どーやら、ぼくは発情期なのかモ?
妄想が、昭和っぽくてすまんモモ。

もーりおは、つぶやくことが趣味モ。
感想を待ってるモ。

みんなもつぶやきたいことがあったら送ってほしいモ。
短歌や川柳なんかでもいいモ。
宛先は”うすあじ”( hsptv@hspcenter.com )までだモモ~。

(ゆめゆめゆうか)

投稿者 usuaji : 20:41

HSPTV!メルマガ 第37号

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HSPTV!メルマガ 第37号 N0.0037 2007/04/19 発行

編集長:うすあじ ( hsptv@hspcenter.com )
発行:HSPTV!(ONION software)
WEBサイト:http://hsp.tv/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
登録解除などはこちら http://hsp.tv/play/service.html

■はじめに

こんにちは、うすあじです。

今回はちょっとだけお待たせしました。

ところで、新学期や新生活の人は新しい生活に慣れたかな?
悩みがある人は”もーりお”に相談してみるとイイモ!

では、メルマガスタートです。

(うすあじ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■今回のインデックス

【よみもの】もーりおのつぶやき 第7回(ゆめゆめゆうか)

【講座】HSP3ワンポイントテクニック 第19回(おにたま)

【講座】HSPよく使うフレーズ 第27回(うすあじ)

【募集】メルマガ投稿募集中

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【よみもの】もーりおのつぶやき 第7回

みなさモ、こんにちモ。
舌足らずな牛、『もーりお』でフガフガ。

新入生おめでとー、新学期おめでとー、4月おめでとー
春はドキドキワクワクだモ。
期待と不安がいりまじるモモ。
そんなあまずっぱい気持ち、いいなぁフガフガ。
春には切なさがいりまじるんだよねぇ、フガフガ。
その切なさは、初恋に似てるんだよね、フガフガ。
もーりおは草を食ってるばかりだモ。


o O(もーりおのつぶやき)
眠れないの ドキドキしちゃって
そうかい ぼくが あたためてあげよう
やだモモ もーりおさんたら ウフフフ

意味:
はっ!いかんモモ妄想が!!
どーやら、ぼくは発情期なのかモ?
妄想が、昭和っぽくてすまんモモ。

もーりおは、つぶやくことが趣味モ。
感想を待ってるモ。

みんなもつぶやきたいことがあったら送ってほしいモ。
短歌や川柳なんかでもいいモ。
宛先は”うすあじ”( hsptv@hspcenter.com )までだモモ~。

(ゆめゆめゆうか)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【講座】HSP3ワンポイントテクニック 第19回

このコーナーでは、HSP3の変わった使用例や、気がつきにくい機能など
を紹介していきたいと思います。

前回に引き続いて、型の扱いについて取り上げていきましょう。
HSP3では、「整数型」「実数型」「文字列型」を主に使用すると
言いました。(わからない人は前回のワンポイントテクニックを
参照してください。)
「実数型」と「整数型」については、既に触れているので、
今回は「文字列型」について解説していきましょう。

a="mojiretsu"

このように、「文字列型」は「"」で囲んだ部分を文字列として格納
することができます。HSP3では、文字列として格納する文字数や
文字の種類に制限はありません。ただし、スクリプトに書くときには
特別な書き方が必要な文字もあります。

a="ABC\"DEF"

上の例では、「ABC"DEF」という文字列が代入されます。
「"」は囲むための記号として使われているので、直接書くことが
できないため、「\"」を使うことになっているのです。
他にも、「\」を使っていくつかの特殊な文字を記述できます。

「\n」 → 通常の改行(CR/LF)
「\r」 → 特殊な改行(CR)
「\t」 → タブ
「\\」 → \

代入された変数は、パラメーターに指定することができるほか、
いくつかの計算を行なうことができます。
「文字列型」で行なうことのできる計算は、「+」とif命令で使用
するための論理演算子(「=」「!=」)のみとなっています。

"abc" + "def" → "abcdef" (接続)
"abc" = "abc" → 1 (一致しているかを比較)
"abc" != "abc" → 0 (違っているかを比較)

複数の型が混在する時の計算は、最初に出てくる「型」が結果を
決めるということを前回説明しましたが、「文字列型」の場合も
同じことが言えます。

a = "abc" + 123 + "def"
mes a

のようなスクリプトがあった場合、変数aは、「abc123def」という
文字列になります。自分で型を変換する場合は、strまたはstrf
関数を利用します。たとえば、

a = str(123)

は、「123」という文字列が変数aに代入されます。

a = strf( "%06d", 123 )

は、フォーマット指定により「000123」という文字列になります。
「文字列型」は不定な長さを扱うので、一部だけを取り出したり、
検索を行なうなど様々なサポート命令が用意されています。
文字列の操作は、最初慣れないうちは不自由に感じるかもしれま
せんが、どの命令がどのような機能を持っているか知っていれば、
ほとんどの処理は難しくなくなるでしょう。

(おにたま)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【講座】HSPよく使うフレーズ 第28回 パスワード入力

HSPセンターの掲示板に質問があって、”パスワード入力”を作りたいと
いうのがあったので、ちょっと作ってみた。

そして、さらにメルマガ用に改造してみたよ。

入力はinput、比較はifを使うとできる。

inputにはちょっとコツがあって、いったん処理をとめてユーザーの
入力を待つ処理が必要。それにはbuttonと組み合わせて使うと便利だよ。

”hsp”がパスワードになってます。
暗号にしたり、ファイルに書き出せるようになると面白いね。

sdim pw,100
sdim errmes,100
*screen_init
cls
if errmes!"" :mes errmes
mes "パスワードを入力して<GO>ボタンをクリックしてください。"
input pw
button "GO",*check
stop
*check
if pw="hsp" {
goto *main
} else {
errmes="パスワードが違います。"
goto *screen_init
}
stop
*main
cls
mes "パスワード認証に成功しました。"
stop
[pass.hsp/hsp3]

(うすあじ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【募集】メルマガ投稿募集中

 ”HSPTV!メルマガ”への投稿をお待ちします。

 募集するコーナーは

(1)「教えて!おにたま!!」

 HSPの素朴な疑問をHSPの作者おにたま氏に聞いてみよう!
というコーナー。疑問。知りたいテクニックなどを直接聞くチャンス。

(2)「もーりおのつぶやき」

 つぶやき、短歌や川柳を受け付けてます。

(3)「こんなHSP3本が欲しい」

あなたが欲しい、読んでみたいHSP3の本を教えてください。
ひょっとしたら実際に本になるかも。

メルマガに関する要望や感想、日常のお便りもお待ちしています。

 全ての投稿は”うすあじ”( hsptv@hspcenter.com )まで。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[PR]オススメHSP3の本
・HSP3 リファレンスブック
・公認 HSPファンブック 楽しく始める/極める本
・逆引きHSP3プログラミング事典[応用編]
・逆引きHSP3プログラミング事典[基本編]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■編集後記

最近、メルマガへのメールが少ないんですよ。

まあ、問題がないというのはいいんですけどね。
つまらないとか、難しすぎるとか、意見があったら送って下さいね。

「もーりおのつぶやき」の応援、川柳なども絶賛募集中ですよ!

そろそろメルマガもリニューアルかなぁ。
どんなメルマガが読みたいか、メールで教えてくれるとうれしいな。

つぶやき、おたよりはコチラまで!
hsptv@hspcenter.com

では、みなさんお元気で!

(うすあじ)

■バックナンバーについて

バックナンバーの公開ページはこちら
http://www.hspcenter.com/hsptvm/

■解約方法

 登録解除などはこちら
http://hsp.tv/play/service.html

■広告の掲載など

 本メールマガジンの広告掲載のご相談は
”うすあじ”( hsptv@hspcenter.com )までお願いします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
編集長:うすあじ ( http://hspcenter.com/ )
記事の投稿、ご意見、ご希望はこちらまで hsptv@hspcenter.com

ONION software Copyright 2007(c) All rights reserved.
メルマガ本文の再配布・商利用、転載は禁止させて頂きます。
HSPのスクリプトサンプルは自由に再利用しても構いません。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


投稿者 usuaji : 20:41

2007年04月03日

もーりおのつぶやき 第6回

みなさモ、こんにちモ。
舌足らずな牛、『もーりお』でフガフガ。

春がおしせまってきた今日この頃
みなさまいかがお過ごしでしょかモ。

ねみーんだフガフガ。

そーでなくても、ぬぼーっと草なんか食って
生きてるっていうのにモ?
春のたよりなんかが来ちゃった日には
よけーにフガフガねむっちゃうモ。

ちなみに、みんな理解してくれてるのか
わからないけど、フガフガってのは
草くってるってことモ。

モモモ、まさかまさか
わからかったなんてことはないモ。

実録を表現するのは、なかなかに難しいモモ~。


o O(もーりおのつぶやき)
生まれも育ちも 北の大地の ののっぱら
時折みせる するどい目つきは 闘牛の証

意味:
草原育ちの乳牛だなんて、なめてもらっちゃ困るなぁ。
草食べてる合間にちらりと見せる
するどい目つきがわからないのかい?
ふだんのぼくとのギャップがかいまみえて
かっこいいモ。ドキドキだモ。


もーりおは、つぶやくことが趣味モ。
感想を待ってるモ。

みんなもつぶやきたいことがあったら送ってほしいモ。
短歌や川柳なんかでもいいモ。
宛先は”うすあじ”( hsptv@hspcenter.com )までだモモ~。

(ゆめゆめゆうか)

投稿者 usuaji : 00:58

【講座】HSP3ワンポイントテクニック 第18回

このコーナーでは、HSP3の変わった使用例や、気がつきにくい機能など
を紹介していきたいと思います。

今回は、型の扱いについて取り上げてみましょう。
「型」というのは、計算したり変数に格納したりするための基本
となる種類で、HSP3では、「整数型」「実数型」「文字列型」という
3つの型を主に使用することになります。
同じ計算や表示をしても、それぞれの「型」ごとに少しづつ動作が
違ってきます。たとえば、数値型の「2」と「3」を足し算すると、
「5」になりますが、文字列型の「2」と「3」を足し算した時は、
「23」になります。なぜ「型」がいくつもあるのかと言うと、
扱っているものの種類によって最適な動作をすることによって、
便利になったり、高速だったりするからです。
次のようなスクリプトを入力してみてください。

a=1/3
mes a

これは、「1÷3」を計算して表示するだけのものですが、結果は
「0」になってしまいます。これは、最初に出てきている「1」
という数字をHSP3の基本的な型である整数型として判断して
計算が行なわれているためです。
これを実数で計算させるためには、以下のように修正します。

a=1.0/3
mes a

今度は、最初に出てくる「1.0」が小数点の付いた実数型となって
いるため、その後の計算が実数型で行なわれます。
最初から「1」も実数型として扱えばいいのではないかと思われる
かもしれませんが、現在のCPUは実数よりも整数の方が処理速度が
高速で、メモリ効率も優れています。また、多くの場合小数を
使わずに済んでしまうことが多いため、効率を求める上で
このような仕組みができているのです。

ちなみに、変数に代入されているものの型を変えたり、計算の中で
型を変更したい場合には、「str」「int」「double」等の関数を
使います。
たとえば、double関数はカッコ内の値を実数型に変更します。

a=double(1)/3
mes a

とした場合には、カッコ内の「1」が実数型として扱われます。
このように、「型」を使う上で注意するポイントとしては、

・計算の最初に出てくる「型」が結果を決める
・小数点を付けない数字はすべて整数として扱われる
・適切な型を選んで使用した方が効率が良い

となります。
最後に、「1÷3」の計算結果についてですが、精度が低いと考えて
いる人もいるかと思います。HSP3では、実数の文字列変換を行なう
上である程度表示を省略しています。さらに細かい桁を表示する
場合には、以下のようにstrf関数を使って取り出すことが可能です。

a=double(1)/3
mes strf("%4.15f",a) ; 小数点以下15桁まで表示


(おにたま)

投稿者 usuaji : 00:57

【講座】HSPよく使うフレーズ 第27回 15パズルのこと

今回は”kuroさん”からの質問。

”HSP ゲームプログラミング・クックブック ”のスクリプトに
関する内容だ。

ちょっと専門的?な質問だから”よく使うフレーズ”には
あまりふさわしくないかもね。

分からなくても落ち込まなくてイイタイプのテクニックです。

------------
はじめまして。 kuroと申します。

HSPゲームプログラミングクックブックの中に、「15パズル」のサンプル
スクリプトがあります。
その中の71-81行目、問題作成のため入れ替える場所を決める

rnd a,2
rnd b,3
if a{
cx=nx :cy=(ny+b+1)&3
}else{
cy=ny :cx=(nx+b+1)&3
}

【 秀和システム『HSPゲームプログラミング・クックブック』
”15パズル”P85 より引用 】

の部分のスクリプトの意味がよく分かりません。
どうして、空のマスに重ならず、かつ空のマスに接触するマスを
選ぶことができるのでしょうか。
------------

どうも!メールありがとう!

さて、どのようになってるか説明します。

空のブロックの座標はnx、nyです。
クリック対象の座標はcx、cy。

最初に変数aの乱数で、クリックする場所が、"xが同じ"か"yが同じ"か
を振り分ける。

クリックするにはXかYが、空のブロックと同じ必要があるからです。

構造は同じなので「cx=nx :cy=(ny+b+1)&3」の解説をします。

この場合はクリックするx座標は空の場所と同じ。
y座標は「(ny+b+1)&3」
分解すると
ny 空の座標
b 0から2
1 数値1
&3 0-3に変換する命令

となります。

■最初は&3なしで考えます。

ny=0の場合、bが0だと1
0   1  2  3
0【 】【空 】【 】【 】
1【 】【b=0】【 】【 】
2【 】【b=1】【 】【 】
3【 】【b=2】【 】【 】

という並びになります。(今回1の列だけを考えます。)
nyは0から3の可能性があるのですが、どの値の場合でもスタート位置が
ずれて、数値が循環するというのは分かりますか?

仮にny=3なら



【空 】
<ブロックここまで
【b=0】
【b=1】
【b=2】

このようにはみ出てしまいます。

■次に&3があると、はみ出た数値をうまく戻す処理がうまくできます。

2進数は

000
001
010
011
100
101
110
111

という値の増え方をします。

右側の2桁だけをみると同じパターンを繰り返しているのが分かります。

"2桁だけをみる処理"これが「&3」です。
(&「AND」は2桁を切り取るような結果になります。)

&3で

00、01、10、11 このループになるので、
はみ出た部分がぐるっともどります。

【b=0】
【b=1】
【b=2】
【空 】

こんな感じになります。


(バックナンバーの公開ページは図解入りだよ。)

以上です。

というワケでクックブックをもってないとわかりにくいネタで
ゴメンナサイ。

いまでも売ってるといいんだけどねぇ。

(うすあじ)

投稿者 usuaji : 00:56

HSPTV!メルマガ 第36号

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HSPTV!メルマガ 第36号 N0.0036 2007/04/03 発行

編集長:うすあじ ( hsptv@hspcenter.com )
発行:HSPTV!(ONION software)
WEBサイト:http://hsp.tv/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
登録解除などはこちら http://hsp.tv/play/service.html

■はじめに

こんにちは、うすあじです。

新年度がスタートしました!

あたらしくクラブ活動をする人とか、新入社員の人もいるのかな?

新年度のつぶやきは、”もーりお”が聞いてくれるよ!

では、メルマガスタートです。

(うすあじ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■今回のインデックス

【よみもの】もーりおのつぶやき 第6回(ゆめゆめゆうか)

【講座】HSP3ワンポイントテクニック 第18回(おにたま)

【講座】HSPよく使うフレーズ 第26回(うすあじ)

【募集】メルマガ投稿募集中

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
もーりおのつぶやき 第6回


みなさモ、こんにちモ。
舌足らずな牛、『もーりお』でフガフガ。

春がおしせまってきた今日この頃
みなさまいかがお過ごしでしょかモ。

ねみーんだフガフガ。

そーでなくても、ぬぼーっと草なんか食って
生きてるっていうのにモ?
春のたよりなんかが来ちゃった日には
よけーにフガフガねむっちゃうモ。

ちなみに、みんな理解してくれてるのか
わからないけど、フガフガってのは
草くってるってことモ。

モモモ、まさかまさか
わからかったなんてことはないモ。

実録を表現するのは、なかなかに難しいモモ~。


o O(もーりおのつぶやき)
生まれも育ちも 北の大地の ののっぱら
時折みせる するどい目つきは 闘牛の証

意味:
草原育ちの乳牛だなんて、なめてもらっちゃ困るなぁ。
草食べてる合間にちらりと見せる
するどい目つきがわからないのかい?
ふだんのぼくとのギャップがかいまみえて
かっこいいモ。ドキドキだモ。


もーりおは、つぶやくことが趣味モ。
感想を待ってるモ。

みんなもつぶやきたいことがあったら送ってほしいモ。
短歌や川柳なんかでもいいモ。
宛先は”うすあじ”( hsptv@hspcenter.com )までだモモ~。

(ゆめゆめゆうか)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【講座】HSP3ワンポイントテクニック 第18回

このコーナーでは、HSP3の変わった使用例や、気がつきにくい機能など
を紹介していきたいと思います。

今回は、型の扱いについて取り上げてみましょう。
「型」というのは、計算したり変数に格納したりするための基本
となる種類で、HSP3では、「整数型」「実数型」「文字列型」という
3つの型を主に使用することになります。
同じ計算や表示をしても、それぞれの「型」ごとに少しづつ動作が
違ってきます。たとえば、数値型の「2」と「3」を足し算すると、
「5」になりますが、文字列型の「2」と「3」を足し算した時は、
「23」になります。なぜ「型」がいくつもあるのかと言うと、
扱っているものの種類によって最適な動作をすることによって、
便利になったり、高速だったりするからです。
次のようなスクリプトを入力してみてください。

a=1/3
mes a

これは、「1÷3」を計算して表示するだけのものですが、結果は
「0」になってしまいます。これは、最初に出てきている「1」
という数字をHSP3の基本的な型である整数型として判断して
計算が行なわれているためです。
これを実数で計算させるためには、以下のように修正します。

a=1.0/3
mes a

今度は、最初に出てくる「1.0」が小数点の付いた実数型となって
いるため、その後の計算が実数型で行なわれます。
最初から「1」も実数型として扱えばいいのではないかと思われる
かもしれませんが、現在のCPUは実数よりも整数の方が処理速度が
高速で、メモリ効率も優れています。また、多くの場合小数を
使わずに済んでしまうことが多いため、効率を求める上で
このような仕組みができているのです。

ちなみに、変数に代入されているものの型を変えたり、計算の中で
型を変更したい場合には、「str」「int」「double」等の関数を
使います。
たとえば、double関数はカッコ内の値を実数型に変更します。

a=double(1)/3
mes a

とした場合には、カッコ内の「1」が実数型として扱われます。
このように、「型」を使う上で注意するポイントとしては、

・計算の最初に出てくる「型」が結果を決める
・小数点を付けない数字はすべて整数として扱われる
・適切な型を選んで使用した方が効率が良い

となります。
最後に、「1÷3」の計算結果についてですが、精度が低いと考えて
いる人もいるかと思います。HSP3では、実数の文字列変換を行なう
上である程度表示を省略しています。さらに細かい桁を表示する
場合には、以下のようにstrf関数を使って取り出すことが可能です。

a=double(1)/3
mes strf("%4.15f",a) ; 小数点以下15桁まで表示


(おにたま)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【講座】HSPよく使うフレーズ 第27回 15パズルのこと


今回は”kuroさん”からの質問。

”HSP ゲームプログラミング・クックブック ”のスクリプトに
関する内容だ。

ちょっと専門的?な質問だから”よく使うフレーズ”には
あまりふさわしくないかもね。

分からなくても落ち込まなくてイイタイプのテクニックです。

------------
はじめまして。 kuroと申します。

HSPゲームプログラミングクックブックの中に、「15パズル」のサンプル
スクリプトがあります。
その中の71-81行目、問題作成のため入れ替える場所を決める

rnd a,2
rnd b,3
if a{
cx=nx :cy=(ny+b+1)&3
}else{
cy=ny :cx=(nx+b+1)&3
}

【 秀和システム『HSPゲームプログラミング・クックブック』
”15パズル”P85 より引用 】

の部分のスクリプトの意味がよく分かりません。
どうして、空のマスに重ならず、かつ空のマスに接触するマスを
選ぶことができるのでしょうか。
------------

どうも!メールありがとう!

さて、どのようになってるか説明します。

空のブロックの座標はnx、nyです。
クリック対象の座標はcx、cy。

最初に変数aの乱数で、クリックする場所が、"xが同じ"か"yが同じ"か
を振り分ける。

クリックするにはXかYが、空のブロックと同じ必要があるからです。

構造は同じなので「cx=nx :cy=(ny+b+1)&3」の解説をします。

この場合はクリックするx座標は空の場所と同じ。
y座標は「(ny+b+1)&3」
分解すると
ny 空の座標
b 0から2
1 数値1
&3 0-3に変換する命令

となります。

■最初は&3なしで考えます。

ny=0の場合、bが0だと1
0   1  2  3
0【 】【空 】【 】【 】
1【 】【b=0】【 】【 】
2【 】【b=1】【 】【 】
3【 】【b=2】【 】【 】

という並びになります。(今回1の列だけを考えます。)
nyは0から3の可能性があるのですが、どの値の場合でもスタート位置が
ずれて、数値が循環するというのは分かりますか?

仮にny=3なら



【空 】
<ブロックここまで
【b=0】
【b=1】
【b=2】

このようにはみ出てしまいます。

■次に&3があると、はみ出た数値をうまく戻す処理がうまくできます。

2進数は

000
001
010
011
100
101
110
111

という値の増え方をします。

右側の2桁だけをみると同じパターンを繰り返しているのが分かります。

"2桁だけをみる処理"これが「&3」です。
(&「AND」は2桁を切り取るような結果になります。)

&3で

00、01、10、11 このループになるので、
はみ出た部分がぐるっともどります。

【b=0】
【b=1】
【b=2】
【空 】

こんな感じになります。


(バックナンバーの公開ページは図解入りだよ。)

以上です。

というワケでクックブックをもってないとわかりにくいネタで
ゴメンナサイ。

いまでも売ってるといいんだけどねぇ。

(うすあじ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【募集】メルマガ投稿募集中

”HSPTV!メルマガ”への投稿をお待ちします。

募集するコーナーは

(1)「教えて!おにたま!!」

HSPの素朴な疑問をHSPの作者おにたま氏に聞いてみよう!
というコーナー。疑問。知りたいテクニックなどを直接聞く
チャンス。

(2)「もーりおのつぶやき」

つぶやき、短歌や川柳を受け付けてます。

(3)「こんなHSP3本が欲しい」

あなたが欲しい、読んでみたいHSP3の本を教えてください。
ひょっとしたら実際に本になるかも。

メルマガに関する要望や感想、日常のお便りもお待ちしています。

全ての投稿は”うすあじ”( hsptv@hspcenter.com )まで。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[PR]オススメHSP3の本
・HSP3 リファレンスブック
・公認 HSPファンブック 楽しく始める/極める本
・逆引きHSP3プログラミング事典[応用編]
・逆引きHSP3プログラミング事典[基本編]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■編集後記

最近、春らしい天気だなぁと思ってたら、急に寒くなったりして
驚きますねぇ。

うちには新生活も新学期もないので、せめて春らしい食べ物を
食べたいです。
桜餅とか柏餅とか。
ちなみに柏餅は味噌あんが好きです(^^A

では、お元気で!

(うすあじ)

■バックナンバーについて

バックナンバーの公開ページはこちら
http://www.hspcenter.com/hsptvm/

■解約方法

登録解除などはこちら
http://hsp.tv/play/service.html

■広告の掲載など

本メールマガジンの広告掲載のご相談は
”うすあじ”( hsptv@hspcenter.com )までお願いします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
編集長:うすあじ ( http://hspcenter.com/ )
記事の投稿、ご意見、ご希望はこちらまで hsptv@hspcenter.com

ONION software Copyright 2007(c) All rights reserved.
メルマガ本文の再配布・商利用、転載は禁止させて頂きます。
HSPのスクリプトサンプルは自由に再利用しても構いません。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

投稿者 usuaji : 00:51