HSPソフト

HSPのソフトウェアを紹介しています。

  トップ  ソフト紹介(生化学タイピング競馬)  タグ一覧  クズコード

>>ソフト紹介

>>ガラクタ置き場

>>相互リンク

タグ一覧

関数命令別

■思ったこと 6, A=A+2はA+2と同じ 7, マップ作成において、組み合わせる個々のチップは正確に並べる必要はない   隣にはみだした状態で0,2,4のようにひとつ抜かしで読み込めばよい 8、数字は4の倍数

■ 変数 ある文字Aなどをある数と置くことができる A=2

■ 演算子たち +・・・+は足し算である。しかしA=A+1はA++と表せる。かつ早い −・・・−は引き算である。同様にA=A-1はA--と表せる。 ¥・・・\は割り算の結果、あまりを返す。 A=6\4 A=2 &・・・&は2進法に表したときの最大公約数を求めるみたいな感じ A=6&4 A=4 !・・・!は同じでないという意味。if a!b ならaとbが同じでないなら。 ■ await p1 一定時間待つ(1000=1秒)

■ alloc p1,p2 配列変数 p3を省けばsdimと同じ あまり使わないほうがいいらしい

■ buffer p1,p2,p3,p4 仮想画面を作ることができる p1=ウィンドウID 2〜を主に使う p2=画面のサイズ X p3=画面のサイズ Y p4=フルカラーなら0、256色なら1

■ bgscr p1,p2,p3,p4,p5,p6,p7,p8 screen命令と同じ。タイトルバー、枠がない スクリーンセーバー,フルスクリーンを作るとき使う フルスクリーン画面を作成するには、まずシステム変数の dispx と dispy を使って、現在のディスプレイ解像度を調べ、 そして bgscr 命令を使い、そのサイズで画面を初期化。 ax=dispx:ay=dispy bgscr 2,ax,ay,0 ;ID2にフルスクリーン画面を初期化。 上の例では、ウインドゥID2としてフルスクリーンのウインドゥを表示します。 HSPを使ってフルスクリーン画面に切り替えたソフトを作る場合には、フルスクリーンモードや screen命令による通常ウインドゥを使わずに、bgscr命令で新しいウインドゥを全画面に表示するといいでしょう。 タスクバーを消すためにはちょっとコツがいります。chgdisp命令を使うと、全画面の再描画が行なわれてタスクバーも描かれてしまいます。そこで、chgdisp命令の後にbgscr命令で全画面サイズのウインドゥを作成します。 bgscr命令は、枠やタイトルバーが一切ないウインドゥを作成し、すべてのウインドゥよりも手前に表示します。これでタスクバーも隠れるはずです。 chgdisp 1 bgscr 2,640,480,0 cls 4 color 255,255,255 mes "TEST SCREEN..." mes "[ALT]+[F4]で終了します" stop

■ boxf p1,p2,p3,p4 画面を塗りつぶす p1=左上のX座標 p2=左上のY座標 p3=右下のX座標 p4=右下のY座標

■ button "",*label ""の中はボタン上の文字名

■ bload "filename",p1,p2,p3 バッファにファイルをロード "filename" : ロードするファイル名 p1=変数 : 変数名 p2=64〜 : ロードされるサイズ(Byte単位) p3=0〜(-1): ファイルのオフセット ファイルの内容をメモリバッファに読み込みます。通常は、alloc命令で確保したメモリバッファに対して使用しますが、 通常の変数や、配列変数の内容に対して使うこともできます。通常は、p2のバッファサイズを指定しなくても、自動的に変数 バッファのサイズに合わせてデフォルトが設定されます。 また、bload命令実行後は、システム変数strsizeに読み込んだデータのサイズが反映されます。 ファイルのオフセット値を指定すると、その値だけファイルの先頭からずらした 場所からが操作の対象になります。たとえば、bload命令でオフセット値を100に 指定すると、通常はファイルの先頭からデータをメモリに読み込むところを、 先頭から100バイト過ぎた場所(100バイトスキップして)からメモリに読み込まれます。

