ページ 1 / 1
テキストの重ね書き?
Posted: 2007年2月19日(月) 22:38
by kumade
しょうもない質問だろうとは思うんですが教えて下さい
バックカラーを透明にすると重ね書きされるんですが、どうしたら解消できますか?
#N88BASIC
100 Color 7,-1
110 Locate 10,10
120 Print "A C E" ; "書く"
130 Locate 10,10
140 Print " " ; "消す"
150 Locate 10,10
160 Print " B C " ; "書く"
Posted: 2007年2月20日(火) 19:53
by konisi
Clsで、1か3を指定してみてください。
あるいは、Colorの第一に0を指定して、同じ文字で塗りつぶすとか。
Posted: 2007年2月22日(木) 23:49
by kumade
おおきに、cls(1)で出来ました
CLSに引数があること自体知りませんでした(汗)
ちなみに
今日、書店でN88がないので、Q.BASICのリファレンス本買ってきたら
cls(3)になってました
この本でもダメですね
#N88BASIC
Color 7,-1
Paint (100,200),1,7
Line(369,580)-(378,515),3: Line(378,515)-(446,412),3: Line(446,412)-(519,356),3: Line(519,356)-(594,371),3: Line(594,371)-(652,428),3
110 Locate 10,10
120 Print "A C E" ; "書く"
130 Locate 10,10
140 'Print " " ; "消す"
145 cls(1)
150 Locate 10,10
160 Print " B C " ; "書く"
Posted: 2007年2月23日(金) 21:54
by マティ
マティです。
clsのオプションですが、1はテキスト画面をクリア、3はテキストとグラフィック画面を両方クリアだったと思います。
コード: 全て選択
#N88BASIC
Color 7,-1
Paint (100,200),1,7
Line(369,580)-(378,515),3: Line(378,515)-(446,412),3: Line(446,412)-(519,356),3: Line(519,356)-(594,371),3: Line(594,371)-(652,428),3
110 Locate 10,10
120 Print "A C E" ; "書く"
130 Locate 10,10
140 'Print " " ; "消す"
145 cls(1)
150 Locate 10,10
160 Print " B C " ; "書く"
この場合、cls(1)を実行した時点で文字列が全て消えてしまいます。
(他の文字列を表示すると良くわかります。)
PC98では、ハードウェアで両者を合成していたので空白文字を表示する事で前の文字を消せるが、ActiveBasicはテキスト画面とグラフィック画面を合成して表示する必要があります。
どうもActiveBasicは背景色が透明な文字列を描画するさいに、背景を透明なモードで描画を行っているだけなので、エミュレーションがうまくいっていないようです。
(背景のグラフィックを転送後、文字を背景色が透明なモードで描画する必要がある。)
Posted: 2007年2月23日(金) 22:48
by kumade
あ、そうですね
塗りつぶしてもテキストの表示が消えるわけではないので、
CLS(1)の後にテキスト文をもう一度書く必要があるんですね
ん~む
実は、久しぶりに、あれこれ思い出しながら、BASICと言えば信長の野○だな、と
地図上に文字を表示させたゲームを書いていたんですが・・・