トピック

DATA文にグラフィック命令を書いて、それを実行する方法ってありますか?

1そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
DATA命令に書いたグラフィック命令は実行できませんが DATA命令中にグラフィック命令に相当する命令コードを 記述してそのコードより実行する命令を切り替えれば DATA命令にグラフィック命令を書いてるのと同じような ことができます。
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
【サンプル】 READ CMD IF CMD==-1 THEN END IF CMD==1 THEN READ X1,Y1,X2,Y2,COL GLINE X1,Y1,X2,Y2,COL ENDIF IF CMD==2 THEN READ X1,Y1,COL1,COL2 GPAINT X1,Y1,COL1,COL2 ENDIF
1そうだね
プレイ済み
返信[3]
親投稿
printf printf
質問自体の直接的な回答としてはこうですかね? ACLS FOR I=1 TO 5 READ CMD$,A,B CALL CMD$,A,B NEXT DATA "GPSET",10,100 DATA "GPSET",20,100 DATA "GPSET",30,100 DATA "GPSET",40,100 DATA "GPSET",50,100 ただし、グラフィック命令はそれぞれパラメータの数が異なるので、otta777さんのように使用する命令毎の判定をするか、引数自体を  DATA "GPSET","50,100" のように一つの文字列で定義しておき、文字列の分解処理と引数の数により処理を分岐させるか、別スロットに描画処理を別途生成して実行するなどの工夫は必要になりますね
2そうだね
プレイ済み
返信[4]
親投稿
おちゃめさんのRVAL関数を応用すると文字列をプログラムとして実行可能とか…?
0そうだね
プレイ済み
返信[5]
親投稿
ずばり 「他スロットを改変する命令」 「他スロットを実行する命令」 を使うと…
0そうだね
プレイ済み
返信[6]
親投稿
とりあえず自分でDATA文のグラフィック命令を実行する命令を作ってみました……が、うまくいきません()うーん、惜しいところまで来てると思うんだけどなぁ…… 別スロットに書き込んで実行が一番汎用性があって楽そうですね……もし命令が作れなかったらそちらのやり方でやってみようと思います。
1そうだね
プレイ済み
返信[7]
親投稿
otta777 otta777a
RGB(r,g,b)で記述されたカラーコードを読み取る部分が 上手くいってないですね。 文字列"RGB(255,255,255")をVAL関数で変換しても 結果は0となってしまいます。 アイデアとしてはR,G,Bのカラーコードもカンマで 区切って描画する部分で GPSET XY{0},XY[1],RGB(XY[2],XY[3],XY[4]) の様な指定をする方法が考えられます。 その場合はデータ部分は DATA "GPSET,0,0,255,255,255" という表記になります。
0そうだね
プレイ済み
返信[8]
親投稿
otta777 otta777a
括弧の種類を間違えて記述していました {}は[]に読み替えて下さい
0そうだね
プレイ済み
返信[9]
親投稿
printf printf
RGB()部分を切り出した次点ではただの文字列なんですよね その文字列をVAL()に指定したのが上手くいかない原因ですね 再帰を駆使するのも一つの手ですし、一番始めにRGB()の部分を片付けてしまうのも一つの手ですね 或は諦めて別スロットを使うのもまた...。
0そうだね
プレイ済み
返信[10]
親投稿
RGBではなく、RGBの引数を書くやり方は出来ました。でもデータ文の書き方が面倒だからやっぱり別スロット使った方がいいかな……出来るなら命令文そのまんま書きたいし というわけで締め切ります。対応してくださった方々ありがとうございました。
0そうだね
プレイ済み