動作環境: | DOS32 |
書式: | include graphics.e ellipse(i1, i2, s1, s2) |
解説: | ピクセルグラフィックススクリーンに色i1で楕円を描きます。楕円の内側は対角線の点 s1 {x1, y1} および s2 {x2, y2}によって定義される矩形と綺麗に合わさります。もし矩形が正方形ならば楕円ではなく正円になります。i2がiのとき楕円を塗りつぶします。i2が0のとき楕円を塗りつぶしません。 |
用例: | |
ellipse(MAGENTA, 0, {10, 10}, {20, 20}) -- これはマゼンダ色で描画する円の内側を -- 正方形と合わさるようにします: -- {10, 10}, {10, 20}, {20, 20}, {20, 10}. | |
プログラム例: | demo\dos32\sb.ex |
関連事項: | polygon, draw_line |
書式: | i = equal(x1, x2) |
解説: | 2つのEuphoriaのオブジェクトが同じであるか比較します。同じであれば1(真)、違うならば0(偽)を返します。 |
注釈: | これは次の式と等価です: compare(x1, x2) = 0
このルーチンは、その他多くの組み込みルーチンのように、非常に高速です。それはいかなるサブルーチンの呼び出しにおいてオーバーヘッドは一切ありません。 |
用例1: | |
if equal(PI, 3.14) then puts(1, "give me a better value for PI!\n") end if | |
用例2: | |
if equal(name, "George") or equal(name, "GEORGE") then puts(1, "name is George\n") end if | |
関連事項: | compare, 等価演算子(=) |
書式: | i = find(x, s) |
解説: | 要素sからxを検索します。見つかった場合は、最初に一致した要素sのインデックスを返します。見つからない場合は0を返します。 |
用例1: | |
location = find(11, {5, 8, 11, 2, 3}) -- locationには3が設定されます。 | |
用例2: | |
names = {"fred", "rob", "george", "mary", ""} location = find("mary", names) -- locationには4が設定されます。 | |
関連事項: | find_from, match, match_from, compare |
書式: | i1 = find_from(x, s, i2) |
解説: | インデックス i2 から検索を開始して要素sからxを検索します。見つかった場合は、最初に一致した要素sのインデックスを返します。見つからない場合は0を返します。i2は、1からs + 1の任意の長さの値であるかもしれません(sのスライスと最初のインデックスは類似性があります)。 |
用例1: | |
location = find_from(11, {11, 8, 11, 2, 3}, 2) -- locationは3に設定されます。 | |
用例2: | |
names = {"mary", "rob", "george", "mary", ""} location = find_from("mary", names, 3) -- は4に設定されます。 | |
関連事項: | find, match, match_from, compare |
書式: | include machine.e a1 = float32_to_atom(s) |
解説: | 4バイトシーケンスをアトムへ変換します。これら4バイトには32bit形式のIEEE浮動小数点数を含める必要があります。 |
注釈: | 32bit IEEE浮動小数点数は全てアトムに変換できます。 |
用例: | |
f = repeat(0, 4) fn = open("numbers.dat", "rb") -- バイナリ読み込み f[1] = getc(fn) f[2] = getc(fn) f[3] = getc(fn) f[4] = getc(fn) a = float32_to_atom(f) | |
関連事項: | float64_to_atom, atom_to_float32 |
書式: | include machine.e a1 = float64_to_atom(s) |
解説: | Euphoriaのアトムを単一の8バイトからなるシーケンスに変換します。これら8バイトには64bit形式におけるIEEE浮動小数点数の表記が含まれています。 |
注釈: | 全てのEuphoriaのアトムは64bitIEEE浮動小数点数として表現可能な値を持ち、精度を一切損なうことなく任意のアトムを64bit形式に変換できます。
整数値は64-bit浮動小数点数形式に変換されます。 |
用例: | |
f = repeat(0, 8) fn = open("numbers.dat", "rb") -- バイナリ読み込み for i = 1 to 8 do f[i] = getc(fn) end for a = float64_to_atom(f) | |
関連事項: | float32_to_atom, atom_to_float64 |
書式: | x2 = floor(x1) |
解説: | x1以下の大きな整数を返します(整数で丸め込みます)。 |
注釈: | この関数はアトムまたはシーケンスの全ての要素に適用されることがあります。 |
用例: | |
y = floor({0.5, -1.6, 9.99, 100}) -- y は {0, -2, 9, 100} | |
関連事項: | remainder |
書式: | include file.e flush(fn) |
解説: | ファイルにデータを書き込むとき、通常Euphoriaは十分な大きさのチャンク(塊)が溜まるまでデータをメモリーバッファに格納します。この大きなチャンクは非常に効率的にディスクに書き込むことができます。たとえばメモリーバッファがいっぱいになっていなくても、すぐに全てのデータを強制的に、またはフラッシュして出力したいときがあるかもしれません。そのような時はflush()を呼ぶ必要があり、fnは書き込むか追記を行うためにに開いたファイルのファイル番号です。 |
注釈: | ファイルが閉じられたとき(close()を参照してださい)、全てのバッファ済みデータはフラッシュが行われて出力されます。プログラムが停止したとき、開いている全てのファイルは自動的にフラッシュが行われて閉じられます。
flush()を別のプロセスで使用するとき、これまでに書かれたすべてのデータを確認する必要がありますが、このときはまだファイルを閉じる準備ができていません。 |
用例: | |
f = open("logfile", "w") puts(f, "Record#1\n") puts(1, "Press Enter when ready\n") flush(f) -- 強制的に"Record #1"をディスクにある"logfile"へフラッシュ(吐き出す)します。 -- キーボード入力による停止なしで、 -- 0文字からなる"logfile"が出現します。 s = gets(0) -- キーボードからの入力待ち | |
関連事項: | close, lock_file |
書式: | include machine.e free(a) |
解説: | ブロックの開始アドレス(すなわち、allocate()によって返されたアドレス)を指定して以前割り当てたメモリーブロックを開放します。 |
注釈: | free()を使用することより実行中にメモリーブロックの再利用ができます。これはメモリー不足や過剰な仮想メモリーのディスクスワップの発生を減らします。なお、開放済みのメモリーブロックを参照しないでください(発見しづらいバグの原因になります)。割り当てられていた全てのメモリーはプログラム終了後にシステムに返却されます。
また、allocate_low()によって確保されたメモリーをfree()で開放しないでください。allocate_low()で割り当てられたメモリーの解放にはfree_low()を使用してください。 |
プログラム例: | demo\callmach.ex |
関連事項: | allocate, free_low |
動作環境: | WIN32, Linux, FreeBSD |
書式: | include dll.e free_console() |
解説: | プログラムに関連する任意のコンソールウィンドウを開放(削除)します。 |
注釈: | Euphoriaは最初にプログラムでスクリーンになにかを表示したり、キーボードからなにかを読み取ったり、コンソールでなにか必要なことを処理を行うためにコンソールテキストウィンドウを生成します。WIN32ではプログラム終了時にコンソールウィンドウは自動的に閉じられますが、プログラム実行中にfree_console()を呼び出した場合でもコンソールウィンドウは閉じられます。LinuxまたはFreeBSDでは、テキストモードコンソールは常に表示されますが、Euphoriaのプログラムが実行を終了した後に "Press Enter"プロンプトが表示され入力を受け付けた後にxtermのウィンドウが閉じられます。
LinuxまたはFreBSDでは、cursesで発生した各種スクリーンの設定変更を取り消すために、free_console()はターミナルを通常の設定に復帰します。 LinuxまたはFreeBSDのxtermウィンドウでは、free_console()を呼び出して、これ以上スクリーンへの表示またはキーボードから読み込みを行わない場合を除き、通常はEuphoria終了時に"Press Enter"プロンプトを無視してください。 コンソールウィンドウを解放後に、スクリーンに対して何か表示するか、clear_screen(), position()または任意の処理に必要な他のコンソールルーチンを呼ぶことによって新しいコンソールウィンドウを生成することができます。 トレース機能を使用するとき、あるいはプログラムの実行がエラーになったとき、Euphoriaはトレース情報、エラーメッセージなどを表示するためにコンソールウィンドウを自動的に生成します。 WIN32 APIルーチンにはfree_consoleに類似する動作を行うFreeConsole()がありますが同じではありません。 しかし、以後コンソールを使用しないことをインタプリタに通知するためにfree_console()を使用する必要があります。 |
関連事項: | clear_screen, platform.doc |
動作環境: | DOS32 |
書式: | include machine.e free_low(i) |
解説: | ブロックの開始アドレス(すなわち、allocate_low()によって返されたアドレス)を指定して以前割り当てたコンベンショナルメモリーブロックを開放します。 |
注釈: | free()を使用することより実行中にコンベンショナルメモリーブロックの再利用ができます。これはプログラム実行中おいてコンベンションショナルメモリー不足の発生を減らします。なお、開放済みのメモリーブロックを参照しないでください(発見しづらいバグの原因になります)。割り当てられていた全てのメモリーはプログラム終了後にシステムに返却されます。
また、allocate()によって確保されたメモリーをfree_low()で開放しないでください。allocate()で割り当てられたメモリーの解放にはfree()を使用してください。 |
プログラム例: | demo\dos32\dosint.ex |
関連事項: | allocate_low, dos_interrupt, free |
書式: | include get.e s = get(fn) |
解説: | ファイルfnからEuphoriaオブジェクト表現として人が読める文字列を入力します。オブジェクト内の数値は文字列へ変換されます。sは2次元シーケンスです: {エラーステータス, 値} なお、エラーステータスコードは次のとおりです: |
GET_SUCCESS -- オブジェクトの読み取りに成功しました。 GET_EOF -- オブジェクトを読む前にファイルが終端に達しました。 GET_FAIL -- 構文的には正しくないオブジェクトです。 | |
get()は複雑な任意のEuphoriaオブジェクトを読むことができます。すなわち、{23, {49, 57}, 0.5, -1, 99, 'A', "john"}といったように、ブレースブラケットとコンマに分離されたシーケンスの値を持つことができます。一度get()が呼ばれるとシーケンスを全て読み取って値を返します。
get()を呼び出すごとに前回呼ばれたときに捨てられた箇所を取得します。実例として、次の5列をget()を呼び出して読み込むために必要になります: 99 5.2 {1,2,3} "Hello" -1 6列以降でget()を呼び出すとGET_EOFステータスになります。またこのようにもできます: {1, 2, xxx} この入力ストリームはxxxはEuphoriaオブジェクトではないためGET_FAILエラーステータスになります。 入力ストリームは複数の"上位"オブジェクトは一つ以上の"空白"文字(空白、タブ、\rまたは\n)から互いに分離されている必要があります。空白文字は上位オブジェクトの範囲内であり不要です。get()を呼び出して全ての上位オブジェクトが一度に読み込まれたとき、さらにもう一つ(空白)文字が追加されます。 | |
注釈: | printf()とget()の組み合わせはEuphoriaのオブジェクトをディスクに保存したり後で読み戻すために用いることができます。この技法はデータベースとして一つ以上の大規模なシーケンスをディスクのファイルに格納を行う実装に用いることができます。メモリーに読み込まれたシーケンスは、各トランザクションが完了した後にデータの更新が行われてディスクに書き戻されます。なお、空白文字(puts()を用いる)を書き出すごとに、その後print()を呼び出すのを忘れないでください。
ステータスがGET_SUCCESSである場合を除いて返される値に意味はありません。 |
用例: | プログラムがユーザにキーボードから数値を入力するよう求めていると仮定します。 |
-- ユーザが 77.5を入力したときは このようにget(0)は返します: {GET_SUCCESS, 77.5} -- gets(0)のときはこのように返します: "77.5\n" | |
プログラム例: | demo\mydata.ex |
関連事項: | print, value, gets, getc, prompt_number, prompt_string |
動作環境: | DOS32 |
書式: | include image.e i = get_active_page() |
解説: | 大多数のビデオカードにおいていくつかのグラフィックスモードでは複数のページメモリーを持っています。これはスクリーンに単一のページを表示している間に別のページにイメージを書き込みます。get_active_page()は現在出力中のページ番号としてスクリーンに送られたページを始点として返します。 |
注釈: | 有効になっているページと表示中のページの両方の規定値では0です。
video_config()は現在のグラフィックスモードでページ数がいくつかあるか調べることができます。 |
関連事項: | set_active_page, get_display_page, video_config |
動作環境: | DOS32 |
書式: | include image.e s = get_all_palette() |
解説: | 現在のグラフィックスモードにおいて全色を読み出します。sは次のシーケンスの形式です: {{r,g,b}, {r,g,b}, ..., {r,g,b}} 各要素は対応する色番号のために明度{赤,緑,青}を読み出します。色番号0から開始されます。赤・緑・青の値の範囲は0から63です。 |
注釈: | この関数は、save_bitmap()でパレットの値が必要なときに使用されるときがあります。save_bitmap()は0から255までの値を範囲を想定していますのでsave_bitmap()を呼ぶ前に、これらパレットの値に対して4で乗算を行うことを忘れないでください。 |
関連事項: | palette, all_palette, read_bitmap, save_bitmap, save_screen |
書式: | include get.e s = get_bytes(fn, i) |
解説: | 次のnバイトをファイル番号fnから読み取ります。バイトで構成されるシーケンスが返されます。ファイルから残りを読み取った結果としてiバイトより少ない場合を除いてシーケンスはiと長さが等しくなります。 |
注釈: | i > 0 and length(s) < iならば、iはファイル終端に到達したことを検出することができます。最終的にsには空のシーケンスが返されます。
この関数はファイルを開くのに通常はバイナリモード"rb"を使用します。これはDOSがCR+LFをLFに変換してしまうテキストモードの紛らわしさ回避するためです。 |
用例: | |
include get.e integer fn fn = open("temp", "rb") -- 既存のファイル sequence whole_file whole_file = {} sequence chunk while 1 do chunk = get_bytes(fn, 100) -- このときに100byte読み取ります。 whole_file &= chunk -- チャンクは空の場合もありますが、大丈夫です。 if length(chunk) < 100 then exit end if end while close(fn) ? length(whole_file) -- DIR の大きさが "temp"と一致する必要がある。 | |
関連事項: | getc, gets |
動作環境: | DOS32 |
書式: | include image.e i = get_display_page() |
解説: | 大多数のビデオカードにおいていくつかのグラフィックスモードでは複数のページメモリーを持っています。これはスクリーンに単一のページを表示している間に別のページにイメージを書き込みます。get_display_page()は現在表示中のページ番号をモニターに表示されたページを始点として返します。 |
注釈: | 有効になっているページと表示中のページの両方の規定値では0です。
video_config()は現在のグラフィックスモードでページ総数を調べることができます。 |
関連事項: | set_display_page, get_active_page, video_config |
書式: | i = get_key() |
解説: | ユーザによるキー入力を待ち時間なし返します。何もキーが押されていないときは-1を返します。ファンクションキー、矢印キーなどに対しては特殊コードを返します。 |
注釈: | オペレーティングシステムは打鍵によって生成された小さな整数をキーボードバッファに保持できます。get_key()はバッファから次のコードか、バッファが空であれば-1を返します。
キーボードの打鍵ごとに任意のキーコードが生成されるかを観察するにはkey.batを実行してください。 |
関連事項: | wait_key, getc |
動作環境: | DOS32, Linux |
書式: | include mouse.e x1 = get_mouse() |
解説: | 最新のマウスイベントを次の形式で返します: {イベント, x座標, y座標}または最後にget_mouse()が呼ばれたときにイベントがなかった場合は-1を返します。
マウスイベントの定数はmouse.eに定義されています: |
global constant MOVE = 1, LEFT_DOWN = 2, LEFT_UP = 4, RIGHT_DOWN = 8, RIGHT_UP = 16, MIDDLE_DOWN = 32, MIDDLE_UP = 64 | |
xとyはイベント時発生時のマウス座標です。get_mouse()はマウスイベントあるいは-1の値を即座に返します。イベント発生時にはウェイトが入りません。イベントを取りこぼすのを避けるためには頻繁な検査を十分する必要があります。次のイベント発生時までに、現在のイベントを取得しなかった場合は破棄されます。実際は、ほぼ全てのイベントを取得することは難しくはありません。マウスポインタを動かすと次のカーソル移動(MOVE)がどこにあるか通信を行うため、通常はカーソル移動(MOVE)イベントを取りこぼすことはあまり深刻ではありません
時々、複数のイベントが検出されることがあります。例えば、左ボタンを押しながら移動するとき、get_mouse()はLEFT_DOWN+MOVE、すなわち2+1または3の値を返します。よって、この場合はand_bits()を使用して、特定のイベントを検出しなければなりません。詳しいことは後述の例を参照してください。 | |
注釈: | 幅320のピクセルグラフィックスモードでは、正しいスクリーン座標が得るためにx値を2で割る必要があります(DOSの奇妙な特徴)。
DOS32では、テキストモードは、xとy座標の寸法は行と桁の位置によって取得する必要があります。Linuxでは、xとyは行と桁に一致するためスクリーン寸法は不要で、(1,1)が左上になります。 DOS32では、このルーチンを使用するためにはDOSマウスドライバが必要です。Linuxでは、GPM Serverが動作中である必要があります。 Linuxでは、マウス移動イベントの検出はテキストコンソールのみ可能でありxtermウィンドウ内ではできません。 Linuxでは LEFT_UP, RIGHT_UPおよびMIDDLE_UPは同一視され識別できません。 get_mouse()は大半のテキストモードおよびピクセルグラフィックスモードで使用できます。 最初にget_mouse()が呼ばれたとき、マウスカーソルまたは反転表示された文字の表示を行います。 一般的にDOSではSVGAグラフィックスモード(640x480ピクセル以上)ではマウスの使用はサポートされていません。この制限はWindows 95(DOS 7.0)では撤廃されています。グレーム・バーク(Graeme Burke)、ペーター・ブール(Graeme Burke)および他のかたにより寄贈されたマウスルーチンでは、この問題を回避しておりSVGAでマウスを使用できます。詳しくはEuphoriaアーカイブページを参照してください。 x,y座標の返値はマウスポインタの最も先端またはマウスポインタが指したピクセルを参照する場合があります。 get_pixel()を使用してピクセルの色を読み取ろうとするならば事前に検証を行ってください。場合により、x-1, y-1の位置から読み取る必要があります。 |
用例1: | 次のような返値が返されたとします: |
{2, 100, 50} | |
これは左ボタンが押されておりマウスポインタがスクリーンのx=100、y=50の座標にあることを意味します。 | |
用例: | LEFT_DOWNの検出は次のように記述してください: |
object event while 1 do event = get_mouse() if sequence(event) then if and_bits(event[1], LEFT_DOWN) then -- 左ボタンが押された。 exit end if end if end while | |
関連事項: | mouse_events, mouse_pointer, and_bits |
動作環境: | DOS32 |
書式: | x = get_pixel(s) |
解説: | 2要素のからなるスクリーン座標{x, y}であるとき、get_pixel()はピクセルグラフィックススクリーンの指定位置のピクセルの色(小さな整数)を返します。 sが3要素のシーケンス形式{x, y, n}であるとき、get_pixel()は始点{x, y}から{x+1, y}, {x+2, y} などといったように右方向へピクセルを取得してn色のシーケンスを返します。 スクリーン外の点の色の値は未定義であり不定です。 |
注釈: | nが指定されたとき、スクリーン上のピクセルの色を読み込むために非常に高速なアルゴリズムが使用されます。get_pixel()を一つずつ呼んでピクセルと色を読み出すnに大きな値を指定して一括で呼び出したほうが高速です。 |
用例: | |
object x x = get_pixel({30,40}) -- x=30, y=40の地点の色値がxに設定されます。 x = get_pixel({30,40,100}) -- xにはシーケンス内の整数値100が設定され、 -- 右側から{30,40}の位置に色があることを表します。 | |
関連事項: | pixel, graphics_mode, get_position |
書式: | include graphics.e s = get_position() |
解説: | 現在のカーソルの行と桁の位置を2要素のシーケンス{行, 桁}で返します。 |
注釈: | get_position()はテキストおよびピクセルグラフィックスモード のどちらでも動作します。ピクセルグラフィックスモード ではカーソルを表示しませんが、get_position()は行と桁を返してから次の文字を表示します。
テキスト表示はピクセル表示と座標システムに違いがあります。ピクセルは左上(x=0,y=0)から表示が行われ座標の始点は左から右へと水平に制御されます。ピクセルグラフィックスモードはテキストとピクセルの両方を表示できます。get_position()はテキストを表示するために必要な行と桁のみを返し、ピクセルを描画することはできません。このルーチンで次のピクセルの位置の取得をするのは不適切です。 |
関連事項: | position, get_pixel |
書式: | include image.e s = get_screen_char(i1, i2) |
解説: | 2要素からなるシーケンスsを返します。sの形式は{アスキーコード, 色属性}が返されスクリーン上の文字位置指定は行はi1、 桁はi2となります。sは2つのアトムから構成されます。sの最初は文字のASCIIコードです。次は文字の状態を表しておりアトムからなる前景と背景色とその他の情報です。 |
注釈: | screen_char()およびput_screen_char()でスクリーン上の文字と属性を保存および復元することができます。 |
用例: | |
-- 左上端の文字と属性を読み取ります。 s = get_screen_char(1,1) -- 行25, 桁10の文字と属性が格納されます。 put_screen_char(25, 10, {s}) | |
関連事項: | put_screen_char, save_text_image |
動作環境: | DOS32 |
書式: | include machine.e s = get_vector(i) |
解説: | 割り込み番号iのハンドラのためにプロテクトモード時のfarアドレスを返します。sは2要素のシーケンスです: {16-bit セグメント, 32-bit オフセット} |
用例: | |
s = get_vector(#1C) -- sにはクロックチック割り込みハンドラの -- farアドレスが設定されます。例えば: {59, 808} | |
プログラム例: | demo\dos32\hardint.ex |
関連事項: | set_vector, lock_memory |
書式: | i = getc(fn) |
解説: | 次の文字(バイト)をファイルまたはデバイスfnから取得します。文字は0から255までの値を持ちます。-1のアトムが返されたときはファイルの終端です。 |
注釈: | getc()をファイル入力に使用するとバッファリングされます。すなわち、実際はgetc()では文字ごとにディスクに出力されません。その代わり、巨大な文字ブロックは一度に読み込まれてメモリーバッファからひとつずつ返されます。
getc()がキーボードから何か読み取るとき、どのような文字であってもEnterが押されるまで読み終えません。プログラムがキーボードからなにか読み取るとき、ユーザがCtrl+Zを入力してしまうと、オペレーティングシステムは"ファイル終端"として処理します。この場合は-1が返されます。 |
関連事項: | gets, get_key, wait_key, open |
書式: | x = getenv(s) |
解説: | 環境変数の値を返します。環境変数が存在しない場合は、-1を返します。 |
注釈: | シーケンスかアトムに-1が返されることがありますので、おそらく結果をオブジェクトとして宣言した変数に代入する必要があるかもしれません。
引数と返値があるかもしれませんが、存在しないかもしれませんし、大文字と小文字は大文字へ同一視されます。また、あなたがこの関数を使用する前にあなたのシステムでこの関数を検証をする必要があるかもしれません。 |
用例: | |
e = getenv("EUDIR") -- e は "C:\EUPHORIA" -- または D:, E: などかもしれません。 | |
関連事項: | command_line |
書式: | x = gets(fn) |
解説: | 次の文字シーケンス('\nを含む一行)をファイルまたはデバイスfnから取得します。文字は0から255までの値を持ちます。-1のアトムが返されたときはファイルの終端です。 |
注釈: | シーケンスまたはアトム(-1)のいずれかが返されるため恐らく結果を代入する変数はオブジェクト型として宣言する必要があります。
キーボードから一行テキストを読み込んだ後に、通常は\n文字が出力する必要があります。すなわち、何かを出力する前にputs(1,'\n')を実行します。スクリーン最終行のみオペレーティングシステムは自動的にスクリーンをスクロールして次の行へ移ります。 ファイル最終行は改行文字'\n'では終わっていないかもしれません。 プログラムがキーボードからなにか読み取るとき、ユーザがCtrl+Zを入力してしまうと、オペレーティングシステムは"ファイル終端"として処理します。この場合は-1が返されます。 DOS/Windowsにおける正式な改行は\r\nですが\nだけでもgets()は動作します。いずれの場合も単体の\nが改行の終わりに現れます。Linux/Freeでは正式な改行は単純に'\n'です。 SVGAモードでは、DOSはgets(0)を呼び出してキーボードから読み取った後にカーソルを不正な位置に設定するかもしれません。このときはposition()を用いて設定する必要があります。 |
用例1: | |
sequence buffer object line integer fn -- テキストファイルを読み取ってからシーケンスへ格納します。 fn = open("myfile.txt", "r") if fn = -1 then puts(1, "Couldn't open myfile.txt\n") abort(1) end if buffer = {} while 1 do line = gets(fn) if atom(line) then exit -- -1が返されたときはファイルの終端です。 end if buffer = append(buffer, line) end while | |
用例2: | |
object line puts(1, "What is your name?\n") line = gets(0) -- 標準入力を読み取ります(キーボード) line = line[1..length(line)-1] -- 末尾の\n文字を除去します。 puts(1, '\n') -- 必要 puts(1, line & " is a nice name.\n") | |
関連事項: | getc, puts, open |
動作環境: | DOS32 |
書式: | include graphics.e i1 = graphics_mode(i2) |
解説: | グラフィックスモードとしてi2を選択します。有効なグラフィックスモードのリストはgraphics.eを参照してください。なお、処理が成功したときはi1に0を設定し、その他のときはi1に1を設定します。 |
注釈: | いくつかのモードはテキストのみ表示可能であるためテキストモードと呼ばれています。その他のモードはピクセルグラフィックスモードと呼ばれており、ピクセル、ライン、楕円などを表示することができます。さらにテキストも扱えます。
ユーザへの便宜としてプログラム終了前にピクセルグラフィックモードからgraphics_mode(-1)で標準テキストモードへ切り替えて復帰することは良い心がけです。もしピクセルグラフィックプログラムが何らかの原因でスクリーンを汚したままのときはDOSのCLSコマンドまたはexかedによって消去することができます。 特定のグラフィックスカードは条件などによりSVGAモードのいくつかを利用できません。グラフィックスモードが使用可能かどうかに関わらず、i1の値を得ることはできません。 WIN32およびLinux/FreeBSD環境では、graphics_mode()はテキストコンソールがまだ存在していないときはテキストコンソールを割り当てます。どのような値であってもi2に値が渡されたとしても、0を返します。 |
用例: | |
if graphics_mode(18) then puts(SCREEN, "need VGA graphics!\n") abort(1) end if draw_line(BLUE, {{0,0}, {50,50}}) | |
関連事項: | text_rows, video_config |