HSPサンプルスクリプト |
00.03.03〜 |
HSPのサンプルスクリプトです。 ほとんどは20行くらいで、長いものでも80行弱です(一部例外あり)。 ご自由にお使いください。 |
全部ダウンロード(185kバイト、長いサンプルやhtmlを含む) |
最近の更新内容
|
分類別目次
|
【総合】 |
macrofunc.as for HSP2 for HSP3 | ||||||||||||||||
HSP2.6のマクロを使って関数を書きました。 以下の関数があります。
注意が2つあります。
|
slot.as for HSP2 for HSP3 |
スロットマシンです。 |
makemaze.as for HSP2 for HSP3 |
乱数で迷路を作って表示するサンプルです。 |
bound.as for HSP2 for HSP3 |
ボールのバウンドをシミュレートします。放物線の方程式を使うより、速度と加速度を使う方がリアルになります。反発係数と摩擦係数を調整すれば、いろいろなバウンドに対応させることができます。 |
boundx.as for HSP2 for HSP3 |
上と同じことをDirectXを使ってやってみました。ボールではなくサイコロを想定しています。 |
ffire.as for HSP2 for HSP3 |
花火のように点を円形に広がらせます。 |
HitBlow8.as for HSP2 for HSP3 |
おにたまさん(HSPの作者)のページにあったヒット&ブロー(8桁になっている上、寧ろヒット&ヒットと言うべきか?)を作ってみました(実は、自分がじっくりやってみたかっただけだったりする)。マスターマインドの数字版の変わり種と言えばわかる人もいるかもしれません。 初めは当てずっぽうで、1〜9の数字からなる8桁の数を答え、正しい数字がいくつあったかをヒントに、答を考えるパズルゲームです。 うまい人なら、平均10回くらい、最悪15回くらいで正解できるはずです。普通の4桁のヒット&ブローなら、平均7回くらいだったと思うので、けっこう、難しいです。1発で当たる確率は約36万分の1になります。 Exforce.dllが必要です。 |
HiddenCh.as for HSP2 for HSP3 |
ウィンドウ内に隠れているキャラクタをクリックして探すという、子供が喜びそうなゲームです。 |
janken3.as for HSP2 for HSP3 |
HSP掲示板で、「例えば3回戦ジャンケンはどんな風に作ったらいいんでしょう?」という質問に答えて作ったものです。 Exforce.dllが必要ですが、ない場合に動かす方法がスクリプトに書いてあります。 |
snow.as for HSP2 for HSP3 |
雪が降っているようなイメージの環境ソフト(^_^;;です。 |
hyperlink.as for HSP2 for HSP3 |
HTMLのハイパーリンクのようなことをします。 |
mcomm100.lzh for HSP2(31kバイト) | ||||||||
定型処理簡略化モジュールとそのサンプルのパッケージです。 以下の命令があります。
|
league.as for HSP2 for HSP3 |
チーム数を入力すると、リーグ戦の可能な組み合わせをリストアップします。 8チーム以上だと、最後まで出力させるには、かなりの時間を要します。 |
tournament.as for HSP2 for HSP3 |
チーム数を入力すると、トーナメント表(線のみ)を表示します。 |
calendar.as for HSP2 for HSP3 |
紀元前46年から(日本では1873年から)有効なカレンダーです。ただし、異説もあります。 |
【デバッグ】 |
SortDbgW.as for HSP2 |
スクリプトに以下の1行を追加するだけで、デバッグウィンドウの変数リストがアルファベット順にソートされる(並べ替えられる)というスクリプトです。ただし、エラーが起きたときはソートされません。 #include "SortDbgW.as" 最初の1回だけ、準備が必要です。準備作業についてはスクリプトの注釈を参照してください。 anthspex.dllを使っています。 HSP2.6に対応しています。 |
【変数】 |
savevars.as for HSP2 for HSP3 |
複数配列(数値・文字列)を1つのファイルに保存するサンプル。 なお、単純数値変数は、dup命令によって1つの配列にまとめることができます。 |
【ウィンドウ】 |
ginfo.as for HSP2 for HSP3 |
screen命令、ginfo命令、winx,winyについて、より深く理解するためのサンプルです。 スクリプトを読むことより、実行結果を読んで分析することが重要です。 |
movescr.as for HSP2 for HSP3 |
ドラッグによるウィンドウ移動のサンプルです。 bgscrで描いたタイトルバーのないウィンドウをマウスのドラッグによって動かします。 |
winact.as for HSP2 for HSP3 |
Windows95では、「gsel id,1」でウィンドウをアクティブにすることができますが、Windows98以降ではマイクロソフトの仕様変更(私に言わせればバグ)のため、できない場合があります。 このスクリプトは、Windows98以降で確実にウィンドウをアクティブにするモジュールと、その使い方のサンプルです。 サンプルは、メモ帳を起動し、3秒後にウィンドウ2をアクティブにします。 なお、このモジュールは、Windows95でも「gsel id,1」と同じ機能の命令として使えます。 使用しているWin32APIは、さくらさんに教えてもらったものです。 WindowsXPでは、このスクリプトでもダメです。hsp2はHSP2掲示板過去ログの[19319]、hsp3はさくらさんのHPをご覧ください。 |
【オブジェクト】 |
scrollbar.as for HSP2 for HSP3 |
スクロールバーを描画・制御するモジュールです。 オブジェクト(コントロール)ではなく、自分で描いて自分で制御しています。 HSPのcommonフォルダに置いてください。 sbmake,sbget,sbsetの3つの命令があります。各命令の使い方は、スクリプト先頭のコメントを参照してください。また、下のサンプルも参照してください。 マウスホイールには対応していません。 あくまでも、スクロールバーの描画・制御をしているだけなので、スクロール領域内の表示は、sbgetで得られる値によって描画する必要があります。 ウィンドウIDの31を使用しています。 |
scrlsmp.as for HSP2 for HSP3 |
上のスクロールバーモジュールの使い方を示すサンプルです。 同じフォルダに、HSPのsample¥demo¥ONIINFO.JPG(hsp3ではsky_bg.jpg)を置いてください。 |
groupbox.as for HSP2 for HSP3 |
グループボックスのサンプルです。 objsendを使ったグループボックスには問題があるため(マニュアルの「以前のバージョンからの変更点(アップデートガイド) (update.htm)」参照)、グループボックスを描くサブルーチンを作りました。 その使い方のサンプルです。 |
【マウス】 |
mouse.as for HSP2 for HSP3 |
mousex,mouseyでマウスカーソルの座標を取得することができますが、これには以下のような欠点があります。
そこで、マウスカーソルが特定のウィンドウ上にあり、かつそのウィンドウがアクティブな場合のみ、マウスカーソル座標をタイトルバーに表示するサンプルスクリプトを作りました。 |
【キー】 |
inkey.as for HSP2 for HSP3 |
押したキーの文字をそのまま表示するサンプルです。 ただし、数字とアルファベットしか対応していません。 通常、文字入力はinput命令で行ないますが、何らかの理由でキーを直接読みたい場合のサンプルです。 |
getkey.as for HSP2 for HSP3 |
getkeyのキーコードを調べるためのスクリプトです。 キーを押すとコードを表示します。 キーボードによっては3個以上の同時押しを検知できない場合がありますが、このスクリプトを使うと、目的の組み合わせを検出できるか調べることができます。また、代替の組み合わせを探すためにも使えます。 このスクリプト自体は最大10個の同時押しまで検出できます。ただし、PC互換機では1つのキーが複数のコードに対応する場合があり、一度押すと消えないコードもあるため、10個以下しか押してなくても表示できないコードが生じる場合があります。 |
【画像】 |
put.as for HSP2 for HSP3 |
背景とキャラクタの重ね合わせ表示、およびアニメーションのサンプルです。 HSPをインストールしたフォルダのsample¥demoにあるOniinfo.jpgとHsplogo8.mag(HSP3ならsky_bg.jpgとhsplogo8.bmp)をこのスクリプトと同じフォルダに置いてください。 |
charmove.as for HSP2 for HSP3 |
RPG等のキャラクタの移動のサンプルです。 矢印キーを押すとキャラクタ(矢印)が移動します。 |
obstacle.as for HSP2 for HSP3 |
charmove.asにマップを設定して障害物があると進めないようにしたものです。 マップデータまで含まれるので、けっこう長いです。 charmove.asがわかっていれば理解しやすいでしょう。 先頭の「dot=2」を書き換えると任意のドット数ずつ移動させることができます。 |
scroll.as for HSP2 for HSP3 |
obstacle.asのマップを広げてスクロールするようにしたものです。 obstacle.asがわかっていれば理解しやすいでしょう。 先頭の「dot=4」を書き換えると任意のドット数ずつスクロールさせることができます。 |
scroll2.as for HSP2 for HSP3 |
scroll.asと同じですが、bufferにマップ全体を描くのが現実的でない場合のサンプルです。 |
animove.as(animv103.lzh) for HSP2 for HSP3 | ||||||
scroll2.asに2パターンアニメを追加したものです。
|
initpal.as for HSP3 |
HSP3でパレットをHSP2と同じに設定するinitpal命令のモジュールです。 HSP3のcommonフォルダに置いておき、パレットモード画面を使っているHSP2用スクリプトをHSP3用に変換した場合、頭に「#include "initpal.as"」と書いてinitpal(パラメータなし)を実行しておくといいでしょう。最初に一度だけ実行すれば、その後に実行されるscreen, buffer, bgscrすべてに対して有効です。 ただし、元のスクリプト内にpalette命令がある場合、HSP3では、その後で実行されるパレットモードのscreen,buffer,bgscrに影響することに注意してください。そうした影響を排除するにはscreen等を実行する度にinitpalを実行する必要があります。 下のinitpalSample.asも参照してください。 |
initpalSample.as for HSP3 |
上記initpalモジュールのサンプルスクリプトです。 |
loadicon.as for HSP2 |
.icoファイルを読み込んで表示します。2色・16色・256色に対応しています。 Tomさんのiconrewr.dllのソースを参考にしました。 |
ldexeico.as for HSP2 for HSP3 |
.exeや.dllファイルからアイコンを読み込んで表示します。2色・16色・256色に対応しています。 少し長いです。 Tomさんのiconrewr.dllのソースを参考にしました。 |
chngicon.as for HSP2 for HSP3 |
.exeファイルのアイコンを.icoファイルのアイコンに書き換えます。 かなり長いです。 Tomさんのiconrewr.dllのソースを参考にしました。 HSP2用もHSP3用もHSP2で作成したexeファイルのみに対応しています。 |
hexmap.as for HSP2 for HSP3 |
シミュレーションウォーゲームで使われるヘクスマップの枠を描きます。 |
paint.as for HSP2 for HSP3 |
ドラッグで閉じた図形を描いてください。内部で右クリックすると塗りつぶします。 遅いので、ボードゲーム等で塗りつぶしアルゴリズムが必要になった場合くらいしか使えません。 アルゴリズムは、迷路を解くのに使われる右手法(右手を壁につけ、壁から離さないようにして進む)そのまんまですが、塗り残しを後から塗るために、進まない方向に進める場合、その位置をスタック(後から記憶したものを先に取り出す記憶領域──実際には配列)に記憶します。 Win32APIを使っても、できるらしいです。 |
【サウンド・ビデオ】 |
winmpg.as for HSP2 for HSP3 |
HSPのウィンドウ内でMPEGビデオを再生します。Windows95(4.00.950a)の場合、Media Player2(6.4.07.1112)が必要です。 |
listmci.as for HSP2 for HSP3 |
レジストリやSYSTEM.INIに登録されているMCIデバイスタイプ名をリストアップするスクリプトです |
【文字列】 |
hexcsv.as for HSP2 for HSP3 |
以下の3つを行なっているサンプルです。
|
hex2num.as for HSP2 for HSP3 |
上のhexcsv.asとほとんど同じですが、以下の点が違います。
|
zenkaku.as for HSP2 for HSP3 |
全角半角混在文字列のm文字目からn文字を抜き出すサンプルです。 |
octal.as for HSP2 for HSP3 |
8進←→数値変換のサンプルです。 |
binary.as for HSP2 for HSP3 |
2進←→数値変換のサンプルです。 |
jis2sjis.as for HSP2 for HSP3 |
JISコードをシフトJISコードに変換します。 |
longhex.as for HSP2 for HSP3 |
HSPの数値上限を超えるような大きな数(文字列)の16進←→10進変換です。 |
【ファイル・フォルダ】 |
dragdrop.as for HSP2 for HSP3 |
ファイルのドラッグ&ドロップのサンプルです。 EXEファイルやそのショートカットへのドラッグ&ドロップによる起動と、起動後のウィンドウへのドラッグ&ドロップとが考えられますが、両方に対応しているサンプルです。 エクスプローラやマイコンピュータからファイルやフォルダをドラッグ&ドロップすると、そのフルパスを表示します。 EXEファイルへのドラッグ&ドロップに対応するには、cmdline(HSP3ではdir_cmdline)を使います。これにより、関連づけにも対応し、さらに、¥Windows¥SendTo(WindowsXPではC:¥Documents and Settings¥ユーザー名¥SendTo。ただし、エクスプローラ-ツール-フォルダオプション-表示で「すべてのファイルとフォルダを表示する」に設定していないと、このフォルダは表示されません)にEXEファイルのショートカットを置けば、右クリック→「送る」メニューにも対応することになります。 ウィンドウへのドラッグ&ドロップに対応するには、Exforce.dllのsetdnd,chkdnd,getdnd(HSP3ではoncmd, Win32API(shell32.dll)のDragAcceptFiles, DragQueryFile, DragFinish)を使います。 ただし、複数ファイルをドラッグ&ドロップした場合については考慮していません(HSP3版は考慮しています)。 EXEファイルに複数ファイルがドラッグ&ドロップされた場合に対応するには、anthspex.dllのdivide命令が便利です。 |
iscut.as for HSP2 for HSP3 |
インターネットショートカットからURLを取り出すサンプルです。 IE5.0、ネスケ4.6で動作確認しています。 |
recursiveRen.as for HSP2 |
あるフォルダ以下のすべてのファイルの内、拡張子が一定のもののファイル名を変えるサンプルです。 再帰呼び出し(recursive call=自分自身を呼び出すサブルーチン)のサンプルにもなっています。 Exforce.dllが必要です。 hspext.dll(HSPに標準添付)を使っています。 |
treedo.as for HSP2 for HSP3 |
上のサブルーチンをモジュール化したもので、指定したフォルダ以下の全ファイルと全フォルダに対して自由な処理ができます。ただし、再帰呼び出しは使っていません。 使い方は、スクリプトの注釈を参照してください。 また、下の2つのサンプルも参考にしてください。 |
TreeDoSm.as for HSP2 for HSP3 |
上のtreedoモジュールの使い方のサンプルです。 Windowsフォルダ以下の全ファイル数と全フォルダ数を数えます。 |
copydir.as for HSP2 for HSP3 |
上のtreedoモジュールの使い方のサンプルです。 フォルダを階層構造ごとコピーします。 anthspex.dllのgetdir命令とlastchar命令を使っていますが、Exforceのseldir命令とextract命令に変えることもできます。 |
【exeファイル】 |
packlist.as for HSP2 for HSP3 |
exeファイルにpackされているファイルのリストを表示します。なぜか、packfileのファイルが読めないというとき、exeファイルに含まれているかどうか確認することができます。 anthspex.dllを使っています。 |
【クリップボード】 |
cpfilenm.as for HSP2 for HSP3 |
引数をクリップボードにコピーするスクリプトです。 メインルーチンは数行しかありませんが、EXEファイルにしてショートカットを¥Windows¥SendTo(WindowsXPではC:¥Documents and Settings¥ユーザー名¥SendTo。ただし、エクスプローラ-ツール-フォルダオプション-表示で「すべてのファイルとフォルダを表示する」に設定していないと、このフォルダは表示されません)に入れておくと、エクスプローラでファイルを右クリックして、「送る」メニューでファイルのフルパスをクリップボードにコピーできるので、けっこう便利です。 短いファイル名を長いファイル名に変換するサブルーチンを使うサンプルにもなっています。 |