X68互換/便利/カード関数


[戻る]
全関数名リストはこちら


// X68互換関数

X-BASIC'はX-BASIC/68のプログラムをそのまま動かすことではなく、
X-BASIC自体をiOS上で動かすことを目的として開発したため、同名の関数でも異なる引数や
動作をするものが多数あります。

しかし、実際のところiOS版上で新規に作られるプログラムは殆ど無く、68版を移植するためには
相互の違いを把握した上でプログラムを組む必要が有るため、かなり手間がかかりました。

X68互換関数は、X-BASIC/68とほぼ同じ引数を持ち、動作をする関数を用意することでこの手間を
削減しようとしたものです。
X68互換動作モードを作ろうかとも思いましたが、大変なので、別関数群にしています。
このため、関数名の書き換えは必須となりますが、それさえ行えば、移植作業がかなり楽になると思います。

X68互換関数の利用には、X-BASIC/68の知識が必要になる場合があります。

なお、X68互換関数を使うためには、設定で「X68互換関数」が「オン」になっている必要があります。
関数名 tColorX68
書式 tColorX68(n;int)
機能 テキストの描画色と属性を設定する
引数 色を変更するにはtColorPaletX68()を使用します。
n色&属性コード;0~15。以下の成分で構成されて、OR指定できます。
bit0,1色;0=黒、1=シアン、2=黄色、3=白
bit2強調(太字)
bit3リバース(反転)
「例」5=強調シアン,15=リバース強調白
戻り値 なし
X-BASIC/68関数名 color
サンプルafuncX68Test.bas

関数名 tColorPaletX68
書式 tColorPaletX68([c0;int][,c1;int][,c2;int][,c3;int])
機能 tColorX68()で設定する色コードに対する実描画色を設定する
引数
c0tColorX68(0)で表示する色の合成RGB値
c1tColorX68(1)で表示する色の合成RGB値
c2tColorX68(2)で表示する色の合成RGB値
c3tColorX68(3)で表示する色の合成RGB値
それぞれ省略した場合は前の値のまま。
戻り値 なし
補足RUN時には、毎回初期化されます
X-BASIC/68関数名 color[]
サンプルafuncX68Test.bas

関数名 vpageX68
書式 vpageX68(page;int[,fsprite;int])
機能 グラフィックの表示ページとスプライトの表示を指定する。
引数
page表示対象ページ
ビット対応で同時に複数ページを指定できる。指定してないページは非表示になる。
bit0 グラフィック画面0
bit1 グラフィック画面1
bit2 グラフィック画面2
bit3 グラフィック画面3
fspriteスプライトを表示するかどうか
YES 表示する
NO 表示しない(省略時)
戻り値 なし
補足テキスト画面は常に表示されるよう設定される
X-BASIC/68関数名 vpage
サンプルp68-246g.bas

関数名 apageX68
書式 apageX68(page;int)
機能 グラフィックの読み書きするページを設定する。
引数
page表示対象ページ0〜3
戻り値 なし
X-BASIC/68関数名 apage
サンプルp68-246g.bas

関数名 homeX68
書式 homeX68(page;int,hx;int,hy;int)
機能 グラフィックページの表示開始位置を設定する。
引数
page対象ページ0〜3
hx,hy表示開始座標グラフィック座標
戻り値 なし
X-BASIC/68関数名 homeが近いが本質は異なる。
X68は実画面サイズと表示画面サイズが異なることがあるため、
home()は実画面の内どの座標からを表示に出すかを設定するが、
iOSで常には実画面サイズ=表示画面サイズなので画面表示の開始位置の設定となる。
また、X68では実画面サイズ=表示画面サイズのときは球面スクロールするが、iOSではしない。
サンプルp68-246g.bas

関数名 gColor16X68
書式 gColor16X68(pal;int)
機能 16色パレットコードでグラフィック描画色を設定する。
X68互換関数ではないグラフィック描画関数の描画色設定に使う。
引数
palパレットコード0~15
実描画色を変更するにはsetgPalet16X68()を使用します。
戻り値 なし
X-BASIC/68関数名 なし
サンプルafuncX68Test.bas

関数名 gColorX68
書式 gColorX68(col;int)
機能 X68K色コードでグラフィック描画色を設定する。
X68互換関数ではないグラフィック描画関数の描画色設定に使う。
引数
colX68色コード0~65535
戻り値 なし
X-BASIC/68関数名 なし
サンプルrgbX68X68.bas,hsvX68X68.bas

