HSP3プログラミングガイダインス HSP3プログラミング入門 Hot Soup Processor 3 Programming Guide Windows95/98/NT/2000/Me/XP 対応 Onion software : おにたま 作成・編集 : さくら Copyright 1997-2006 onion software 最終更新日 : 2006年04月17日 0 目次 1. はじめに 2. HSPの特徴 3. HSPの活用範囲 4. 製作の経緯 5. HSPのバージョン現状 6. 作者より 7. HSPの入手方法 8. HSPのインストール手順 9. HSPのアンインストール手順 10. HSPのファイル構成 11. Windows設定上の注意 12, HSPの動作環境 13. HSPの開発環境および周辺ツール 14. HSPスクリプトエディタの概要 15. HSPヘルプブラウザの概要 16. HSPサンプルビューアーの概要 17. HSPTVブラウザの概要 18. HSP統合マニュアルについて 19. HSPデモンストレーションの実行 20. HSPスクリプトエディタの使い方 21. HSPプログラム作成手順 22. ヘルプブラウザの使い方 23. HSP命令や関数のカテゴリ 24. 最初に覚える基本命令 25. 文字を表示する 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 表示位置やフォントを変更 color命令による色の変更 画像ファイルを読み込んで表示 buttonオブジェクトを使う 外部ファイルの実行 簡単なランチャーの作成 mesboxオブジェクトを使う テキストファイルの読み書き ファイルを開く、保存ダイアログ 簡単なテキストエディタの作成 音を鳴らす 数値型変数と文字列型変数 配列について 繰り返し命令の使い方 条件判定命令の使い方 画面を作成する バッファを利用する 乱数を使ってランダムに表示 画像を動かす 当たりを判定する シューティングゲームのスクリプト 日付や時間の表示 実行ファイルの作成方法 関連するイベント 最後に Copyright 1997-2006 onion software 1 はじめに HSPとは? HSP (Hot Soup Processor) は、Microsoft Windows上で手軽に使えるス クリプト言語システムです。テキストによるスクリプトを書くだけで、誰にでも 簡単に、ウィンドウズ上で動作する画像を使ったゲームプログラム、スクリン セーバー、ツールや実用ソフトなどのアプリケーションを構築することができ ます。 HSP3プログラミング入門について このファイルは、Microsoft Power Point 2000にて作成しています。HSP の プログラミング入門として、これから、HSP を始める人や、すでにダウンロー ドして、インストールはしたけど゛、どこから、始めて良いのかわからない人た ちを対象として、重要となるポイントに絞って説明しています。 尚、この入門を終えたら、HSPのダウンロードアーカイブに付属の各種説明 ファイルやプログラミングマニュアルを一読することをお勧めします。 それでは、誰でも手軽に楽しめるHSPの世界へご案内いたします。 Copyright 1997-2006 onion software 2 HSPの特徴 HSPには、次ような特徴があります。 すべて無料! 簡単に覚えられる強力な命令セットとスクリプトエディタを付属 高速な動作をする中間言語処理インタプリタを搭載 作ったプログラムやデータを一括して実行ファイルに変換可能 作ったプログラムは自由に再配布が可能、ライセンス料も不要 拡張プラグイン・モジュールにより数多くの機能を追加可能 7年以上に渡る多くのユーザー資産と使用実績 詳細なマニュアルとリファレンスヘルプシステムを装備 プログラミング初心者にも敷居の低いシンプル設計と操作 インタプリタならではの豊富なデバッグ支援システムを装備 Copyright 1997-2006 onion software 3 HSPの活用範囲 HSPは、あなたのアイデア次第でいろんな場面で活用できます。 簡単! ビジュアルノベルから本格的な3Dシューティングまで様々なジャンル のゲーム作成に デスクトップアクセサリ、スクリーンセーバーの作成に 画面レイアウトの試作、画像データの変換などの即席ツールに プログラムランチャー、メニュー、CG集、♪音楽集など の メディアブラウザに その他、本格的なアプリケーションも開発可能 HSPは、ゲームをはじめとしたホビーから実用ソフトまで幅広く活用可能です! Copyright 1997-2006 onion software 4 製作の経緯 1994年から開発が開始され、1996年以降フリーウェアとし て公開 手軽に画像や音声を扱う開発環境を構築するため PC9801(MS-DOS)、Windows3.1(16bit)、Windows95(32bit) 版を製作 HSPの系譜 1994年 1996年 (1.0~1.2f) light Soup processor Hot Soup Processor 1997年~2004年 (2.0~2.61) 2005年~2006年 (3.0~) Copyright 1997-2006 onion software 5 HSPのバージョン現状 ・最新の安定版は、HSP3.0a (2006年3月末 現在) ・現在HSP3.1をβテスト中。 ●2006年 2月~5月 HSP3.1β版を一般に公開 ●2006年 6月~7月 HSP3.1RC版を一般に公開 ・Linux版、MacOS版(OS9、OSX) Java版ランタイムを公開中 HSPは不定期更新のため最新版に関す る情報は、HSP公式サイトで確認して下さ い。 Copyright 1997-2006 onion software 6 作者より HSPは、特に新しい言語体系をしているわけではありません。例えば、大規 模なソフトウェアを開発するのであれば、他の言語が向いていることもあるで しょう。HSPが目指したものは、オールドスタイルなパソコンシステムです。 昔のパソコンは現在のものと比べてメモリもCPUスピードも圧倒的に貧弱で すが、スイッチを入れてすぐに使えるようになったし、BASICでRUNと打てば すぐに結果を見ることができました。そんな手軽で気楽なシステムが現在のパ ソコンでは失われていっているような気がします。 ここには、オブジェクト指向など先端の言語テクノロジーとは異なる、思った 順番に書いてもいいという気軽さがあります。そして、小規模な開発や初心者 のプログラミング学習には、それもまた一つの道かなと思います。 最初は小さなソフトだったHSPに、ここまで長く関われたのは、多くのユー ザーの皆さんの力添えがあったからだと思います。 一人でも多くの方が、楽しくHot Soup Processorに触れてもらえれば幸い です。 おにたま Copyright 1997-2006 onion software 7 HSPの入手方法 HSPは、フリーウェアです。下記の方法で入手できます。 大手ダウンロードサイトやHSP公式サイトから入手する場合は、インターネットが 利用できるPC環境が必要です。 ベクターから入手 VectorのプログラミングカテゴリのHSPよりダウンロード http://www.vector.co.jp/soft/win95/prog/se080832.html 公式サイトから入手 HSP version3.x の紹介ページからダウンロード 推奨 http://hsp.tv/make/hsp3.html 書籍等から入手 HSPの書籍付属CD-ROM内収録ファイルから入手 「HSP3プログラミング入門」 (秀和システム) Copyright 1997-2006 onion software 8 HSPのインストール手順 HSPを入手したら、下記の手順でインストールして下さい。 ベクターから入手 公式サイトから入手 インストーラ付き 書籍等から入手 インストーラなし 任意のフォルダを作成 インストーラの画面の 指示に従って実行 解凍ツールで展開 HSPスクリプトエディタ(hsed3.exe)を起動して確認 推奨 : できるだけ最新バージョンを公式サイトから入手して下さい。 Copyright 1997-2006 onion software 9 HSPのアンインストール手順 HSPのアンインストールは、下記の手順で行なって下さい。 標準のデフォルトでインストールされている場合は、そのフォルダをアンインス トールします。インストールに別途、任意のフォルダを作成して、インストールした 場合は、そのフォルダがアンインストールの対象となります。 ここでは、標準のデフォルトで作成されたフォルダを対象として説明しています。 他のフォルダの場合は、読み替えて下さい。 標準のデフォルトインストールフォルダ : c:¥program files¥hsp30 方法-1 1.「スタートメニュー 」 から 「Hot Soup Processor 3.x」 を選択 2.「アンインストール」 を選択して実行する。 方法-2 1.「コントロールパネル」 から 「プログラムの追加と削除」 を選択 2. 「Hot Soup Processor 3.x」 を選択して実行する。 どちらの場合でも、インストールされたファイル、およびショートカットをすべて削除します。 Copyright 1997-2006 onion software 10 HSPのファイル構成 HSPをインストールした場合の主要ファイル構成は、下記のような構成となって います。フォルダ名および主要ファイルの意味を、簡単に説明しています。 名前 common docs hsphelp hsptv sample hgimg.dll hsed3.exe hsed3le.exe hsp3.exe hspcmp.dll hspda.dll hspdx.dll hspext.dll hsprt hspsock.dll index.html readme.txt start.ax 種類 Folder Folder Folder Folder Folder Dll File EXE File EXE File EXE File Dll File Dll File Dll File Dll File RuntimeFile Dll File html File TXT File Object File 説 明 共通のヘッダーファイルが格納されています。 HSPの各種ドキュメントが格納されています。 HSPのHTML形式ヘルプとhs形式のヘルプ作成ツールがあります。 HSPTVの各種定義ファイルや画像ファイルが格納されています。 各種サンプルスクリプトが格納されています。 2D・3Dグラフィック表示をサポートする拡張プラグインです。 スクリプトエディタ本体。編集やデバッグ実行する開発環境です。 従来タイプのスクリプトエディタです。(SDI方式エディタ) HSP3オブジェクトファイルの実行等を行なうエンジンです。 HSPのコンパイラエンジンです。呼び出し方法が公開されています。 各種データへのアクセス機能を提供する拡張プラグインです。 DirectXを使用したハイレベルなソフト開発支援拡張プラグインです。 レジストリ操作などを行なう多機能拡張プラグインです。 HSPランタイムです。コンパイル時exeファイルに連結されます。 TCP/IPソケット通信の機能を提供する拡張プラグインです。 HSPマニュアル総合インデックスのHTMLファイルです。 一番最初にお読み下さい。全般的なことが簡単に書かれています。 HSP中間オブジェクトファイルです。 11 Windows設定上の注意 HSPのマニュアルなどで使われているファイル名の形式は、「拡張子あり」の状態 で表示されているものを基準にしています。ファイル名を確認する場合は、 Windowsの設定を以下のように行なって、正しく拡張子が表示される状態にしてお いて下さい。 フォルダオプション画面 ●ファイル名拡張子表示設定方法 ① 「エクスプローラ」から「ツール」メニューを選択する。 ② 「フォルダオプション」から「表示」タブを選択する。 ③ 詳細設定で、「登録されているファイルの拡張子は表示 しない」のチエックボックスのチエックが外れていることを 確認して下さい。(チエックされていたら、チエックを外し て下さい) ④ 最後にOKすれば、確認と設定は終了です。 Windows98やMeの場合は、「表示」メニューの「オプション」で設定画面を表示 させることができます。 Copyright 1997-2006 onion software 12 HSPの動作環境 HSPは、つぎのような環境で動作致します。 OS : Microsoft Windows98/Me/2000/XP (NT4.0以降) 上記の環境であれば、その他、特に制限はありませんが、Windows95で動作 させるには、下記のような条件が必要となります。(条件によっては動作不可) Microsoft Windows95上で動作させるためには、Internet Explorer4.0 以降がインストールされている必要があります。640×480以上の解像度と256色 以上の表示が可能なディスプレイサイズが必要となります。必要なメモリ量は表 示する画像やサイズなどで変化します。 HSPは、単体で動作します。特別なDLLやランタイム等をインストールする必要 は一切ありません。 お願い事 項 Windows95を利用している人も少なくなっていると思いますが、HSP3はCOMを 始めてとして、大幅な拡張をしているため、Windows95では使える機能が制約さ れてしまいます。できれば、動作制限の少ない旧バージョンのHSP2.61の利用を お勧めします。 Copyright 1997-2006 onion software 13 HSPの開発環境および周辺ツール HSPには、スクリプトを編集したり、実行したりする開発に必要な環境が標準で 提供されています。ヘルプシステムやマニュアルも充実しています。 ●HSPスクリプトエディタ ・HSPスクリプトエディタの概要参照 ●HSPヘルプブラウザ ・HSPヘルプブラウザの概要参照 ●HSPサンプルビュー アー ・HSPサンプルビューアーの概要参照 ●HSPTVブラウザ ・HSPTVブラウザの概要参照 ●HSP統合マニュアル ・HSP統合マニュアルについて参照 Copyright 1997-2006 onion software 14 HSPスクリプトエディタの概要 HSPスクリプトエディタとは? HSPのスクリプトの編集やデバッグを行なうため の開発環境です。高機能なテキストエディタを ベースとして、高速なコンパイル機能を実装して います。 特長 編集サイズに制限なし、無限のアンドウ可能 予約語やキーワードによる色分け表示が可能 ルーラーや行番号、背景色等のカスタマイズが可能 実行ファイル自動作成機能を実装 デバッグウィンドウによるデバッグ支援を強化 外部ファイルとの連携可能な拡張マクロ機能を実装 Copyright 1997-2006 onion software 15 HSPヘルプブラウザの概要 HSPヘルプブラウザとは? HSPスクリプトの編集時にスクリプトエディタ内 のキーワードにカーソルを合わせて、F1キーを 押すと、該当する命令や関数の詳細な説明を表 示します。単独での利用も可能です。 特長 独自のテキストDBエンジンによる高速検索 キーワードの追加や変更時の自動更新機能を実装 プラグイン/モジュール、グループカテゴリによる検索可能 HSPスクリプトエディタとの連携による高速検索 特定の単語によるあいまい検索が可能 ユーザーが自由にヘルプファイルを追加可能 Copyright 1997-2006 onion software 16 HSPサンプルビューアーの概要 HSPサンプルビューワーと は? HSPのsampleフォルダに収録されている豊富 なサンプルスクリプトをフォルダ単位に取り込ん で分類しています。サンプルの編集や実行がこ のビューワーを通して実行できます。 特長 テンプレートとなるような豊富なサンプルを提供 カテゴリ別に分類されたサンプルを選択して編集・実行 HSP固定フォルダからの取り込みによる自動更新 スクリプトエディタとの連携による即時編集・加工が可能 ワンクリックによるタイムリーなビューワー機能 ユーザーが独自に追加したサンプルも表示可能 Copyright 1997-2006 onion software 17 HSPTVブラウザの概要 HSPTVブラウザとは? HSPの公式サイトと通信してHSPに関する各種 情報の配信を行ないます。TVのチャンネルを切 替えるようにして、HSPTVからのお知らせや ゲームプログラム等が実行できます。 特長 公式サイトとの通信による各種サービスを提供 ネットワーク接続時に一括更新して常に最新状態を保持 ゲームプログラム等の配信によるワンクリック実行可能 チャンネルメニューの拡張によるサービス機能の充実(予定) ブラウザ機能によるHSPTVサイトとの連携 ユーザーが自由にカスタマイズできるスキン機能を実装 Copyright 1997-2006 onion software 18 HSP統合マニュアルについて HSPには、プログラムを学習したり開発するのに必要な各種マニュアルが充実 しています。レベルに応じた内容で豊富な資料の中から参照できます。 アップデートガイド HSPTVブラウザ マニュアル プログラミング マニュアル2 システムドキュメント インストールガイド 拡張プラグイン リファレンス 初心者のための HSP入門 統合インデックス HSP3更新履歴 モジュール機能 ガイド HSP HELP Browser マニュアル HSP3文字列 のひみつ HSP HELP Browser hs File 標準仕様 Copyright 1997-2006 onion software 19 HSPデモンストレーションの実行 HSPのデモンストレーションを実行して見ましょう。 HSPをインストールしたフォルダの直下にある hsp3demo.exe という実行形式ファイルがデモ用のファイルです。 起動時のデモ画面 ビジュアルノベルや プレゼンテーションに 利用できる高度な機能を 提供しています。 デモのソース付属 HSPのデモンストレーション自身もHSPにて作成されています。 軽快なBGMと画像の重ね合わせやワイプ処理、さらに半透明 ブレンドなどHSPが提供する強力な命令が使われています。 ソーススクリプトもsampleフォルダ内のdemoというフォルダに 一式収録されています。 Copyright 1997-2006 onion software 20 HSPスクリプトエディタの使い方 HSPのスクリプトエディタを起動して見ましょう。 HSPをインストールしたフォルダの直下にある hsed3.exe という実行形式ファイルがスクリプトエディタです。 スクリプトエディタの特徴については、概要の ところで説明していますが、高機能なテキストエ ディタをベースとしたタブ形式のエディタです。 スクリプトとは、プログラムのことですが、HSPの世界では、作業の順序を書い たテキストのことを言います。 新規作成の場合 ① スクリプトエディタを起動する。 ② HSPの文法規則に従って、スクリプト を書く。(命令にパラメータを与える) ③ F5キーを押して、実行確認する。 ④ エラーが出たら修正する。 ⑤ 名前をつけて保存する。 作成してあるものを編集する場合 ① ② ③ ④ ⑤ ⑥ スクリプトエディタを起動する。 編集対象スクリプトを読み込む。 スクリプトを修正する。 F5キーを押して、実行確認する。 エラーが出たら修正する。 上書き or 名前をつけて保存する。 Copyright 1997-2006 onion software 21 HSPプログラム作成手順 開始 スクリプトエディタ起動 プログラム作成 × 実行 (F5キー) 実行画面を閉じる デバッグ 完成 デバッグが完了したら、実行ファイルやス クリーンセーバーとして単独のファイルとし て作成することも可能です。 Copyright 1997-2006 onion software 22 ヘルプブラウザの使い方 HSPのヘルプブラウザを起動して見ましょう。 HSPをインストールしたフォルダの ¥hsphelp 内の helpman.exe という実行形式ファイルがヘルプブラウザです。 ヘルプブラウザは、単独で起動して利用できますが、一般的には、スクリプトエ ディタから、ワンキーヘルプという方式で起動させます。 スクリプトエディタと連動 瞬時に 該当する説 明が表示さ れる color F1キー colorという命令にカーソルキーを合わせてF1キーを押します。 Copyright 1997-2006 onion software 23 HSPの命令や関数のカテゴリ HSPの命令や関数のグループは、全部で24のカテゴリに分類されています。 1. COMオブジェクト操作関数 2. COMオブジェクト操作命令 3. HSPシステム制御命令 4. OSシステム制御命令 5. オブジェクト制御命令 6. システム変数 7. ファイル操作命令 8. プリプロセッサ命令 9. プログラム制御マクロ 10. プログラム制御命令 11. マルチメディア制御命令 12, メモリ管理関数 13. メモリ管理命令 14. 画面制御命令 15. 拡張ファイル操作命令 16. 拡張画面制御命令 17. 拡張入出力制御命令 18. 基本入出力関数 19. 基本入出力制御命令 20. 通信制御命令 21. 特殊代入命令 22. 標準定義マクロ 23. 文字列操作関数 24. 文字列操作命令 命令 (ステートメント) 命令とは、どのような処理をするのか を指示するするものでステートメントと 言います。一般的には戻り値を返しま せんが、HSPの場合は、システム変数 や指定した変数に値を返すことができ ます。 関数 (ファンクション) 関数とは、パラメータ式の中である値を もとに変換された値を得るために使用 します。関数を示す名前に続いてカッコ 内にパラメータを指定することで、結果 を返します。 Copyright 1997-2006 onion software 24 最初に覚える基本命令 これまで、HSPの導入から開発環境などについて説明してきましが、ここから、 いよいよ実際にプログラミングの作成となります。 最初に、次の10個の命令を覚えることにしましょう。これだけあれば、ちょっとし た実用的なアプリケーションを作成することができます。 mes pos color font objsize button boxf picload exec stop ウィンドウ内に、指定されたメッセージを表示 基本座標となるカレントポジションの座標を指定 メッセージ表示、描画などの色を指定した値に設定 mesおよびprint命令などで表示するテキスト書体の設定 ボタンなどを配置する時のオブジェクトの大きさを設定 カレントポジションにオブジェクトとして押しボタンを配置 画面上に、現在の描画色で矩形(四角形)を塗りつぶす 画像ファイルをロード 指定したファイル名のアプリケーションを実行 プログラムの中断 Copyright 1997-2006 onion software 25 文字を表示する まず、最初の第1歩は、画面に文字を表示して見ましょう! スクリプトエディタを起動して、下記の命令を入力して下さい。 mes ”Hot Soup Processor” 入力したら、F5キーを押してRunして見ます。 書式 : mes ”strings” ”strings” : 表示するメッセージ、または変数 命令の書き方 命令の書き方として、命令とパラメータの間は、半角スペースを一つ入れて下さい。 また、2つの命令をコロン 『: 』で区切って記述できます。(マルチステートメントと言う) 実行画面の左上(カレントポジション)に入力した文字が表示されます。 Hot Soup Processor 実行結果 Copyright 1997-2006 onion software 26 表示位置やフォントを変更 mes命令では指定したメッセージの表示のみを行ないますが、表示位置の設 定や文字(メッセージ)のサイズやフォントの指定が必要となります。 それでは、任意の指定位置に自由なフォントでサイズ等を指定して見ましょう。 ここで必要となる命令は、pos命令とfont命令です。 pos命令は、メッセージやオブジェクトの位置(カレントポジション)を指定します。 基準となる座標は、左上x=0,y=0であり、1ドット単位の指定となります。 xは水平座標、yは垂直座標を表しています。 font命令は、フォント名、フォントの大きさ、フォントのスタイルを指定します。 フォント名は、“MS 明朝”、“MS ゴシック”などのフォント名を直接指定します。 フォントの大きさはドット数に比例した論理サイズで指定します。 フォントスタイル スタイル 1 : 太文字 スタイル 2 : イタリック体 スタイル 4 : 下線 スタイル 8 : 打ち消し線 スタイル16 : アンチエイリアス pos 50,100 font ”MS 明朝”,30,1 mes ”こんにちは(^^)” フォントスタイルは、数値を合計することで複数のスタイルを同時に指定することも可能です。 Copyright 1997-2006 onion software 27 color命令による色の変更 文字に色を付けたり、描画などの色指定する場合は、 color命令を使います。 色の指定では、R,G,Bといった輝度で表現します。それぞれの輝度は、0が最も 暗く、255が最も明るくなります。 書式 : color p1,p2,p3 p1,p2,p3=0~255(0) : 色コード(R,G,Bの輝度) 色コードの指定例 色コード 設定される色 色の名前 color 0,0,0 黒 color 0,0,255 青 color 255,0,0 赤 color 255,0,255 color 0,255,0 実行結果 桃色 緑 color 0,255,255 水色 color 255,255,0 黄色 color 255,255,255 pos 10,100 font ”Arial”,60,0 color 255,0,0 mes ”Normal” Normal 白 Copyright 1997-2006 onion software 28 画像ファイルを読み込んで表示 HSPは、文字だけではなくて、色んなファイルを扱えます。ここでは画像の表示 方法について、説明します。画像の表示は非常に簡単で、picload命令を使いま す。ピクチャーをロード(読み込む)し表示するという命令です。スクリプトエディ タを起動して、下記の命令を入力して下さい。 picload ”hsp3ttl.jpg” 書式 : picload ”filename”,p1 ”filename” : ロードするファイル名 p1=0~1(0) : 画像ロードモード 画像ロードモード 実行結果 P1=0 : ウィンドウを初期化してロード P1=1 : 現在の画面の上にロード 表示位置の指定は、 pos命令で行ないます。 Copyright 1997-2006 onion software 29 buttonオブジェクトを使う オブジェクトとは、VBや他の処理系では、コントロールと呼ばれています。ボタン やメッセージボックスのことで、 HSPでは、総称してオブジェクト(コントロール) と呼んでいます。ここでは、最も利用価値の高いボタンオブジェクトについて説明 致します。ボタンを実装(表示)するには、 button命令を使います。 ボタン大きさは、 objsize命令を使います。 書式 : button goto/gosub ”name”,*label ”name” : ボタンの名前 *label : 押した時にジャンプするラベル名 objsize 150,32 button ”メッセージ”,*disp stop 実行結果 メッセージ HSP Programing *disp pos 10,60 mes ”HSP Programing” stop Copyright 1997-2006 onion software 30 外部ファイルの実行 HSPから、他の実行ファイルを起動して見ます。Windowsに付属のメモ帳やペイ ントといったソフトを実行するというサンプルを作って見ましょう。外部ファイルを 実行させる命令は、 exec命令を使います。 書式 : exec ”filename”,p1, ”command” ”filename” : 対象となるファイル名 P1=0~(0) : ファイル実行モード ”command” : コンテキストメニューの操作名 ファイル実行モード、コンテキストメニューの操作名は、ヘルプを参照願います。 スクリプトエディタを起動して、下記の命令を入力して下さい。 exec ”notepad”,0 実行結果 ※メモ帳が起動します! Copyright 1997-2006 onion software 31 簡単なランチャーの作成 ボタンや外部ファイル起動用の命令を使って簡単な『ランチャー』を作って見ます。 起動させるソフトは、Windows付属の電卓とメモ帳を使って見ましょう。 実行結果 color 0,0,255 pos 30,20 font ”MS ゴシック”,30,1 mes ”HSPランチャー” pos 30,60 objsize 100,32 button ”電卓”,*calc button ”メモ帳”,*pad button ”終了”,*owari stop 利用する命令 命令名 pos命令 font命令 mes命令 color命令 objsize命令 button命令 exec命令 stop命令 end命令 これまで、出てきていないend命令で すが、プログラムを終了させる命令です。 *calc exec ”calc” ,0 stop *pad exec ”notepad” ,0 stop *owari end Copyright 1997-2006 onion software 32 mesboxオブジェクトを使う メモ帳のように大量のテキストを入力たり、表示したりすることができるオブジェク トの代表格であるmesbox命令(オブジェクト)を使って見ましょう。 書式 : mesbox p1,p2,p3,p4,p5 P1=変数 P2,p3 P4=0~(1) P5=0~(-1) 指定するパラメータは 多いのですが、基本的 な使い方は、次のよう にします。 : 表示メッセージが代入された文字列型変数 : メッセージボックスのサイズ(ドット単位) : メッセージボックスのスタイル : 入力できる最大文字数 メッセージボックスのスタイル 0 : スクロール可能なエディトボックス (書換え不 可) 1 : スクロール可能なエディトボックス (書換え可 能) 4 : 横スクロールバー付きエディトボックス (書換え不 可) sdim buf,10000 ;変数bufに10,000byte分の文字列が記憶できるように確保する。 5 : 横スクロールバー付きエディトボックス (書換え可 mesbox buf,640,480,1 能) Copyright 1997-2006 onion software 33 テキストファイルの読み書き 大量のテキストファイルを読み込んだり、書き込みしたりするには、どうしたら良 いのでしょうか?テキストファイルを読み込む(ロード)、書き込む(セーブ)するに は、HSPでは、汎用命令として、 bload命令、 bsave命令というものが提供されて いますが、テキスト専用の操作命令としては、ノートパット系の命令の利用を推 奨しています。ここでは、ノートパット系の命令を使って見ることにします。 ・テキストファイル読み込み ノートパッド系命令 命令・関数名 notesel命令 noteload命令 notesave命令 notemax notesize noteinfo関数 noteget命令 noteadd命令 notedel命令 noteunsel命令 意 味 対象バッファ指定 対象バッファ読み込み 対象バッファ保存 メモリノートパッドの行数 (システム変数) メモリノートパッドの文字数 (システム変数) メモリノートパッド情報取得 指定行を読み込み 指定行の追加・変更 行の削除 対象バッファの復帰 sdim buf,10000 notesel buf noteload ”readme.txt” ・テキストファイル書き込み notesave ”readme.txt” ・指定行を読み込み noteget buf,5 ・指定行の追加・変更 noteadd ”abc” ,2 ・指定行の削除 notedel 2 Copyright 1997-2006 onion software 34 ファイルを開く、保存ダイアログ Windowsには、リソースとして多くのダイアログボックスを持っています。その中で、 色んなアプリケーションで良く使われるファイルを選択するダイアログを紹介致し ます。もちろん、 HSPから簡単に呼び出して利用できます。 書式 : dialog ”massage”,p1, ”option” P1=0~(0) : ダイアログのタイプ設定 ダイアログのタイプ タイプ 0 1 2 3 16 17 32 33 64 基本的な使い方 内 容 標準メッセージボックス+[OK]ボタン 警告メッセージボックス+[OK]ボタン 標準メッセージボックス+[はい][いいえ]ボタン 警告メッセージボックス+[はい][いいえ]ボタン ファイルOPEN(開く)ダイアログ ファイルSAVE(保存)ダイアログ カラー選択ダイアログ(固定色) カラー選択ダイアログ(RGBを自由に選択) 拡張ダイアログ ・ファイルOPENダイアログ dialog ”hsp” ,16 mes refstr ;確認 ・ファイルSAVEダイアログ dialog ”hsp” ,17 mes refstr ;確認 ※選択結果は、システム変数 refstrに返されます。 Copyright 1997-2006 onion software 35 簡単なテキストエディタの作成 テキスト作成の基本となる、簡単な『テキストエディタ』を作成して見ます。 サンプルスクリプト sdim buf,10000 pos 0,30 : mesbox buf,640,480,5 notesel buf objsize 80,26 pos 10,2 : button ”ロード”,*mload pos 90,2 : button ”セーブ”,*msave pos 170,2 : button ”終了”,*owari stop *mload dialog ”txt”,16 if stat=0 : stop noteload refstr objprm 0,buf stop *msave dialog ”txt”,17 if stat=0 : stop notesave refstr stop スクリプトの説明 mesbox命令とbutton命令を利用してエディタの 基本部分を構成します。文字列(テキスト)の 記憶保持領域として、buf変数を使い、10000バ イト分を確保すると同時に、操作対象バッファ をnotesel命令で指定します。ここまでが、準備 作業となります。 button命令には、機能として、 それぞれ、ロード、セーブ、終了を割り付けま す。ロードの場合は、*mloadというラベルがク リックされた時のジャンプ先となり、同じように *msave、*owariというようにします。*mloadで は、ファイルを開くダイアログを使い、テキスト ファイルを選択します。キャンセルの場合は、 システム変数stat=0となり、そこで中断されま す。ファイルが選択されたら、 noteload命令で 読み込みます。 objprm命令は、 mesbox命令 に変数bufの内容を反映させるためのものです。 *msaveでは、ファイル保存ダイアログを使って、 notesave命令でbufの内容を保存します。 条件判定( if文 )について、別項で説明いたし ます。 *owari end Copyright 1997-2006 onion software 36 音を鳴らす 音(Sound)を鳴らします。 HSPには、音声や音楽を扱うのに便利な命令が用意 されています。そのための命令が、mmload命令、 mmplay命令と mmstop命令で す。 HSPでは、簡単な命令でマルチメディアファイルの再生ができます。 命令 パラメータ 意 味 メディアファイル名 音声などのデータファイルを設定 mmload命令 メディアバッファID データを再生 mmplay命令 再生中のデータを停止 mmstop命令 メディアバッファIDとは、複数のファイルを予め指定しておく、0から始 まる数値を自由に指定することができます。 メディア 拡張子 ♪再生手順 PCMサウンド wav MIDI楽器 mid 圧縮音声 mp3 圧縮音声 wma 動画 avi 動画 mpg 動画 wmv CD なし mmload ”ファイル名”, メディアバッファID,モード mmplay メディアバッファID mmstop 0 : 指定したファイルは通常の再生を行なう。 1 : 指定したファイルは無限ループで再生を 行なう。 2 : 指定したファイルは再生終了まで待つ。 3 : 指定されたトラック以降を再生(CD) +16 : 対象ウィンドウ全体で再生(動画) mmload ”bgm1.mid”,0 mmload ”bgm2.mid”,1 mmplay 1 ; メディアバッファIDの1番を演奏 Copyright 1997-2006 onion software 37 数値型変数と文字列型変数 変数とは、数値や文字列を記憶させておくための入れ物です。 HSPでの、変数 の扱いとしては、一つの変数に数値や文字列を入れておくことができます。つま り、一番最後に代入されたものしか残りません。変数に代入されたものを区別す るために文字列が代入されたものは、文字列型変数と呼び、数値が代入された ものは、数値型変数と呼びます。さらに数値型変数の場合は、整数値が代入さ れたものを整数型変数とし、小数であれば、実数型変数と区別されます。 x = 150 ; Xという変数に150という数値を代入 y = 50 ; yという変数に50という数値を代入 pos x,y : mes ”HSP Programing!” 数値型変数 x = 150 ; Xという変数に150という数値を代入 y = 50 ; yという変数に50という数値を代入 moji = ”HSP Programing!” version = 3 pos x,y : mes moji+ ” HSP” +version 文字列型変数 文字列を変数に代入するには、ダブルコーテーションで囲みます。 HSPは、計算もできます! 数式が扱えます。数式とは、数字と変 数を計算式を織り交ぜて書くことがで きます。ただし、計算で気をつけなけれ ばならないことは、計算には優先順序 があることです。数学の計算ルールと ほぼ同じ優先順序で計算されます。 + 足し算 - 引き算 * 掛け算(×) / 割り算(÷) 計算で使う 記号 Copyright 1997-2006 onion software 38 配列について 配列とは、変数に通し番号を付けて管理し、文字列や数値を同時にたくさんの情 報を記憶させることができる入れ物のことです。これを配列変数と呼んでいます。 配列の番号のことをHSPでは、 要素と呼んでいます。配列変数は、 変数名(番号) というように表現します。 また、文字列を扱うものを文字列型配列変数と呼び、数値を扱うものを数値型配 列変数と呼んで区別しています。 基本的な使い方 型配列変数には、以下のようなルールがあります。 a(0)=10 a(1)=20 a(2)=30 b=a(0)+a(1)+a(2) mes ”b=”+b stop ・変数名の後にカッコを付けて番号(要素)を指定する。 ・番号は0から始める。 ・あらかじめdim命令で要素の最大数を決めておくことができる。 ・通常は数値型としてのみ使うことができる。 多次元配列は、4次元まで確 保可能です。 書式 : dim p1,p2….. P1=変数 : 配列を割り当てる変数名 P2=0~ : 要素の最大 Copyright 1997-2006 onion software 39 繰り返し命令の使い方 ある一定の動作を繰り返し行なうことをループ制御と呼んでいます。ループには、 回数を指定して行なう有限ループと、回数指定なしの無限ループがあります。 まずは、無限ループですが、基本はgoto命令による指定ラベル間との繰り返しで す。もちろん、 goto命令によるループ内においても、カウンタを設ければ指定回 数によるループ制御も可能となります。HSPには、ループ専用命令が提供されて います。標準実装されているのが、 repeat ~ loop命令です。ループカウンタは、 システム変数のcntで保持され、ループのやり直しは、 continue命令、ループか らの脱出には、 break命令が使われます。 goto命令による無限ループ *mawaru ;この中を無限に繰り返す goto * mawaru goto命令による有限ループ i=0 *mawaru mes ”同じこと繰り返す(”+I+ ”) ” i=I+1 if I<10 : goto * mawaru stop ループ制御命令 書式 : repeat p1,p2 P1=0~(-1) : ループ回数 P2=0~(0) : cntスタート値 repeat 5 mes ”5回繰り返す(”+ cnt + ”) ” loop cntスタート値は、指定しない限り、0から始まります。 Copyright 1997-2006 onion software 40 条件判定命令の使い方 これまで紹介してきたサンプルの中でも、少しだけ登場していますが、プログラム の基本的な要素として欠かせないのが条件判定命令です。条件を判断する命令 は、 if命令です。if命令は、「もし~だったら」という条件に合致すれば、その行に ある他の命令を実行します。条件に合致しなければ、その行にある他の行は無 視して、次の行に進んでしまいます。 この例だと、3行目のif命令で変数xの内容が 100だった時だけ、「変数xは100です。」という メッセージを表示することになります。 cls X=100 if X=100 : mes ”変数xは100です。” 書式 : If p1 mes ”条件判断終わり!” stop 条件式 変数名=数値 変数名!数値 変数名<数値 変数名>数値 変数名<=数値 変数名>=数値 p1: 条件式 意 味 変数の内容と数値が同じである 変数の内容と数値が同じではない 変数の内容より数値の方が数が大きい 変数の内容より数値の方が数が小さい 変数の内容より数値の方が数が同じか大きい (以上) 変数の内容より数値の方が数が同じか小さい (以下) Copyright 1997-2006 onion software 41 画面を作成する 画面を初期化して作成します。 HSPは画面を作成する命令を発行しなくても、 自 動でデフォルトの画面を生成する機能を最初から内蔵しています。ここでは、こ のデフォルト機能を使わずにユーザーが任意のサイズや位置を最初から指定し て画面を作成する方法を紹介します。画面を作成する命令は、 screen命令を使 います。指定するパラメータは多いのですが、p5~p8までは省略可能です。 書式 : screen p1,p2,p3,p4,p5,p6,p7,p8 P1=0~(0) : ウィンドウID P2,p3 : 初期化する画面サイズX,Y (1ドット単位) P4=0~31(0) : 初期化する画面モード 画面モード P5,p6 : ウィンドウの配置X,Y (1ドット単位) P7p8 : クライアントエリアのサイズX,Y (1ドット単位) screen 0,640,480,0,100,200,400,300 bgscr命令を利用すれば、枠のないウィンドウを作成できます。 bgscr 0,640,480,0,100,200,400,300 1 パレットモードで作成 2 非表示のウィンドウを作成 4 サイズ固定ウィンドウ 8 ツールウィンドウ 16 深い縁のあるウィンドウ Copyright 1997-2006 onion software 42 バッファを利用する 画像ファイルなどを予め読み込んでおいてメモリ上に保存し、必要に応じて呼び 出して利用することができたら便利と思います。このようなことを実現するのが バッファと呼ばれるメモリ上に仮想画面を作成する機能です。バッファを利用する には、 buffer命令を使います。screen命令と同様にウィンドウIDを初期化して利 用します。ただし、 screen命令とは、別のウィンドウIDを利用して下さい。 書式 : buffer p1,p2,p3,p4 P1=0~(0) : ウィンドウID P2,p3 : 初期化する画面サイズX,Y (1ドット単位) P4=0~1(0) : 初期化する画面モード buffer 2 picload dir_exe+”/sample/demo/jp6girl.bmp” sx=ginfo_sx : sy=ginfo_sy gsel 0 redraw 0 color 255,0,255 : boxf pos 150,130 : gzoom -sx, sy,2,0,0,sx,sy pos 490,130 : gzoom sx, sy,2,0,0,sx,sy pos 180,300 : gzoom sx, -sy,2,0,0,sx,sy redraw 1 stop 実行サンプル例 Copyright 1997-2006 onion software 43 乱数を使ってランダムに表示する ゲームやクイズなどで毎回順番が違う問題や出現させる敵のキャラクタなどを変 えたい場合があります。このように不規則な数(パターン)を発生させる機能を乱 数と言います。乱数を使うには、最初におまじないとして、乱数の順番を初期化 するrandomize命令を使います。初期化が終わったらrnd関数で乱数を発生して 変数に代入という作業をします。 書式 : randomize p1 P1=0~(不定) : 乱数の初期化パラメーター 書式 : rnd(p1) P1=0~32768 : 乱数の範囲 rnd関数は、命令ではないので、変数を代入する場合は、左辺に変数名を指定して代入します。 randomize ;乱数を初期化 number= rnd(10) ;変数number数に0~9までの乱数を発生 mes number ;実行するたびに表示結果が違ってくる stop 簡単な利用例 Copyright 1997-2006 onion software 44 画像を動かす これまでに紹介していない命令も登場して、少し難しくなりますが、シューティング ゲームの基本となる各部品を作って行くことにします。まずは、自機の表示と移 動処理をやって見ることにします。 32×32のキャラクタ画像を2つ横に並べたものを準備します。これが自機と敵機に相当します。 buffer 2 picload ”sampchar.bmp” screen 0,320,400 px=144 : py=352 ;ウィンドウID2をバッファ画面として使用 ;キャラクタ画像を読み込む(バッファに格納) ;ウィンドウID0を320×400で初期化 ;自機の初期表示位置(座標)を設定 ;メインループ *main redraw 0 ;画面更新停止 color 0,0,0 : boxf ;背景を黒として塗り潰す stick ky,15 ;キー入力値取得 if ky=1 : px-=8 : if px<8 : px=8 ;左←移動範囲制限 if ky=4 : px+=8 : if px>280 : px=280 ;右→移動範囲制限 if ky=2 : py-=8 : if py<8 : py=8 ;上↑移動範囲制限 if ky=8 : py+=8 : if py>360 : py=360 ;下↓移動範囲制限 pos px,py : gcopy 2,0,0,32,32 ;移動した位置にバッファより自機画像を複写 redraw 1 ;画面更新(再描画) wait 5 ;0.05秒待つ goto *main ;ラベル*mainへジャンプ 上下左右のカーソルキーで自機が移動できます。 Copyright 1997-2006 onion software 45 当たりを判定する 自機の表示と移動処理ができたので、シューティングゲームに必要な要素となる 敵の登場と当たりの判定です。 自機表示と移動のスクリプトに敵キャラクタを表示させて自ら移動するスクリプ トを追加します。この処理のポイントとなる部分は、乱数を使ってランダムに移 動させる部分です。 ex=144 : ey=84 ;敵の初期座標 ←5行目に追加 if r=0 : dx=rnd(5)-2*6 : dy=rnd(5)-2*6 ;敵の動きを乱数で決定 x=ex : ex+=dx : if (ex<8) | (ex>280) : ex=x : dx=-dx y=ey : ey+=dy : if (ey<8) | (ey>360) : ey=y : dy=-dy r=rnd(10) pos ex,ey : gcopy 2,32,0,32,32 ;移動した位置にバッファより敵機画像を複写 ← 15行目以降に追加 自機と敵の当たり判定は、互いに重なり合う部分があるかどうかをそれぞれの座標を 元に計算します。 Y座標の距離が32以下だが 当たり判定スクリプト ←16行目以降に追加 if (abs(px-ex)<32) & (abs(py-ey)<32) { ;自機と敵の当たりを判定 color 255,255,255 pos 120,192 : mes ”GAME OVER” stop } X座標が32以上離れている X,Y座標とも距離が32以下 Copyright 1997-2006 onion software 46 シューティングゲームのスクリプト シューティングゲームの完成版スクリプトです。 buffer 2 ;ウィンドウID2をバッファ画面として使用 picload ”sampchar.bmp” ;キャラクタ画像を読み込む(バッファに格納) screen 0,320,400 ;ウィンドウID0を320×400で初期化 px=144 : py=352 ;自機の初期表示位置(座標)を設定 ex=144 : ey=84 ;敵の初期座標 ;メインループ *main redraw 0 ;画面更新停止 color 0,0,0 : boxf ;背景を黒として塗り潰す stick ky,15 ;キー入力値取得 if ky=1 : px-=8 : if px<8 : px=8 ;左←移動範囲制限 if ky=4 : px+=8 : if px>280 : px=280 ;右→移動範囲制限 if ky=2 : py-=8 : if py<8 : py=8 ;上↑移動範囲制限 if ky=8 : py+=8 : if py>360 : py=360 ;下↓移動範囲制限 pos px,py : gcopy 2,0,0,32,32 ;移動した位置にバッファより自機画像を複写 if r=0 : dx=rnd(5)-2*6 : dy=rnd(5)-2*6 ;敵の動きを乱数で決定 x=ex : ex+=dx : if (ex<8) | (ex>280) : ex=x : dx=-dx y=ey : ey+=dy : if (ey<8) | (ey>360) : ey=y : dy=-dy r=rnd(10) pos ex,ey : gcopy 2,32,0,32,32 ;移動した位置にバッファより敵機画像を複写 redraw 1 ;画面更新(再描画) wait 5 ;0.05秒待つ if (abs(px-ex)<32) & (abs(py-ey)<32) { ;自機と敵の当たりを判定 color 255,255,255 pos 120,192 : mes ”GAME OVER” stop } goto *main ;ラベル*mainへジャンプ 完成! Copyright 1997-2006 onion software 47 日付や時間の表示 プログラム作成において良く利用される日付や時間の表示方法について紹介 します。日付・時刻情報を取得する方法として、HSPでは、 gettime関数という ものが提供されています。 書式 : gettime(p1) p1=0~7(0) : 取得するタイプ 年,月,日,曜日を表示します。 week=“日”,“月”,“火”,“水”,“木”,“金”,“土” s =str(gettime(0))+“年” s+=strf(“%02d”, gettime(1))+“月” s+=strf(“%02d”, gettime(3))+“日” s+=week(gettime(2))+“曜日 ” mes s stop 時,分,秒を表示します。 s =strf(“%02d”, gettime(4))+“:” s+=strf(“%02d”, gettime(5))+“:” s+=strf(“%02d”, gettime(6)) mes s stop 0 年(Year) 1 月(Month) 2 曜日(DayOfWeek) 3 日(Day) 4 時(Hour) 5 分(Minute) 6 秒(Second) 7 ミリ秒(Milliseconds) gettimeは関数となっているので、左辺に 変数を指定して、取得結果を代入します。 Copyright 1997-2006 onion software 48 実行ファイルの作成方法 「HSP3プログラミング入門」も、いよいよ最後の仕上げとなります。デバッグが 終了して、実行ファイルとしたら完成です。それでは、実行ファイルの作り方に ついて説明致します。 実行ファイル作成テスト用サンプル (test.hsp) テスト用のサンプルスクリプトを入力して、 hsp3ttl.jpg画像ファイルが格納されている場所に test.hspという名前を付けて保存して下さい。 スクリプトエディタのメニューより、「HSPメニュー」 →「実行ファイル自動作成」を選択します。 #pack ”hsp3ttl.jpg” #packopt name ”test” picload ”hsp3ttl.jpg” objsize 150,32 button ”閉じる”,*owari stop *owari end 「実行ファイルを作成しました」というダイアログが 表示されます。 先ほどソーススクリプトを保存した場所にtest.exe という実行ファイルが作成されています。 test.exeを実行して確認します。 実行ファイルの作成は手動による方法でも作成 できますが、初心者の方には、手順が多くてお 勧めではありません。 #packと#packoptという プリプロセッサを利用して、スクリプトエディタより 「実行ファイル自動作成」による方法を推奨しま す。パックファイルを利用しない場合は、 #packは 必要ありません。 Copyright 1997-2006 onion software 49 関連するイベント 『今日から君もプログラマ』セミナー 2004年4月 日本原子力研究所計算科学技術推進センター 親子で楽しむプログラミング講座 2005年3月・6月 大阪市総合生涯学習センター HSPプログラムコンテスト2003 HSPプログラムコンテスト2004 HSPプログラムコンテスト2005 HSPプログラムコンテスト2006 (計画中) その他書籍発売に伴う不定期なユーザーズグループ 会 Copyright 1997-2006 onion software 50 最後に ありがとうございました! 好評発売中! Hot Soup Processor Page ( HSP開発元 ) http://www.onionsoft.net/hsp/ E-Mail : [email protected] Copyright 1997-2006 onion software
© Copyright 2025 ExpyDoc