プログラミング言語 PG0.5
ライブラリ リファレンス
--
■はじめに
PG0はプログラミング学習を目的としたプログラミング言語です。
PG0.5はPG0を拡張したプログラミング言語です。
以下のライブラリのリファレンスになります。
・画面描画API (screen.pg0)
・数値処理API (math.pg0)
・文字列API (string.pg0)
・入出力API (io.pg0)
■制限事項
本ライブラリには以下の制限があります。
・動作環境はPG0(Web版)のみです。
・デバイスやWebブラウザによって動作速度、描画速度が異なる場合があります。
・サウンド再生についてはiOSではセキュリティ制限のため機能しない場合があります。
・各APIの仕様は今後変更される可能性があります。
■画面描画API (screen.pg0)
以下のインポート文により利用することができます。
#import("lib/screen.pg0")
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 - 塗りつぶしを開始する垂直座標(数値)
color - 16進数のカラーコード(文字列)
[戻り値]
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.pg0)
以下のインポート文により利用することができます。
#import("lib/math.pg0")
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 (string.pg0)
以下のインポート文により利用することができます。
#import("lib/string.pg0")
trim(str)
[説明]
文字列の前後をトリミングする。
トリミング対象の文字は空白(" ")、タブ("\t")となる。
[引数]
str - トリミングする文字列
[戻り値]
トリミングされた文字列
to_lower(str)
[説明]
英文字列を小文字に変換する。
[引数]
str - 小文字に変換する文字列
[戻り値]
小文字に変換された文字列
to_upper(str)
[説明]
英文字列を大文字に変換する。
[引数]
str - 大文字に変換する文字列
[戻り値]
大文字に変換された文字列
str_match(ptn, str)
[説明]
ワイルドカードを使って、文字列を比較する。
「*」で任意の複数文字列に一致し、「?」で任意の一文字に一致する。
[引数]
ptn - 比較元のパターン(こちらにワイルドカードを指定する)
str - 比較する文字列
[戻り値]
一致した場合は1を返し、一致しない場合は0を返す。
substring(str, begin, length = -1)
[説明]
文字列から部分文字列を抽出する。
[引数]
str - 抽出対象の文字列
begin - 開始インデックス
(負数は文字列の末尾からのインデックスとなる)
length - 抽出する長さ(負数は末尾までの長さとなる)
[戻り値]
抽出された部分文字列
in_string(str, search, from = 0)
[説明]
文字列内の指定文字列の位置を検索する。
[引数]
str - 検索対象の文字列
search - 検索する文字列
from - 検索を開始するインデックス
[戻り値]
見つかった文字列のインデックスを返す。
見つからない場合は -1 を返す。
split(str, separator)
[説明]
区切り文字列で文字列を分割する。
[引数]
str - 分割対象の文字列
search - 区切り文字列
[戻り値]
分割した文字列が入った配列
■入出力API (io.pg0)
以下のインポート文により利用することができます。
#import("lib/io.pg0")
println(line)
[説明]
標準出力に一行出力
[引数]
line - 出力文字列
[戻り値]
0
saveValue(key, value)
[説明]
値を保存します。
保存する値には数値、文字列、配列を指定します。
値はWebブラウザに保存されます。
スクリプトの保存場所を変更すると値は初期化されます。
・新規ファイル - 共通領域
・ローカルファイル - ローカルファイル名をキーとして保存
・オンラインファイル - オンラインのcidをキーとして保存
[引数]
key - キー
value - 保存する値
[戻り値]
0
loadValue(key)
[説明]
保存した値を読み出します。
[引数]
key - キー
[戻り値]
保存した値
removeValue(key)
[説明]
保存した値を削除します。
[引数]
key - キー
[戻り値]
0
get_clipboard()
[説明]
クリップボードのテキストを取得する。
[引数]
なし
[戻り値]
クリップボードのテキスト
set_clipboard(text)
[説明]
クリップボードにテキストを設定する。
[引数]
text - テキスト
[戻り値]
成功すると1、失敗すると0を返す。
--
Copyright (C) 1996-2024 by Ohno Tomoaki. All rights reserved.
WEB SITE: https://nakka.com/
E-MAIL: nakka@nakka.com