関数名 setgPalet16X68
書式 setgPalet16X68(pal;int,col;int)
機能 互換/便利関数の16色パレットコードに対応する実描画色を設定する
引数
pal設定したい色パレットコード0~15
col実描画色の合成RGB値
戻り値 なし
補足RUN時には、毎回初期化されます
X-BASIC/68関数名 palet
サンプルc13down.bas

関数名 getgPalet16X68
書式 int getgPalet16X68(pal;int)
機能 16色パレットコードに対応する実描画色を読み出す
引数
pal読み出したい色パレットコード0~15
戻り値 実描画色の合成RGB値
補足標準のパレットは、X68の表示色と同じです
X-BASIC/68関数名 なし
サンプルafuncX68Test.bas,cPyramid.bas

関数名 pset16X68
書式 pset16X68(x;int,y;int,pal;int)
機能 16色パレットコードで点を描画する
引数
x,y座標
pal16色パレットコード
戻り値 なし
X-BASIC/68関数名 pset
ただし、座標はクリッピングに対応しない。
サンプルafuncX68Test.bas

関数名 line16X68
書式 line16X68(sx;int,sy;int,ex;int,ey;int,pal;int[,style])
機能 16色パレットコードで直線を描画する
引数
sx,sy始点座標
ex,ey終点座標
pal16色パレットコード
styleラインスタイルを設定する
16ビットで、bit=1のところが描画される。
省略したときは&hffff。

補足:
iOSでは必ず描画から始めなければならないので、
最上位ビットからに0が続く場合(非描画から始まる場合)、
その分は最下位ビットからに移動される。
「例」&h5555 (01010101 01010101) は &haaaa (10101010 10101010)に変換される
戻り値 なし
X-BASIC/68関数名 line
ただし、ラインスタイルの指定には上記の通り制約がある。
また、座標はクリッピングに対応しない。
サンプルafuncX68Test.bas

関数名 box16X68
書式 box16X68(sx;int,sy;int,ex;int,ey;int,pal;int[,style;int])
機能 16色パレットコードで四角を描画する
引数
sx,sy始点座標
ex,ey終点座標
pal16色パレットコード
styleラインスタイル
詳細はline16X68()のstyle参照のこと。
省略したときは&hffff
戻り値 なし
X-BASIC/68関数名 box
ただし、ラインスタイルの指定には上記の通り制約がある。
また、座標はクリッピングに対応しない。
サンプルafuncX68Test.bas

関数名 fill16X68
書式 fill16X68(sx;int,sy;int,ex;int,ey;int,pal;int)
機能 16色パレットコードで四角を塗りつぶす
引数
sx,sy始点座標
ex,ey終点座標
pal16色パレットコード
戻り値 なし
X-BASIC/68関数名 fill
ただし、座標はクリッピングに対応しない。
サンプルp68-246g.bas,afuncX68Test.bas

関数名 circle16X68
書式 circle16X68(cx;int,cy;int,r;int,pal;int[,st;int][,ed;int][,hv;int])
機能 16色パレットコードで円または円弧を描画する
引数
cx,cy中心座標
r 半径
pal16色パレットコード
st描画開始角度(度)
角度は水平を0として反時計回り
省略すると0
負数を指定すると扇を描く。
扁平率を指定した時は常に0とみなされる。
ed描画終了角度(度)
省略すると360
負数を指定すると扇を描く。
扁平率を指定した時は常に360とみなされる。
hv扁平率:0〜65535
>256縦長楕円
<256横長楕円
=256または0縦横とも=r;真円
省略すると256(真円)。
戻り値 なし
X-BASIC/68関数名 circle
ただし、座標はクリッピングに対応しない。
また、縦扁平率の結果はX68と全く同じではない(4096くらいまではほぼ同じ)。
サンプルp68-246g.bas,afuncX68Test.bas