■ cls p1 p1=0・・・白 p1=4・・・黒 画面の初期化

■ color p1,p2,p3 p1=赤色 p2=緑色 p3=青色 0,0,0=黒色 255,255,255=白色

■ cnt システム関数 主にrepeatと一緒に使い0から    順に自動的に値を入れていく

■ dim p1,p2 配列変数  変数の集まりを変数に置く p1=集まったもの全体の変数名 p2=集団に入れる変数の数 備考)p1=atumari,p2=10 とすると atumariの中に10個の変数が含まれるということ

■ #define p1,p2 新規命令の登録 p1=新規名称、p2=元名称 #define pr print ; pr命令はprint命令と同じになる 元名称で指定された命令・数値・記号を新規名称で指定された 名前でも使えるようにコンパイラに登録をします。

■ dup 変数名1 , 変数名2 変数のクローンを作成 変数名1 : クローンを作成する変数名 変数名2 : クローン元の変数名 dup命令は、変数名1に変数名2で指定した変数の機能をコピーします。 以降は、変数名1を変数名2とまったく同じように使うことができます。 この命令が使われる場面は、たとえば、 dup tmp , a.15 のようにすることで、配列変数aの要素15だけをtmpという変数がまったく 同じように使えるようになります。a.15などの配列変数を何個所も参照 している場所があると、いちいち書くよりもtmpという単純な変数として 記述できた方が便利になります。このほか、色々な場面で使うことのでき る命令ですが、そのぶんプログラムを他の人が読みにくくなる可能性も あるので注意してください。

■ end プログラムを終了させる

■ else 主にifとともに使い「そうでないなら」を表す if x!5 :end :else :mes "違う"見たいな感じ if 条件式 { 処理1 処理2 処理3 }else{ 満たさないときの処理 }

■ exist "filename" ファイルのサイズ取得 "filename" : サイズを調べるファイルの名前 "filename"で指定したファイルが存在するかをチェックして、 そのファイルサイズを取得します。exist命令が実行されると、 システム変数strsizeに結果が反映されます。 ファイルが存在する場合は、そのファイルサイズがstrsizeに 代入されます。もしファイルが存在しなかった場合は、-1がstrsizeに代入されます。

■ font "フォント",p1,p2 フォント=MS 明朗 p1=文字の大きさ p2=文字のスタイル 0 通常 1 太文字 2 斜体  4 下線 8 打ち消し線 備考)2+4=6は下線が引いてある斜体 このせいで飛び飛びの値をとる

■ gsel p1,p2 画像を表示させる場所を指定 主にbufferと 一緒に使う p1=画像のコピー先の指定。0なら本画面 p2=コピーした後のウィンドウの表示方法  0 ウィンドウを指定する  1 ウィンドウをアクティブにする 備考)普通流れの中では1を使う

■ gmode p1,,,p4 コピーモードを指定 p1=画像コピーモード 0 通常コピー 1 高速コピー 2 透明コピー 3 半透明コピー 備考)p2、p3はgcopyとかぶるので略 p4=3の時の透過率(0〜255)

■ gcopy p1,p2,p3,p4,p5 画像をコピーする p1=コピー元のウィンドウID p2=コピー元の左上 X p3=コピー元の左上 Y p4=コピーする大きさ X p5=コピーする大きさ Y 備考)p4,p5はgmodeのp2,p3と同じ

■ gettime p1,p2 日付、時刻を取得 p1=変数(適当でいい) p2=0は年、1は月、2は曜日、3は日 4は時、5は分、6は秒、7はミリ秒 gettime xx,0 mes "今日は"+xx+"年です"

■ gzoom p1,p2,p3,p4,p5,p6,p7 変倍してコピーするp1,p2が変倍の大きさ

■ if

■ int 変数名 変数を数値型にする 変数の型を変更しても、できる限りその内容を保持しようとします。 "123"という文字列を含んだ変数を数値型に変更すると、123という数値になります。 int a は変数aを数値型に設定します。

