ヒント

 

複数の命令を一行に書く

1行のなかに複数の命令を区切って書くときは「:」を使います


コメント

1行の中で;(半角セミコロン)以降はコメント(注釈)とみなし無視されます。

pos 320,100 : mes “(^_^)”  ; 顔マーク表示

 

1行の中で //(ダブルスラッシュ)以降はコメントとみなし無視されます。 「/*」から「*/」までの間は、コメントとみなし無視されます。

pos 320,100 : mes “(^_^)”  // 顔マーク表示

/* ここは

コメントです */

goto *start


スペース(空白)やタブ

スペース、タブは、自分の書いたプログラムを見やすくするために自由に入れることができます。

(標準の設定では全角スペースも、スペースとみなされますが、なるべく半角スペースを使うようにすると将来こまらないかもしれません。)

特定の場所では、必ず半角スペースをいれる必要があります。たとえば、命令とパラメータの間には半角スペースが必要です。


サンプルプログラムを有効利用する

HSPプログラムのお手本として登場するサンプルスクリプト(.hsp)のなかに書かれている内容は、自由に取り入れて、マネして使っても大丈夫です。

drop.hsp や shoot.hsp や poker.hsp などお手本のスクリプト内で使われている命令や必要な部分をコピーして自分のプログラムに追加してみましょう

 


ほかのアプリの利用

『GIMP』という画像編集アプリを使って、画像を作ったり編集することができます


 

そのほか、

Windows版HSP公式ガイドの「プログラミングマニュアル」の説明を参照してください


(※解説文章を作成途中です)

変数

【 へんすう 】

 

公式ガイドの「変数」の説明を参照してください

 

name = ” 文字列変数のなかみを指定”

name = ”ドロップパズル”

x = 100

・変数のなかみを指定。この = は「代入する」という意味

・命令につづくパラメータの部分には変数も使用できる 例 pos x,y

・文字列と変数を組み合わせて使うこともできる 例 mes “こたえは”+x

・数値や変数を書く場所には数式を使うこともできる 例 x = 100+20

 

配列変数

x(1) x(2) x(3)

たくさんの変数が必要なときに便利に利用できる。 例・ 繰り返し命令の中で x(cnt)

 

システム変数

cnt stat

システム変数。HSPのシステムがはじめから使う用途を決めて確保している変数

 

 


(※解説文章を作成途中です)

ラベル(はた)

プログラムの流れをあやつる「処理の飛び先位置」として、自由に「旗」をつくることができる

#include "rpz-gpio.as"

*hata
	gpmes "えっさ"
	update 5

	gpmes "   ほいさ"
	update 5

	goto *hata

 

名前は自由につけられるが、命令と同じ名前は使えない

 

公式ガイドの「ラベル」の説明を参照してください


(※解説文章を作成途中です)

gpioin

【 じーぴーあいおーいん 】

GPIOポートの状態を取得。

  • 押されていなければ 1 が検出される
  • 押されていたら 0 が検出される
#include "hsp3dish.as"

*hata
	redraw 0
	font "",60
	pos 60,180
	color 0,0,255
	mes "スイッチ押して"
	redraw 1
	await 16

	if gpioin(5)=0 : goto *hata2
	goto *hata

*hata2
	redraw 0
	font "",60
	pos 60,180
	color 255,0,0
	mes "押しましたね!"
	redraw 1
	await 16

	if gpioin(6)=0 : goto *hata
	goto *hata2

 


(※解説文章を作成途中です)

 


【関連命令】
【バージョン】3.6b1 【動作確認】2018/09/20

gpio

【 じーぴーあいおー 】【 rpz-gpio 拡張命令】

GPIOポートを オン または オフする

#include "rpz-gpio.as"

	gpmes "LEDを制御しています。"

*hata
	gpio 17,1
	gpio 18,1
	gpio 22,1
	gpio 27,1
	update 5

	gpio 17,0
	gpio 18,0
	gpio 22,0
	gpio 27,0
	update 5

	goto *hata

【 重要 】「1から40まであるピンの通し番号」と「GPIOポート番号」は異なります。

 


(※解説文章を作成途中です)

 


【関連命令】
【バージョン】3.6b1 【動作確認】2018/09/20

update

【 あっぷでーと 】【 rpz-gpio 拡張命令】

待ち時間を指定

#include "rpz-gpio.as"

*hata
	gpmes "えっさ"
	update 5

	gpmes "   ほいさ"
	update 5

	goto *hata

 


(※解説文章を作成途中です)

 


【関連命令】
【バージョン】3.6b1 【動作確認】2018/09/20

gpmes

【 じーぴーめす 】【 rpz-gpio 拡張命令】

update とあわせて使い 簡単に文字表示を行う

#include "rpz-gpio.as"

*hata
	gpmes "えっさ"
	update 5

	gpmes "   ほいさ"
	update 5

	goto *hata

 


(※解説文章を作成途中です)

 


【関連命令】
【バージョン】3.6b1 【動作確認】2018/09/20

rpz-gpio拡張命令

【 あーるぴーぜっと じーぴーあいおー かくちょうめいれい 】