関数名 symbol16X68
書式 symbol16X68(sx;int,sy;int,mes;str,bai;float,pal;int,font;str[,fontsz;int])
機能 16色パレットコードで文字列を描画する
引数
sx,sy始点座標
mes文字列
bai描画倍率
X68と異なり、縦横に対し両方に作用します。
pal16色パレットコード
fontフォント名
fontszフォントサイズ
省略時は16
戻り値 なし
補足 指定されたフォントが見つからないときはデフォルトフォントを使う
X-BASIC/68関数名 symbol
ただし、倍率、フォント名、サイズ指定が異なる。
また、座標はクリッピングに対応しない。
サンプルp68-246g.bas,afuncX68Test.bas

関数名 psetX68
書式 psetX68(x;int,y;int,col;int)
機能 X68色で点を描画する
引数
x,y座標
colX68色
戻り値 なし
X-BASIC/68関数名 pset
ただし、座標はクリッピングに対応しない。
サンプルp68-246g.bas

関数名 lineX68
書式 lineX68(sx;int,sy;int,ex;int,ey;int,col;int[,style])
機能 X68色で直線を描画する
引数
sx,sy始点座標
ex,ey終点座標
colX68色
styleラインスタイル
詳細はline16X68()のstyle参照のこと。
省略したときは&hffff
戻り値 なし
X-BASIC/68関数名 line
ただし、ラインスタイルの指定には上記の通り制約がある。
また、座標はクリッピングに対応しない。
サンプルp68-246g.bas

関数名 boxX68
書式 boxX68(sx;int,sy;int,ex;int,ey;int,col;int[,style;int])
機能 X68色で四角を描画する
引数
sx,sy始点座標
ex,ey終点座標
colX68色
styleラインスタイル
詳細はline16X68()のstyle参照のこと。
省略したときは&hffff
戻り値 なし
X-BASIC/68関数名 box
ただし、ラインスタイルの指定には上記の通り制約がある。
また、座標はクリッピングに対応しない。
サンプルp68-246g.bas

関数名 fillX68
書式 fillX68(sx;int,sy;int,ex;int,ey;int,col;int)
機能 X68色で四角を塗りつぶす
引数
sx,sy始点座標
ex,ey終点座標
colX68色
戻り値 なし
X-BASIC/68関数名 fill
ただし、座標はクリッピングに対応しない。
サンプルafuncX68Test.bas

関数名 circleX68
書式 circleX68(cx;int,cy;int,r;int,col;int[,st;int][,ed;int][,hv;int])
機能 X68色で円または円弧を描画する
引数
cx,cy中心座標
r 半径
colX68色
st描画開始角度(度)
角度は水平を0として反時計回り
省略すると0
負数を指定すると扇を描く。
扁平率を指定した時は常に0とみなされる。
ed描画終了角度(度)
省略すると360
負数を指定すると扇を描く。
扁平率を指定した時は常に360とみなされる。
hv扁平率。詳細はcircle16X68()の扁平率を参照のこと。
戻り値 なし
X-BASIC/68関数名 circle
ただし、座標はクリッピングに対応しない。
また、縦扁平率の結果はX68と全く同じではない。
サンプルp68-246g.bas

関数名 symbolX68
書式 symbolX68(sx;int,sy;int,mes;str,bai;float,col;int,font;str[,fontsz;int])
機能 X68色で文字列を描画する
引数
sx,sy始点座標
mes文字列
bai描画倍率
X68と異なり、縦横に対し両方に作用します。
colX68色
fontフォント名
fontszフォントサイズ
省略時は16
戻り値 なし
補足 指定されたフォントが見つからないときはデフォルトフォントを使う
X-BASIC/68関数名 symbol
ただし、倍率、フォント名、サイズ指定が異なる。
また、座標はクリッピングに対応しない。
サンプルafuncX68Test.bas

関数名 rgbX68
書式 int rgbX68(r;int,g;int,b;int)
機能 X68の個別RGB値から合成RGB値を計算する。
引数 X68の色成分
r赤成分0~31
g緑成分0~31
b青成分0~31
戻り値 合成RGB値
リターン値の最下位8ビットにはアルファ値が&hffで入っているため、
X68の処理でよく出てくるrgb(r,g,b)+1という式はrgbX68(r,g,b)と変更します。
iOSには輝度ビットはないので、+1は不要になります。
X-BASIC/68関数名 rgb
サンプルp68-246g.bas