■ instr p1,p2,"string",p3 文字列の検索をする p1=変数名 : 検索の結果が代入される変数名 p2=変数名 : 検索される文字列が格納されている文字列型変数名 "string" : 検索する文字列 p3=0〜(0) : 検索を始めるインデックス p2で指定した文字列型変数の中に、"string"で指定した文字列が あるかどうか調べて、p1で指定した変数にインデックスを代入 します。 指定した文字列が見つかった場合には、p1で指定された変数に インデックスが代入されます。これは、文字列の始まり1文字目を0として、 1,2,3...と順番に増えていくものです(strmid命令で指定するインデックス と同様です)。1から始まりではないので注意してください。 (p3を指定した場合、p1に代入されるインデックスは、p3を起点(0)とするものになります。) もし、指定した文字列が見つからなかった場合には-1が代入されます。 p3で調べ始めるインデックスを指定することができます。指定を省略 した場合は、最初(0)からになります。

■ #include "p1.as" asファイルの読み込み

■ input p1,p2,p3,p4 インプットボックスの作成 p1=変数(a,b,y,zなど・・) p2=横の長さ p3=縦の長さ p4=文字数 mes "文字を入力してください" a="" input a button "OK",*ok stop *ok mes "内容は "+a stop nputという命令で入力される場所ができます。 この場合aという変数に、文字が入るようになっています。 ちなみにa=""というのは、aという変数には文字をいれる というときに、このように書きます。数字を入れる場合は、このような作業 はいりません。 mes "電話番号を入力してください(携帯など不可)" mes "例 0312345678" a="" input a,100,25,10 button "OK",*ok stop *ok mes "確認: "+a stop

■ loop repeat命令の最後に使う一回目終わったら また上に戻って2回目のようにp1回だけ繰り返す

■ mes "コメント" メッセージを表示する

■ noteget p1,p2 指定行を読み込み p1=変数 : 読み出し先の変数名 p2=0〜(0) : 読み出すインデックス メモリノートパッド内の、p1で指定したインデックスの内容をp1で指定された変数に代入します。 メモリノートパッド内の任意の行にある内容を読み出すことができます。 インデックスは0から始まるので注意してください。 p1で指定する変数には、読み出すのに十分なバッファを確保するのを忘れないでください。 また、p1の変数は強制的に文字列型に変更されます。 メモリノートパッド命令(noteget,noteadd,notedel,notemax)を使用するためにはは、 最初にnotesel命令で対象となるバッファを設定しなければなりません。

■ notemax p1 最大行数取得 p1=変数名 : 最大行を読み出す先の変数名 現在、対象となっているメモリノートパッド全体の行数を調べ、p1で指定した変数に代入します。 全体の行数とは、つまりメモリノートパッド内にある要素の数です。 「APPLE」「ORANGE」「GRAPE」という行がある場合には、3になります。 この場合、インデックスは0〜2までになります。 notemax命令は、複数行の文字列ですべての行の処理を行ないたい場合などに使用します。 メモリノートパッド命令(noteget,noteadd,notedel,notemax)を使用するためにはは、 最初にnotesel命令で対象となるバッファを設定しなければなりません。

■ notesel p1 対象バッファ指定 p1=変数 : バッファを割り当てた変数名 p1で指定した変数をメモリノートパッド命令のバッファに設定します。 p1で指定した変数は、強制的に文字列型に変更されます。 他のメモリノートパッド命令(noteget,noteadd,notedel,notemax)を使用するためにはは、 最初にnotesel命令で対象となるバッファを設定しなければなりません。

■ objsend p1,p2,p3,p4,p5 オブジェクトにメッセージを送る p1=0〜(0) : オブジェクトID指定 p2=0〜(0) : オブジェクトに送るWin32メッセージの種類 p3=0〜65535(0) : オブジェクトに送るパラメータ(wParam) p4=変数 : パラメータの受け渡しに使用する変数名(lParam) p5=0〜(0) : lParamパラメータのタイプ