ラズベリーパイ本体に「センサーボード」をつなげて「rpz-gpio拡張命令」を使用する場合は、先頭行に

#include "rpz-gpio.as"

と書きます。こうすることで、センサーボード上のGPIOポートをより簡単に使用するためのモジュール(追加命令群)を新たに組み込むことができます。

内部で”hsp3dish.as”もインクルードしているので、上記の一行を追加した場合は、#include “hsp3dish.as” を別に書く必要はありません。

#include "rpz-gpio.as"
#include "hsp3dish.as"

 


(※解説文章を作成途中です)

 


【関連命令】
【バージョン】3.6b1 【動作確認】2018/09/20

devcontrol

【 でぶこんとろーる 】


※注意 : #include “rpz-gpio.as” を使用している場合は

こちら rpz-gpio拡張命令 の解説をお読みください。


 

devcontrol 命令によりGPIO入出力を行います。

まずは 出力

 devcontrol "gpio", ポート番号, 出力値

・「ポート番号」は、GPIOのポートを数値で指定します。

・「出力値」は、1(ON) か 0(OFF) を数値で指定します。

つまり、実際は下記のような書き方になります

devcontrol "gpio", 2, 1

 

つぎは 入力

 devcontrol "gpioin", ポート番号

HSPのプログラム実行後に、ポートからなにか入力(変化)があれば、HSPが常時保持している システム変数 stat に 0 か 1 が代入されます。 (エラーが発生した場合は -1 が代入されます。)

プログラム中で stat を参照することで、入力を知ることができます。

実際は下記のような書き方になります

devcontrol "gpioin", 5

 


(※解説文章を作成途中です)

 


【関連命令】
【バージョン】3.6b1 【動作確認】2018/09/20

 

stick

【 すてぃっく 】

よく使われるキーボード及びマウスボタンの状態をまとめて取得して変数に代入します。

stick p1,p2,p3

p1 = 変数 : 読み込むための変数
p2 = 0~(0) : 非トリガータイプキー指定
p3 = 0~1(1) : ウィンドウアクティブチェックON/OFF
stick命令が実行されると以下のような複数のボタン情報が1つの数値として、p1で指定した変数に代入されます。

1 : カーソルキー左(←)
2 : カーソルキー上(↑)
4 : カーソルキー右(→)
8 : カーソルキー下(↓)
16 : スペースキー
32 : Enterキー
64 : Ctrlキー
128 : ESCキー
256 : マウスの左ボタン
512 : マウスの右ボタン
1024 : TABキー

何もボタンが押されていない場合には0が代入されます。

 

(※解説文章を作成途中です)

 


【関連命令】 getkey
【バージョン】3.6b1 【動作確認】2018/09/20

getkey

【 げっときー 】

特定のキーの状態を取得します。

そのキーが押されると変数のなかに 1 が入ります。押されていない状態では常に 0 が入っています。

キーを指定する方法は、大文字アルファベットをシングルコーテーションでくくるほか、キーコードを数字で指定する方法があります。

#include "hsp3dish.as"

celload "sozai4.jpg",1		; 背景
celload "apple.png",2		; りんご

x=300:y=200

*main
	redraw 0
	pos 0,0
	celput 1	; 背景を表示
	gmode 2		; 透明色ありで重ね合わせる
	pos x,y		; りんごを表示
	celput 2
	redraw 1
	await 30

	getkey a,'A'
	if a=1 : x=x-4
	getkey a,'W'
	if a=1 : y=y-4
	getkey a,'D'
	if a=1 : x=x+4
	getkey a,'X'
	if a=1 : y=y+4

	goto *main
  キーコード : 実際のキー
 ------------------------------------------
        1    : マウスの左ボタン
        2    : マウスの右ボタン
        3    : キャンセル([CTRL]+[BREAK])
        4    : 3ボタンマウスのまん中のボタン
        8    : [BACKSPACE](PC98の[BS])
        9    : [TAB]
       13    : [ENTER]
       16    : [SHIFT]
       17    : [CTRL]
       18    : [ALT](PC98の[GRPH])
       20    : [CAPSLOCK]
       27    : [ESC]
       32    : スペースキー
       33    : [PAGEUP](PC98の[ROLLDOWN])
       34    : [PAGEDOWN](PC98の[ROLLUP])
       35    : [END](PC98の[HELP])
       36    : [HOME](PC98の[HOMECLR])
       37    : カーソルキー[←]
       38    : カーソルキー[↑]
       39    : カーソルキー[→]
       40    : カーソルキー[↓]
   48~57    : [0]~[9](メインキーボード)
   65~90    : [A]~[Z]
  96~105    : [0]~[9](テンキー)
 112~121    : ファンクションキー [F1]~[F10]

この表に載っているキー以外でも取得できる場合があります

(※解説文章を作成途中です)

 


【関連命令】 stick
【バージョン】3.6b1 【動作確認】2018/09/20

cls

【 しーえるえす 】

画面をクリアします。 画面に表示した文字、図形、画像、オブジェクト、すべてを消します。

#include "hsp3dish.as"