関数名 hsvX68
書式 int hsvX68(h;int,s;int,v;int)
機能 X68のHSV値から合成RGB値を計算する。
引数 X68のHSV成分
h色相(h)成分0~191
s飽和度(s)成分0~31
v明るさ(v)成分0~31
戻り値 合成RGB値
リターン値の最下位8ビットにはアルファ値が&hffで入っているため、
X68の処理でよく出てくるhsv(h,s,v)+1という式はhsvX68(h,s,v)と変更します。
iOSには輝度ビットはないので、+1は不要になります。
X-BASIC/68関数名 hsv

関数名 rgbX68X68
書式 int rgbX68X68(r;int,g;int,b;int)
機能 X68の個別RGB値からX68の65536色を計算する。
引数 X68の色成分
r赤成分0~31
g緑成分0~31
b青成分0~31
戻り値 X68の65536色
X-BASIC/68関数名 rgb
サンプルrgbX68X68.bas

関数名 hsvX68X68
書式 int hsvX68X68(h;int,s;int,v;int)
機能 X68のHSV値からX68の65536色を計算する。
引数 X68のHSV成分
h色相(h)成分0~191
s飽和度(s)成分0~31
v明るさ(v)成分0~31
戻り値 X68の65536色
X-BASIC/68関数名 hsv
サンプルhsvX68X68.bas,p68-246g.bas

関数名 randX68
書式 int randX68([type;int]])
機能 0~32767の整数疑似乱数を発生する
引数
type 乱数の発生方式
NOまたは省略時 V3.00未満と同じ
YES より周期の長い乱数列を返す
戻り値 乱数値
X-BASIC/68関数名 rand

関数名 contrastX68
書式 contrastX68(ns;int,ne;int,spd;float[,mode;int])
機能 画面の明るさ(コントラスト)を設定する
引数
ns コントラストの初期値0~15
ne コントラストの最終設定値0~15
spd 変化速度wait()の引数と同じ
mode 設定する画面 以下の定数のORで指定する。
CONTRAST_GRAPHIC グラフィック画面
CONTRAST_TEXT テキスト画面
CONTRAST_SPRITE スプライト画面
省略時は全て。
戻り値 なし
X-BASIC/68関数名 contrast()が近い。
X68のcontrast()は現在の明るさから指定値までをアナログ的に変化させるが、
iOSは現在の明るさを保存していないので、開始値と終了値の両方を与える必要がある。
サンプルafuncX68Test.bas

関数名 bg_fillX68
書式 int bg_fillX68(pg;int,pd;int)
機能 指定されたBGテキストページをパターンで埋める
引数
pg BGテキストページ番号 0/1
pd パターンデータ 次のビット構成にする。
bit0~7 パターン番号 0~255
bit8~11 パレットブロック 1~15
0は使えない
bit14 水平反転 1=反転,0=普通
bit15 垂直反転 1=反転,0=普通
戻り値 常に0
補足
X-BASIC/68関数名 bg_fill

関数名 bg_putX68
書式 int bg_putX68(pg;int,x;int,y;int,pd;int)
機能 指定されたBGテキストページの座標にパターンを登録する。
引数
pg BGテキストページ番号 0/1
x,yBGテキストページ座標 x,y共に0~127
pd パターンデータ 次のビット構成にする。
bit0~7 パターン番号 0~255
bit8~11 パレットブロック 1~15
0は使えない
bit14 水平反転 1=反転,0=普通
bit15 垂直反転 1=反転,0=普通
戻り値 常に0
補足
X-BASIC/68関数名 bg_put

関数名 bg_getX68
書式 int bg_getX68(pg;int,x;int,y;int)
機能 指定されたBGテキストページの座標から登録されているパターン番号を読み出す。
引数
pg BGテキストページ番号 0/1
x,y BGテキストページ座標 x,y共に0~127
戻り値 パターンデータ。次のビット構成になっている。
bit0~7 パターン番号 0~255
bit8~11 パレットブロック 1~15
bit14 水平反転 1=反転,0=普通
bit15 垂直反転 1=反転,0=普通
補足
X-BASIC/68関数名 bg_get

関数名 sp_colorX68
書式 int sp_colorX68(pc;int,col;int[,pb;int])
機能 X68000の色コードでパレットブロックを定義する
引数
pc パレットコード 0~15
基本的には0は変更しないこと(透明固定)
col割り付ける色 X68000の色コード
pb パレットブロック番号 1~31
省略時は1。0は使えない。
戻り値 変更する前のiOS色の合成RGB値
補足
X-BASIC/68関数名 sp_color