■ objmode p1 p1=1:HSP標準フォント 2:デフォルトGUIフォント 3:font命令で指定されたフォント 例)font "MS ゴシック",15,0 : objmode 2 など・・

■ print "コメント" メッセージを表示する

■ pos x,y 描画する時、文字を表示するときなどの座標を指定

■ picload "画像.bmp",p1,p2,p3 画像を読み込んで表示させる p1=画像ロードモード 0 ウインドウを画像の大きさで初期化   してロード 1 現在の画面上にロード p2=画像の左上のX座標 p3=画像の左上のY座標

■ pset p1,p2 指定した場所に1ドットの点 p1=X座標 p2=Y座標 備考)文字を書くときとかに使う

■ peek p1,p2,p3 p1=数値化した文字 p2=取り出しもとの変数 p3=p2の変数の何文字目を取り出すのか  moto="a" peek suu,moto,0 ; 変数motoの0バイト目を数値化し変数suuに入れる mes suu stop

■ poke p1,p2,p3 バッファに1byte書き込み p1=変数 : バッファを割り当てた変数名 p2=0〜 : バッファのインデックス(Byte単位) p3=0〜255 : バッファに書き込む値 または 文字列(Byte単位) メモリ上のバッファの任意の場所に値を書き込みます。 p1で指定した変数のバッファ上で、p2で指定したインデックスの場所に p3の値を書き込みます。 値は0〜255までの1バイト値になります。 p3で文字列または、文字列型変数を指定した場合には、 文字列の内容がすべてバッファに書き込まれます。

■ repeat p1,p2 p1=繰り返す処理回数を数字で指定 p2=初期カウンタ数 例: repeat 10,5 mes cnt loop stop 0からではなく5からカウントを開始し 10回繰り返す 5〜14

■ redraw p1 描画の更新 0=2 再描画を抑える 描画されない   1  描画の表示

■ randomize 乱数パターンの初期化

■ rnd p1,p2 乱数発生 p1=変数 : 読み込むための変数 p2=1〜32768 : 乱数の最大値 乱数を発生させて変数に代入します。 p2で乱数の範囲を指定します。0〜p2の間の値が範囲になります。 p2の値は範囲に含まれません。たとえば、 rnd a,10 は、変数aに、0〜9までの乱数を代入します。 rnd命令は、プログラム起動してからは一定のパターンで乱数を発生させます。 乱数のパターンを一定でないものにする場合は、randomize命令を使用してください。

■ sysfont ,p1 フォントをデフォルトに戻す p1は、通常=0以外はめったに使わない

■ stop プログラムを中断させる

■ screen p1,p2,p3,p4,p5,p6,p7,p8 画面を初期化する。この命令で初期化されたウインドウが 実際ゲームをする画面となることが多い p1=ウインドウID、0が実際の画面,2〜が仮想画面 p2=画面のサイズ X p3=画面のサイズ Y p4=フルカラーなら0、256色なら1 p5=デスクトップ上でのウィンドウの位置 X p6=デスクトップ上でのウィンドウの位置 Y  備考)p5,p6はwidth命令にかかわる P7=ウィンドウのサイズ X P8=ウィンドウのサイズ Y

■ stick p1,p2,p3 キー番号を取得する p1=変数名 p2=取得した全てのキーの番号の合計  これによって押し続けが可能になる p3=1は非アクティブ時に無効 カーソル上 2 カーソル下 8 カーソル左 1 カーソル右 4 スペース  16 Enter    32 Ctrl 64 ESC 128 マウスの左 256 マウスの右 512 TAB   1024

