プログラミング言語 PG0.5
ライブラリ リファレンス
--
■はじめに
PG0はプログラミング学習を目的としたプログラミング言語です。
PG0.5はPG0を拡張したプログラミング言語です。

以下のライブラリのリファレンスになります。
・画面描画API (screen.js)
・数値処理API (math.js)
・入出力API (io.js)

■制限事項
本ライブラリには以下の制限があります。
・動作環境はPG0(Web版)のみです。
・デバイスやWebブラウザによって動作速度、描画速度が異なる場合があります。
・サウンド再生についてはiOSではセキュリティ制限のため機能しない場合があります。
・各APIの仕様は今後変更される可能性があります。

■画面描画API (screen.js)

以下のインポート文により利用することができます。
#import("lib/screen.js?v=1")

startScreen(width, height, option)
	[説明]
		スクリーンを開始します。
		Webブラウザ上に指定したサイズのスクリーンを表示します。
	[引数]
		width - 画面の幅(数値)
		height - 画面の高さ(数値)
		option - オプションを連想配列で指定します。
					{"color": 16進数のカラーコード(文字列), "fit": 画面サイズに合わせるかのフラグ(数値)}
	[戻り値]
		0

sleep(time)
	[説明]
		一定時間処理を停止します。
	[引数]
		time - 停止する時間をミリ秒を数値で指定します。
	[戻り値]
		0

time()
	[説明]
		現在時刻(UTC)を取得します。
	[引数]
		なし
	[戻り値]
		1970年1月1日 00:00:00からの経過ミリ秒を数値で返します。

timeString(time)
	[説明]
		時間を日時文字列にフォーマットします。
	[引数]
		time - 1970年1月1日 00:00:00からの経過ミリ秒を数値
		format - 日時フォーマット。省略時はロケールに従った文字列にフォーマットされます。
					YYYY - 年
					MM or M - 月
					DD or D - 日
					hh or h - 時
					mm or m - 分
					ss or s - 秒
	[戻り値]
		日時文字列

startOffscreen()
	[説明]
		オフスクリーンを開始して、画面表示をオフスクリーンに描画します。
	[引数]
		なし
	[戻り値]
		0

endOffscreen()
	[説明]
		オフスクリーンを終了して、オフスクリーンの内容を画面に描画します。
	[引数]
		なし
	[戻り値]
		0

clearRect(x, y, width, height)
	[説明]
		指定領域の描画を透明化します。
	[引数]
		x - 左上の水平座標(数値)
		y - 左上の垂直座標(数値)
		width - 幅(数値)
		height - 高さ(数値)
	[戻り値]
		0

drawLine(x1, y1, x2, y2, option)
	[説明]
		直線を描画します。
	[引数]
		x1 - 開始の水平座標(数値)
		y1 - 開始の垂直座標(数値)
		x2 - 終了の水平座標(数値)
		x2 - 終了の垂直座標(数値)
		option - オプションを連想配列で指定します。
					{"width": 線幅(数値), "color": 16進数のカラーコード(文字列)}
	[戻り値]
		0

drawRect(x, y, width, height, option)
	[説明]
		四角を描画します。
	[引数]
		x - 左上の水平座標(数値)
		y - 左上の垂直座標(数値)
		width - 幅(数値)
		height - 高さ(数値)
		option - オプションを連想配列で指定します。
					{"width": 線幅(数値), "color": 16進数のカラーコード(文字列), "fill": 塗りつぶし(数値)}
					塗りつぶしに1を設定すると指定された色で四角を塗りつぶします。
	[戻り値]
		0

drawCircle(x, y, radiusX, option)
	[説明]
		円を描画します。
	[引数]
		x - 円の中心の水平座標(数値)
		y - 円の中心の垂直座標(数値)
		radiusX - 長辺の半径(数値)
		option - オプションを連想配列で指定します。
					{"width": 線幅(数値), "color": 16進数のカラーコード(文字列), "fill": 塗りつぶし(数値), "radius_y": 短辺の半径(数値), "rotation": 円の傾き(数値), "start": 円が始まるX軸から時計回りの角度(数値), "end": 円の終わるX軸から時計回りの角度(数値)}
					塗りつぶしに1を設定すると指定された色で円を塗りつぶします。
	[戻り値]
		0

drawPolyline(coordinates, option)
	[説明]
		いくつかの座標で繋がった一連の直線を描画します。
	[引数]
		coordinates - 座標の配列
						例) drawPolyline({{100, 100}, {200, 100}, {150, 50}}, {"close": 1}) // 三角形
		option - オプションを連想配列で指定します。
					{"width": 線幅(数値), "color": 16進数のカラーコード(文字列), "fill": 塗りつぶし(数値), "close": 1の場合は最後の線と最初の線を繋げる(数値)}
	[戻り値]
		0