関数名 sp_setX68
書式 int sp_setX68(pl;int[,x;int][,y;int][,pd;int][,prw;int])
機能 スプライトパターンをプレーンに登録、表示位置を設定する。
sp_move()より細かい設定が出来る。
引数
pl プレーン番号 0~255
x,y表示座標 int範囲内で自由(負数~画面幅以上)
省略すると前の表示座標のまま(初期は(16,16))
表示画面の左上座標は(16,16)になる(sp_move()とは異なる)。
pd パターンデータ 次のビット構成にする。
bit0~7 パターン番号 0~255
bit8~11 パレットブロック 1~15
0は使えない
bit14 水平反転 1=反転,0=普通
bit15 垂直反転 1=反転,0=普通
prw表示優先順位
0=SPRITE_PRW_HIDE 表示しない
1=SPRITE_PRW_BG0BG1SPBG0>BG1>スプライト
2=SPRITE_PRW_BG0SPBG1BG0>スプライト>BG1
3=SPRITE_PRW_SPBG0BG1スプライト>BG0>BG1(省略時)
戻り値 常に0
補足
X-BASIC/68関数名 sp_set



// 便利関数

便利関数は、プログラム記述上、よく使われる処理を関数化したものです。

便利関数を使うためには、設定で「X68互換関数」が「オン」になっている必要があります。
関数名 localizedString
書式 str localizedString(js;str,es;str)
機能 iOSの言語設定に応じ、文字列を返す
引数
js 日本語環境時に返す文字列
es 日本語以外環境時に返す文字列
戻り値 jsまたはesどちらか
サンプルv3test.bas

関数名 hitKey
書式 hitKey([fcls;int][,js;str][,es;str])
機能 タップされるまで待つ
引数
fcls タップした後にテキスト画面をクリアするかどうか
YES=クリアする(省略時),NO=しない
js 日本語環境時に表示する文字列。省略時は"ここをタップしてください"
es 日本語以外環境時に表示する文字列。省略時は"Tap Here"
戻り値 なし
補足
  • タップを待っている間、乱数がかき回される
  • ファンクションキーを書き換えるので、前後でそれを使う場合は再設定すること

関数名 getch
書式 int getch()
機能 何かキーコードが返されるまで待ち、返されたらそのキーコードを返す
引数 なし
戻り値 キーコード
補足 予め、タッチエリアまたはファンクションキーによりキーコードを設定しておく必要がある。

関数名 vwait
書式 int vwait(tm;int)
機能 1/60sec=16.6ms単位で時間待ちをする
引数
tm 1/60秒単位の待ち時間
戻り値 なし
vwait(60) :// 1秒待つ

関数名 rand2
書式 int rand2(seed;int[,type;int])
機能 0~seed-1の整数疑似乱数を発生する
引数
seed 乱数上限値+1
type 乱数の発生方式
NOまたは省略時 V3.00未満と同じ
YES より周期の長い乱数列を返す
戻り値 整数乱数値

関数名 srand2
書式 srand2()
機能 rand()/ rnd()/ rand2()の系列を時計から初期化する。
時計から初期化するので、呼び出しごとに異なった系列が自動設定される。
複数回連続で呼び出しても、必ず異なる系列になる。
引数 なし
戻り値 なし

関数名 bell
書式 bell(tim;int)
機能 指定回数beep2(1)相当の音を鳴らす
引数
tim 鳴らす回数
戻り値 なし

関数名 circle16X68b
書式 circle16X68b(x;int,y;int,r;int,pal;int)
機能 16色パレットコードで円をビットマップに描画する
引数
cx,cy中心ビットマップ座標
r 半径
pal16色パレットコード
戻り値 なし
サンプルafuncX68Test.bas,cTen.bas

関数名 paint16X68b
書式 paint16X68b(x;int,y;int,pal;int)
機能 16色パレットコードでビットマップ内単色領域を塗りつぶす
引数
x,yビットマップ座標
pal16色パレットコード
戻り値 なし
サンプルafuncX68Test.bas,cTen.bas

関数名 circleX68b
書式 circleX68b(x;int,y;int,r;int,col;int)
機能 X68色で円をビットマップに描画する
引数
cx,cy中心ビットマップ座標
r 半径
colX68色
戻り値 なし
サンプルafuncX68Test.bas