redraw 0
pos 0,0
mes "てすとです"
cls 
redraw 1

 

cls 4

クリアする5種類の色を指定することができます。

色の指定値 :
( 0=白 / 1=明るい灰色 / 2=灰色 / 3=暗い灰色 / 4=黒 )

 

 

clrobj 命令はオブジェクト(ボタン類)だけをクリアします。

 

(※解説文章を作成途中です)

 


【関連命令】
【バージョン】3.6b1 【動作確認】2018/09/20

gmode

【 じーもーど 】

画像を表示する際の透明色のあつかいを設定。

1 = そのまま画像を表示

2 = 透明色の部分を透明にする(余白部分をぬけさせる)

3 = 透明度を256段階のブレンド率で指定(半透明)

#include "hsp3dish.as"

celload "haikei.jpg",1		; 背景
celload "apple.png",2		; りんご

*main
	redraw 0
	pos 0,0
	celput 1	; 背景を表示
	gmode 2		; 重ね合わせるので透明色つかう
	pos 300,200	; りんごを表示
	celput 2
	redraw 1
	await 30
	goto *main

モード指定は0-7まであり、よりこまかな設定ができます。

gmode 4,64,64,128

(※解説文章を作成途中です)

 


【関連命令】 celput , gcopy
【バージョン】3.6b1 【動作確認】2018/09/20

celput

【 せるぷっと 】

celload でメモリ上に読み込んである画像素材を描画する

#include "hsp3dish.as"
celload "sozai1.jpg",1

redraw 0
pos 0,0
celput 1
redraw 1

 

事前に celdiv で画像分割サイズが設定されている場合は、分割された何個目の画像を描画するのかを画像番号の次のパラメータ「分割画像番号」で指定します

#include "hsp3dish.as"
celload "sozai1.jpg",1
celdiv 1,64,64

redraw 0
pos 0,0
celput 1,0
redraw 1

 

例えば、sozai1.jpg が画像サイズ 256 * 256 の一枚の画像ファイルだった場合、

画像番号 1 に読み込まれた後、

celdiv によって、16枚の画像素材に分割されたことになります。

(横 256 ÷ 64 、 縦 256 ÷ 64 、つまり 4 × 4 = 16 枚)

なので、分割画像番号は 0 ~ 15 番が指定できるということです。

 

 

(※解説文章を作成途中です)

 


【関連命令】 celload , celdiv
【バージョン】3.6b1 【動作確認】2018/09/20

celdiv

【 せるでぃぶ 】

celload でメモリ上に読み込んだ画像素材のとりあつかい分割サイズを設定する

#include "hsp3dish.as"
celload "sozai1.jpg",1
celdiv 1,64,64

redraw 0
pos 0,0
celput 1,0
redraw 1

 

(※解説文章を作成途中です)

 


【関連命令】 celload , celput
【バージョン】3.6b1 【動作確認】2018/09/20

celload

【 せるろーど 】

画像ファイルをメモリ上に読み込んでおく

#include "hsp3dish.as"

celload "sozai1.jpg",1

redraw 0
pos 0,0
celput 1
redraw 1

(※解説文章を作成途中です)

 


【関連命令】 celdiv , celput
【バージョン】3.6b1 【動作確認】2018/09/20

title

【 たいとる 】

タイトルバーに文字を表示

#include "hsp3dish.as"

redraw 0

title “授業でぼくが作ったプログラム”

mes "こんにちは"

redraw 1

 


(※解説文章を作成途中です)

 


【関連命令】
【バージョン】3.6b1 【動作確認】2018/09/20

rnd

【 らんど 】

サイコロのようにでたらめな数を決める。乱数を発生させる

#include "hsp3dish.as"

	font "",60

	redraw 0
	repeat 100
	x = rnd(640)
	y = rnd(480)
	pos x,y
	mes "☆"
	loop
	redraw 1

 


(※解説文章を作成途中です)

 


【関連命令】 randomize
【バージョン】3.6b1 【動作確認】2018/09/20

goto

【 ごーとぅー 】

プログラムの流れを制御する

#include "rpz-gpio.as"

*hata
	gpmes "えっさ"
	update 5

	gpmes "   ほいさ"
	update 5

	goto *hata

(※解説文章を作成途中です)

 


【関連命令】 ラベル
【バージョン】3.6b1 【動作確認】2018/09/20

if

【 いふ 】

条件判断を行う

#include "hsp3dish.as"

	x=0
*hata
	redraw 0
	font "",60
	pos x,120
	color 0,0,255
	mes "こんにちは"
	redraw 1
	x = x+2
	if x>640 : x=0
	await 16
	goto *hata

 

if 文条件が成立したとき実行する部分を、中カッコ { } で囲って書くこともできます。

if gpioin(5)=0 { goto *hata2 }

この場合、実行する部分は複数行になっても大丈夫です。

if gpioin(5)=0 { pos 0, 0 :  mes “OK ! ”

goto *hata2 }

 

 


(※解説文章を作成途中です)

 


【関連命令】else
【バージョン】3.6b1 【動作確認】2018/09/20