drawFill(x, y, color)
	[説明]
		指定座標の色を指定の色で塗りつぶします。
		隣接するピクセルを辿って色で塗りつぶします。
	[引数]
		x - 塗りつぶしを開始する水平座標(数値)
		y - 塗りつぶしを開始する垂直座標(数値)
	[戻り値]
		0

drawScroll(x, y)
	[説明]
		画面をスクロールします。
		画面からはみ出た領域は逆側に表示されます。
	[引数]
		x - スクロールする水平の移動量(数値)
		y - スクロールする垂直の移動量(数値)
	[戻り値]
		0

createImage(x, y, width, height, option)
	[説明]
		指定領域の画像を作成します。
		戻り値を使ってdrawImage()で描画することができます。
	[引数]
		x - 左上の水平座標(数値)
		y - 左上の垂直座標(数値)
		width - 幅(数値)
		height - 高さ(数値)
		option - オプションを連想配列で指定します。
					{"id": 既存のイメージID(数値)}
					idを指定した場合は既存の画像を置き換えます。
	[戻り値]
		イメージID

drawImage(id, x, y, option)
	[説明]
		指定イメージIDの画像を描画します。
	[引数]
		id - イメージID
		x - 左上の水平座標(数値)
		y - 左上の垂直座標(数値)
		option - オプションを連想配列で指定します。
					{"width": 幅(数値), "height": 高さ(数値), "angle": 角度(数値), "alpha": 透明度(数値)}
					幅と高さは片方のみの指定はできません。
					透明度は0.0~1.0の間で指定します。
	[戻り値]
		0

drawText(text, x, y, option)
	[説明]
		テキストを描画します。
	[引数]
		text - 描画するテキスト(文字列)
		x - 開始の水平座標(数値)
		y - 開始の垂直座標(数値)
		option - オプションを連想配列で指定します。
					{"width": 線幅(数値), "color": 16進数のカラーコード(文字列), "fill": 塗りつぶし(数値), "fontstyle": フォントスタイル(文字列), "fontsize": フォントサイズ(数値), "fontface": フォント(文字列)}
					fillはデフォルトは1で、0を指定すると中抜き文字の描画になります。
					フォントスタイルはnormal、bold、italic、obliqueのいずれかを指定します。
	[戻り値]
		0

measureText(text, option)
	[説明]
		テキストの描画サイズを取得します。
	[引数]
		text - テキスト(文字列)
		option - オプションを連想配列で指定します。
					{"fontstyle": フォントスタイル(文字列), "fontsize": フォントサイズ(数値), "fontface": フォント(文字列)}
					フォントスタイルはnormal、bold、italic、obliqueのいずれかを指定します。
	[戻り値]
		描画サイズ
		{"width": 幅, "height": 高さ}

rgbToPoint(x, y)
	[説明]
		指定座標の色を取得します。
	[引数]
		x - 水平座標(数値)
		y - 垂直座標(数値)
	[戻り値]
		RGBの配列
		{"R": 赤を示す255までの数値, "G": 緑を示す255までの数値, "B": 青を示す255までの数値}

rgbToHex(rgb)
	[説明]
		RGBの配列を16進数のカラーコードに変換します。
	[引数]
		rgb - RGBの配列
				{"R": 赤を示す255までの数値, "G": 緑を示す255までの数値, "B": 青を示す255までの数値}
	[戻り値]
		16進数のカラーコード(文字列)

hexToRgb(hex)
	[説明]
		16進数のカラーコードをRGBの配列に変換します。
	[引数]
		hex - 16進数のカラーコード(文字列)
	[戻り値]
		RGBの配列
		{"R": 赤を示す255までの数値, "G": 緑を示す255までの数値, "B": 青を示す255までの数値}

inTouch()
	[説明]
		タッチ位置を返します。
	[引数]
		なし
	[戻り値]
		タッチ状態
		{"x": 水平座標, "y": 垂直座標, "touch": タッチ状態, "button": ボタン, "pos": {{水平座標, 垂直座標}, ...}}
		タッチ状態が0の場合は現在はタッチされておらず、最終のタッチ座標になります。
		buttonは0が左クリック、1が真ん中(ホイール)クリック、2が右クリックになります。
		posはマルチタッチの座標が入ります。