関数名 paintX68b
書式 paintX68b(x;int,y;int,col;int)
機能 X68色でビットマップ内単色領域を塗りつぶす
引数
x,yビットマップ座標
colX68色
戻り値 なし
サンプルafuncX68Test.bas

関数名 x68Color2iOSColor
書式 int x68Color2iOSColor(col;int[,r;int,g;int,b;int,alpha;int])
機能 X68000の16bit色コードをiOSの色コードに変換する。
引数
colX68000での16bit色コード。ただし、輝度ビットは無視される。
r,g,b,alpha各色成分を返す。値を入れるため必ず変数で指定すること。
省略した場合は戻り値のみ使う。
戻り値 合成RGB色
補足 単純に算術変換しているため、実際の色合いはX68000実機と異なる場合があります。
サンプルspSet.bas,p68-246g.bas

関数名 x68256Color2iOSColor
書式 int x68256Color2iOSColor(col;int[,r;int,g;int,b;int,alpha;int])
機能 X68000の256色コードをiOSの色コードに変換する。
引数
colX68000での256色コード
r,g,b,alpha各色成分を返す。値を入れるため必ず変数で指定すること。
省略した場合は戻り値のみ使う。
戻り値 合成RGB色
補足 X68000実機での発色に合わせた色コードを返します。
サンプルc256.bas,ChrisGray.bas

関数名 x6816Color2iOSColor
書式 int x6816Color2iOSColor(col;int[,r;int,g;int,b;int,alpha;int])
機能 X68000の16色コードをiOSの色コードに変換する。
引数
colX68000での16色コード
r,g,b,alpha各色成分を返す。値を入れるため必ず変数で指定すること。
省略した場合は戻り値のみ使う。
戻り値 合成RGB色
補足 X68000実機での発色に合わせた色コードを返します。
サンプルp68-246g.bas,フラクタルグラフィックス.bas

関数名 ptrn16X68toiOS
書式 ptrn16X68toiOS(wxy;int,ptrnX68();char,ptrniOS();int[,fdouble;int][ftoumei;int])
機能 X68の16色パターンをiOSフルカラーパターンに変換する
引数
wxyパターンデータの要素数
x幅*y幅
ptrnX68X68の16色パターン
1要素=1バイトの上位下位4ビットずつに16色パレットコードが格納される形式。 要素数はwxy/2以上必要
ptrniOS変換後のフルカラーパターンデータを格納する配列
1要素にパレットコードを実色に変換した合成RGB色が入る。
要素数はfdouble=NOでwxy、YESでwxy*2以上必要となる。
fdouble横倍化するかどうか
YES=する、NO=しない(省略時)
ftoumeiパレットコード0を透明にするかどうか
YES=する、NO=しない(省略時)
戻り値 なし
サンプルafuncX68Test.bas,cBJ.bas

関数名 ptrn8to16
書式 ptrn8to16(ptrnX68();char,ptrn16();char)
機能 8*8のパターンデータを16*16のパターンデータに変換する
X68のスプライトパターンは画面モードによって8*8のことがあるが、iOSでは16*16のみなので、その変換のためにある。
引数
ptrn88*8のパターンデータ
要素数は8*8=64バイト以上必要
ptrn16変換後のパターンデータを格納する配列
要素数は16*16=256バイト以上必要
戻り値 なし
サンプルp40.bas

関数名 PCMplay
書式 PCMplay(no;int,fwait;int)
機能 登録されている音声を再生する
引数
noバッファー番号
fwait再生終了を待つかどうか
YES=待つ,NO=待たない
戻り値 なし

関数名 WaitPCM
書式 WaitPCM(no;int)
機能 直前のPCMplay()a_play()による音声再生が終了するのを待つ
引数
noバッファー番号
戻り値 なし

関数名 deg2rad
書式 float deg2rad(deg;float)
機能 度をラジアンに変換する
引数
戻り値 ラジアン
サンプルv3test.bas

関数名 rad2deg
書式 float rad2deg(rad;float)
機能 ラジアンを度に変換する
引数 ラジアン
戻り値
サンプルv3test.bas

