HSP3プログラミングガイダインス - ONION software HOMEPAGE

Download Report

Transcript HSP3プログラミングガイダインス - ONION software HOMEPAGE

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