プログラミング言語 PG0.5 ライブラリ リファレンス -- ■はじめに PG0はプログラミング学習を目的としたプログラミング言語です。 PG0.5はPG0を拡張したプログラミング言語です。 以下のライブラリのリファレンスになります。 ・画面描画API (screen.js) ・数値処理API (math.js) ・文字列API (string.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 - 塗りつぶしを開始する垂直座標(数値) 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.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 (string.js) 以下のインポート文により利用することができます。 #import("lib/string.js?v=1") 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.js) 以下のインポート文により利用することができます。 #import("lib/io.js?v=1") 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