関数名 setTouchKeys
書式 int setTouchKeys(sx;int,sy;int,xc;int,yc;int,k1x;int,k1y;int,keys();int[,disps();str][,fnt;str][,touchNo();int][,dx;int][,dy;int])
機能 タッチキーを設定&表示する
引数
sx,syタッチキーの表示開始座標
xcタッチキーの横個数
ycタッチキーの縦個数
k1x,k1y1タッチキーの表示幅
keys設定キー群を格納したxc*yc個の要素を持つ配列。要素に以下の情報を格納する。
0ここは表示されない
&h01〜&hffキーコード
+FKEY_NOT_BEGANONLYエリア外からエリア内に入ってきたときも反応する
(設定しない時はそのエリア内をタッチしたときのみ反応する)
+FKEY_NOT_REPEATこのキーはリピートしない
+FKEY_WAKUONLY枠のみ描画する(タッチキーにはならない)
dispsキーの表示文字列群を要素に格納した配列
省略した場合は全体がタッチエリアだけの設定になる
要素内容が""の部分は枠線も文字も描画されずタッチエリアだけの設定になる
fnt表示フォント名
dispsが省略された時に限り省略できる
touchNo設定されたタッチエリア番号を格納する配列(設定結果がここに格納される)
予めdim int touchNo(xc*yc個)で用意しておくこと。
省略時はキーの表示のみ行う(タッチエリアの設定は行われない)
dx,dy1キーごとの表示間隔
省略時は0
各引数意味は以下のとおり。
xc=4,yc=3のとき。(必要keys()は4*3=12。)
戻り値 実設定数。touchNo(0〜戻り値-1)までが使われている
補足
  1. 表示はグラフィック画面に行われるので、予め表示できるようにしておくこと。
  2. 実行後はkBackgroundAlpha(0.9),lineWidth(2)になっている
サンプル keyMap.bas,snake2.bas

関数名 resetTouchKeys
書式 int resetTouchKeys(sx;int,sy;int,xc;int,yc;int,k1x;int,k1y;int,keys();int[,touchNo();int][,dx;int][,dy;int])
機能 タッチキーの表示を消す
引数 各引数は基本的に、setTouchKeys()に与えたものをそのまま与えること。
sx,syタッチキーの表示開始座標
xcタッチキーの横個数
ycタッチキーの縦個数
k1x,k1y1タッチキーの表示幅
keys設定キー群を格納した配列
touchNo設定されたタッチエリア番号を格納した配列
省略時はキーの表示のみ消す(エリア設定は解除されない)
dx,dy1キーごとの表示間隔
省略時は0
戻り値 なし
補足 表示はグラフィック画面に行われるので、予め表示できるようにしておくこと。
補足resetTouchKeys()は必ずタッチキーの表示を消します。したがって、setTouchKeys()でタッチエリアのみ設定した時は、
resetTouchKeys()ではなくresetAllTouchKeys()でエリアを解除してください。
サンプル keyMap.bas,snake2.bas

関数名 resetAllTouchKeys
書式 resetAllTouchKeys(touchNo();int,cnt;int)
機能 setTouchKeys()で設定したタッチキーを解除する(表示は消さない)
引数
touchNosetTouchKeys()の返すタッチキーエリア番号配列
cnt setTouchKeys()の戻り値。
touchNo(0〜cnt-1)までが使われている
戻り値 なし
サンプル keyMap.bas,snake2.bas

関数名 checkCompatible
書式 int checkCompatible(deviceType;int[,fdisplay;int])
機能 実行しているデバイスが指定したデバイス群に含まれるかどうかを調べ、含まれない場合実行不可であることのメッセージを出す。
主に、画面サイズによる実行の可否を確認する目的にある。
引数
deviceTypeデバイス群。以下の定数のor値で指定する。
COMPATIBLE_IPADiPad全機種
COMPATIBLE_IPODTOUCH4iPod touch4
COMPATIBLE_IPODTOUCH56iPod touch5と6
COMPATIBLE_IPODTOUCHiPod touch全機種
COMPATIBLE_IPHONE4iPhone 4
COMPATIBLE_IPHONE5iPhone 5
COMPATIBLE_IPHONE6iPhone 6
COMPATIBLE_IPHONE6PLUSiPhone 6 Plus
COMPATIBLE_IPHONEiPhone 全機種
COMPATIBLE_ALL全機種
COMPATIBLE_IPODTOUCH4_IPHONE4iPod touch4とiPhone4
COMPATIBLE_IPODTOUCH56_IPHONE5iPod touch5/6とiPhone5
X-BASIC'がサポートしない機種は含まれません。
fdisplay 非対応時に確認メッセージを出すかどうか
YES(省略時)出す
NO出さない
戻り値
YESこの機種は対応している
NOこの機種は対応していない
サンプル checkCompatible.bas