■ str 変数名,p1 変数を文字列型にする 変数名 : 対象となる変数名 p1 : 変換のオプション 変数の型を変更する場合に、それまで保持されていた数値を文字列に変換します。 たとえば、123という数値を含んだ変数を文字列型に変更すると、"123"という文字列に なります。すでに文字列型の変数を指定した場合には、何もしません。 p1の変換モードスイッチを指定することにより、数値を文字列に変換する際の方法を 指定することができます。 1〜15 : 1〜15ケタの0を含めた10進数に変換 16〜31 : 1〜15ケタの0を含めた16進数に変換 p1が省略されているか0の場合は、通常の10進数に変換されます。 p1に1〜15の数値を指定すると、その桁数で0を含めた形で変換します。たとえば、 123という数値をp1=5で変換すると、"00123"という文字列になります。 また、p1で指定した桁数に16を足して指定すると16進数に変換されます。 256という数値をp1=5+16で変換すると、"00100"という文字列になります。 str a,5 は変数aを0を含めた5文字の数値を保持する文字列型に変換します。

■ strlen p1,p2 文字列の長さを調べる p1=変数 : 文字列の長さを読み出す先の変数名 p2=変数 : 文字列の長さを調べたい文字列型の変数名 p2で指定された文字列型変数が持っている文字列の長さをp1に代入します。 文字列が日本語の全角だった場合は、1文字でも2文字分に計算されます。

■ strmid p1,p2,p3,p4 文字列の一部を取り出す p1=変数名 : 取り出した文字列を格納する変数名 p2=変数名 : 取り出すもとの文字列が格納されている変数名 p3=0〜(0) : 取り出し始めのインデックス p4=0〜(0) : 取り出す文字数 p2で指定した文字列型変数の中から、p3,p4で指定した条件で 文字を取り出し、p1で指定された変数に代入します。 p3で取り出し始めるインデックスを指定します。これは、文字列の 始まり1文字目を0として、1,2,3...と順番に増えていくものです。 1から始まりではないので注意してください。 p4で取り出す文字数を指定します。実際に格納されている文字数 よりも多く指定した場合は、実際の文字数までが取り出されます。 また、p3に-1を指定すると文字列の右からp4で指定した文字数だけ 取り出します。

■ sndload "",p1,p2 サウンドを読み込む p1=読み込み番号 p2=読み込みモード(0は通常、1は無限、2は終了まで待つ、3,+16は無視

■ snd p1 sndloadで指定された番号を感知しサウンドを再生する

■ sndoff サウンドをとめる

■ sdim p1,p2,p3 配列変数 dimの文字バージョン  p1=集まったもの全体の変数名 p2=文字の数で最大は256文字 p3=集団に入れる変数の数 なおdim,sdimはp4としてさらに変数を追加することが可能 そのときはp1.0.0のように表す sdim a,64,5 ; 変数aは1次元の文字列型配列変数 a.0="あたらしい" a.1="ふるい"

■ tittle "題名" ウインドウの上に題名を表示

■ text p1 文字の表示スピードを調節する

■ wait p1 一定時間待つ(100=1秒) 備考)repeat〜loopを使うときに必ず入れる ないとウィンドウを閉じられなくなる

■ width p1,p2,p3,p4 screenで作られたウィンドウの大きさや位置を調節 p1=画面サイズ X p2=画面サイズ Y p3=デスクトップ上でのウィンドウの位置 X p4=デスクトップ上でのウィンドウの位置 Y 備考)p3,p4をscreenによって調節

■ chkbox 今回の場合は、文字数の入力制限ができます。inputの一版最後のパラメータが、それです。 その前の数字は。入力ボックスのサイズです チェックボックスを使う mes "好きなものはなんですか?(複数選択可)" chkbox "りんご",a chkbox "バナナ",b chkbox "みかん",c button "入力完了",*hantei stop *hantei mes "あなたは、" if a==1 : mes "りんご、" if b==1 : mes "バナナ、" if c==1 : mes "みかん、" mes "が好きです" stop