inKey()
	[説明]
		キーボード入力を返します。
	[引数]
		key - 押されているか確認するキー文字列を指定します。
				配列で指定した場合は配列内のすべてのキー文字列が押されているか確認します。
				キー文字列はJavaScriptのKeyboardEvent.keyと同値になります。
	[戻り値]
		引数が指定されていない場合は、押されているキー文字列の配列を返します。
		引数が文字列で指定されている場合は、キーが押されている場合は1を返し、押されていない場合は0を返します。
		引数が配列で指定された場合はすべてのキーが押されている場合は1を返し、押されていないキーがある場合は0を返します。

playSound(note, start, end)
	[説明]
		指定された周波数を指定した時間再生します。
	[引数]
		note - 周波数(数値)
				文字列を指定した場合は対応する周波数に変換されます。後ろに数字を入れるとオクターブになります。
				'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'
					例) playSound("C4", 0, 500)
		start - 開始時間のミリ秒(数値)
		end - 終了時間のミリ秒(数値)
		volume - ボリューム、省略時は1(数値)
	[戻り値]
		0

playMusic(notes, option)
	[説明]
		複数の周波数を連続で再生します。
	[引数]
		notes - noteの配列
				{note, length, volume}
				noteを文字列で指定した場合は対応する周波数に変換されます。後ろに数字を入れるとオクターブになります。
				'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'
					例) playMusic({{"C4", 500}, {"D4", 500}, {"E4", 500}})
				volumeは省略可能です。

				配列に以下のキーと値を設定すると特別な意味になります。
				start: 開始位置、複数の音を同時に鳴らす場合には開始位置を0にして別の音を設定します。
					例) playMusic({{"C4", 800}, {"start": 0}, {"E4", 800}, {"start": 0}, {"G4", 800}})
				volume: これより後のボリューム
		option - オプションを連想配列で指定します。
					{"repeat": 繰り返しフラグ(数値)}
	[戻り値]
		0

stopSound()
	[説明]
		再生されているサウンドをすべて停止します。
	[引数]
		なし
	[戻り値]
		0

■数値処理API (math.js)

以下のインポート文により利用することができます。
#import("lib/math.js?v=1")

abs(num)
	[説明]
		絶対値を返します。
	[引数]
		num - 変換する数値
	[戻り値]
		絶対値

atan(num)
	[説明]
		アークタンジェントをラジアン単位で返します。
	[引数]
		num - 変換する数値
	[戻り値]
		引数のアークタンジェント

cos(num)
	[説明]
		コサインを返します。
	[引数]
		num - 数値
	[戻り値]
		引数のコサイン

exp(num)
	[説明]
		自然対数の底を返します。
	[引数]
		num - 数値
	[戻り値]
		自然対数の底

log(num)
	[説明]
		自然対数を返します。
	[引数]
		num - 数値
	[戻り値]
		自然対数

random()
	[説明]
		乱数を返します。
	[引数]
		なし
	[戻り値]
		0以上1未満の乱数

sign(num)
	[説明]
		数値の符号が正か負かを表すフラグを返します。
	[引数]
		num - 数値
	[戻り値]
		1 - 正
		-1 - 負
		0 - ゼロ

sin(num)
	[説明]
		サインを返します。
	[引数]
		num - 数値
	[戻り値]
		引数のサイン

sqrt(num)
	[説明]
		平方根を返します。
	[引数]
		num - 数値
	[戻り値]
		平方根

tan(num)
	[説明]
		タンジェントを返します。
	[引数]
		num - 数値
	[戻り値]
		引数のタンジェント

pow(base, exponent)
	[説明]
		数値を累乗した値を返します。
	[引数]
		base - 底となる数値
		exponent - 累乗する指数
	[戻り値]
		数値を累乗した値

■入出力API (io.js)

以下のインポート文により利用することができます。
#import("lib/io.js?v=1")

saveValue(key, value)
	[説明]
		値を保存します。
		保存する値には数値、文字列、配列を指定します。
		値はWebブラウザに保存されます。
		スクリプトの保存場所を変更すると値は初期化されます。
		・新規ファイル - 共通領域
		・ローカルファイル - ローカルファイル名をキーとして保存
		・オンラインファイル - オンラインのcidをキーとして保存
	[引数]
		key - キー
		value - 保存する値
	[戻り値]
		0

loadValue(key)
	[説明]
		保存した値を読み出します。
	[引数]
		key - キー
	[戻り値]
		保存した値

removeValue(key)
	[説明]
		保存した値を削除します。
	[引数]
		key - キー
	[戻り値]
		0

--
Copyright (C) 1996-2024 by Ohno Tomoaki. All rights reserved.
    WEB SITE: https://nakka.com/
    E-MAIL: nakka@nakka.com