関数名 versionXBiOSX68$
書式 versionXBiOSX68$()
機能 X68互換/便利関数のバージョンを返す
引数 なし
戻り値 X68互換/便利関数のバージョン文字列



// カード関数

カード関数は、トランプなどで使われるカードの表示処理を簡便にする関数群です。

Oh!X 1990年5月号に掲載されたCARD.FNCを移植したものです。
都合上、関数の名前は変更してありますが、ほぼ同じ動作をします。

このカード関数を使うためには、設定で「X68互換関数」が「オン」になっている必要があります。

「使い方」
カード関数は表示にビットマップを使います。したがって、ビットマップの設定が必須です。

if cardInit()<>0 then {
    print "カードパターンが読めません"
    end
}
// カード内の黒はパレット1で塗られているので、黒で表示するためにはパレットを変更する必要がある
setgPalet16X68(1,&h000000ff)

vpriority(TPAGE,GPAGE0,GPAGE1,GPAGE2,GPAGE3)
vpage(B_TPAGE+B_GPAGE0+B_GPAGE1+B_GPAGE2+B_GPAGE3,YES)
apage(GPAGE0)
bitmapOpen(0,0,YES)
    ~
    cardPut(x,y,cno,NO)
    ~
bitmapClose()
関数名 cardInit
書式 int cardInit([userFile;str])
機能 カード関数を初期化します
引数
userFile パターンデータファイル
省略時は標準のトランプ用データで初期化される。
戻り値
=0正常終了
<>0エラー発生(カード関数は使えない)
補足 パターンデータファイルは以下の構造を持つこと。
  • 1カードは横48ドット、縦96ドットから成る
  • 1ドットは4ビットの16色パレットコードで記述する。故に、1バイトに2ドット分格納される
  • 1カードデータは48/2*96バイト
  • 60枚分を1ファイルに収める
標準のトランプ用データ内では、黒はパレット1で塗られているので、黒で表示するためにはパレットを変更する必要がある
setgPalet16X68(1,&h000000ff)
サンプルCardTest.bas

関数名 cardCalcNo
書式 int cardCalcNo(suit;int,no;int)
機能 スートと数から通しのカード番号を得る
引数
suitスート番号 SUIT_SPADE/SUIT_HEART/SUIT_DIA/SUIT_CLUB
no番号 1~13
スートとはカードの種類を意味する。
戻り値 通しカード番号
番号がおかしいときは0(裏面)を返す。
補足 裏は通し番号としてCARD_BACK,ジョーカーはCARD_JOKERと指定すること
トランプとは関係ないカードを使うときはこの関数を使わないこと。
サンプルafuncX68Test.bas

関数名 cardPut
書式 cardPut(x;int,y;int,cno;int,fdouble;int)
機能 指定番号のカードを表示する
引数
x,y表示座標
cno通しのカード番号
fdouble横倍化して表示する
標準のパターンはiOS上では縦長に見えるので、このオプションが存在する。
戻り値 なし
X-BASIC/68関数名 c_put
サンプルCardTest.bas,afuncX68Test.bas

関数名 cardGet
書式 int cardGet(cno;int,ptrn();char)
機能 指定番号のカードのパターンを返す
引数
cno通しのカード番号
ptrnX68パターン
戻り値 なし
X-BASIC/68関数名 c_get
サンプルafuncX68Test.bas

関数名 cardSet
書式 int cardSet(cno;int,ptrn();char)
機能 指定番号のカードにパターンを設定する
引数
cno通しのカード番号
ptrnX68パターン
戻り値 なし
X-BASIC/68関数名 c_set
サンプルafuncX68Test.bas

関数名 versionXBiOSCard$
書式 versionXBiOSCard$()
機能 カード関数のバージョンを返す
引数 なし
戻り値 カード関数のバージョン文字列


全関数名リスト(アルファベット順)
X68互換関数 / 便利関数
カード関数
[戻る]