■ combox チェックされていれば、状態を表す変数は1になります ただ、ゲームなどに使用するには見栄えがよくありません。実行して、灰色の部分がオブジェクトの大きさなので、ボタンのところで使った、objsizeを使うことで表示部分を広くすることができます。 コンボボックスを使う data="男\n女\nオカマ\nオナベ" mes "あなたの性別は??" objsize 100 combox a,150,data button "入力完了",*hantei stop *hantei if a==0 : mes "男の方ですね" if a==1 : mes "女の方ですね" if a==2 : mes "オカマさんですか・・・" if a==3 : mes "オナベさんですか・・・" stop コンボボックスとは、プルダウンメニューのことです 表示されるデータは、"\n"で区切られるデータです。どれが選ばれたかは状態を表す変数に0から順に数字で表されます。 ほとんど、コンボボックスを使用するときは、幅が足りなくなるのでobjsizeで幅を広く指定しましょう また、下に伸びる長さも(ドット単位で)指定できるので必要に応じて調整してみてください。ちなみに今回は150でやってみました。 メッセージボックスを使う sdim data,32000 data="ここに、自由に文章を表示・書き込みができます。" mesbox data,400,200,1 stop 単純に、文字を表示する窓を作るものです。 今回は、書き換え可能な窓を作りましたが、文字を表示するだけのものも作れます。 今回のを利用すると、簡単なテキストエディタができます。 最初の一行は、扱える文字の数(容量)を指定したものです。指定をしないと64文字分(日本語だとその半分)しか扱うことはできません。しかし、普通は32000byteも使うことはめったにないのでしょうが、可能性が0ではないので・・・ま、作っているうちにいろいろな不具合に出くわすでしょうけど、それも勉強です(あ、逃げた(^^;)

セーブに使用する命令は ■bsaveですね。 bsave filename,p2,p3 failname =ここはファイルネームを指定します。拡張子はご自由に。 p1    =保存する数字や文字が入っている変数 p2    =保存するファイルのサイズ。 p3    =オフセット値 p3のオフセット値についてご説明。 p3ではファイルの先頭から任意のバイト数だけずらして保存する場合に使用します。 例えば、「a.txt」のファイルの内容が「あいうえお」と有った場合。 a="きくけこ" basve "a.txt",a,2 とすると「a.txt」のファイルの内容が「あきくけこ」と最初の2バイトを飛ばして2バイト目から 書き込み保存します。 ※注意・・・全角文字は1文字に2バイト必要なのでオフセット値を2に指定しています。 次に下記のスクリプトを実行してみましょう。 a=49 bsave "a.txt",a 上記のスクリプトを実行してみると、HSPのあるフォルダ内に「a.txt」というファイルが作成されます。 拡張子を「txt」にしているのでとりあえず「メモ帳」で開いてみると数字の「1」がメモ帳に記載されて いるはずです。 何故?数字の49を保存したはずなのに・・・と思うかもしれませんが、これで良いのです。 数字の「1」の文字コードが49なのです。 この現象は次のロードでご説明致します。 --------------------------------------------------------------------------------

次にロードです。ロードに使用する命令は「bload」です。 ■bload filename,p1,p2,p3 failname =ここはファイルネームを指定します。拡張子はご自由に。 p1    =保存する数字や文字が入っている変数 p2    =保存するファイルのサイズ。 p3    =オフセット値 パラメーターは「bload」と一緒ですね。 p3のオフセット値については「bsave」と同じ考えで指定したバイト数分だけずらして読み込む訳ですね。 ここで一つ陥りやすいミスについて検証してみます。 a="ABCDE" bsave "a.txt",a bload "a.txt",b mes b stop 上記のスクリプトでは「a.txt」と言うファイルに「ABCDE」という文字を保存しそれを直ぐに変数「b」へ 読み込んで表示させています。 結果は? 「1145258561」という数字が表示されていませんか? アルファベットを保存したのに・・・ この現象は、「bload」で読み込む祭の変数に問題があります。 ロードするファイルが数値の場合はこれでも良いのですが、文字列の場合は読み込みに指定する変数 は先に文字列用の変数に指定する必要があります。 a="ABCDE" bsave "a.txt",a str b bload "a.txt",b mes b stop どですか?今度はちゃんと「ABCDE」と表示されたと思います。 と、言うことで読み込みをする際には読み込むファイルが文字列型か数値型かをしっかり確認する必要があります。

Copyright(C) Wakabagari. All rights reserved.