|
|
2011/8/7(Sun) 13:48:06|NO.40433
超初心者です。
文字を点滅させたいのですが、どうすれば良いでしょうか?
●←これを点滅させる、ということで、たくさん案を出していただけると
嬉しいです。
よろしくお願いします。
|
|
2011/8/7(Sun) 14:08:55|NO.40434
repeat
wait 50
mes "●"
wait 50
cls
loop
*looping
wait 50
mes "●"
wait 50
cls
goto,*looping
|
|
2011/8/7(Sun) 14:22:24|NO.40435
普通はこんな感じでしょうか
time=0
*looping
redraw 1:await 20:redraw 0
color 255,255,255:boxf
time++
color 0,0,0
pos 0,0
mes "time:"+time
if (time/20)\2=0{
color 0,0,0
pos 0,50
mes "●"
}
if ((time+10)/20)\2=0{
color 0,0,0
pos 0,100
mes "●"
}
if ((time+5)/10)\2=0{
color 0,0,0
pos 0,150
mes "●"
}
goto *looping
|
|
2011/8/7(Sun) 15:13:47|NO.40436
パレットとか?
screen 0,,,1
mes "●"
repeat
palette 0,255,255,255,1
redraw
wait 100
palette 0,0,0,0,1
redraw
await 100
loop
|
|
2011/8/7(Sun) 16:57:18|NO.40437
buffer 1 : mes "●"
gsel 0
repeat
redraw 0
color 255,255,255 : boxf
gmode 4,,,abs( cnt\16-8 )*32
gcopy 1,0,0,16,18
redraw 1
await 1
loop
こんな感じかな
|
|
2011/8/7(Sun) 17:02:53|NO.40438
t = 0 //時間
sw= 0 //スイッチ。1のとき●が表示される。
*main
redraw 0
color $FF,$FF,$FF : boxf : color //画面クリア
if t\25=0 : sw = (sw + 1) \ 2 //tが25の倍数になるごとに=ループが25回されるごとにswを切り替える。
//swが1のとき、(1+1)\2=0、0のとき、(0+1)\2=1。
if sw : pos 0, 0 : mes "●" //swが1だったら●表示。
redraw 1
t++ //tをインクリメント(1加算)。
wait 1 //10ms待つ。
goto *main
われながらひどい。特に初心者には。
しょうがないのでコメントを多めに入れました。
if t\25=0 : 〜〜のとこの、25を変えると、間隔を変えられます。
\はあまりの記号です。2\2は2を2で割った余り。つまり0。
このスレの中で、WHOSさんとfortunehillさんは表示するたびに待つ、
whoさん,てれてれさんと私は余りを使っていく方法ですね。
|
|
2011/8/7(Sun) 18:28:20|NO.40440
蛇足ですが
Cookiesさんのスクリプトの以下の計算は、
sw = (sw + 1) \ 2
sw = 1 - sw に置き換えられますよ。
|
|
2011/8/7(Sun) 22:54:19|NO.40448
>Cookiesさんのスクリプトの以下の計算は、
>sw = (sw + 1) \ 2
>sw = 1 - sw
>に置き換えられますよ。
mjk!まったく一緒じゃん。
超初心者だからXORをやめようと思ったのに。
相当回りくどいことしたなぁ。
すいません。
|
|
2011/8/8(Mon) 03:51:07|NO.40450
蛇足に尾びれを付けた話ですが、0と1を反転させたい場合、どのやり方が一番早いか調べてみました。使用したスクリプトと当方の結果は以下。
#include "d3m.hsp"
#define N $80000
wait 100
func = "無し", "等価", "Xor", "1−", "剰余", "IF"
label = *無し, *等価, *Xor, *1−, *剰余, *IF
m = ">☆結果\n"
foreach func
go = label(cnt)
start = d3timer()
repeat N
r = rnd(2)
gosub go
loop
time = d3timer()-start
if cnt = 0 : offset = time
m = m+">"+func(cnt)+strf("[%d]<%d>",time,time-offset)+"\n"
mes strf("%d回目終了",cnt)
wait 50
loop
objsize 320, 240
mesbox m
stop
*無し
return 0
*等価
return r
*Xor
return r^1
*1−
return 1-r
*剰余
return (r+1)\2
*IF
if r = 1 : return 0
return 1
>☆結果
>無し[384]<0>
>等価[408]<24>
>Xor[464]<80>
>1−[447]<63>
>剰余[512]<128>
>IF[523]<139>
……Xor演算より1−方式の方が早いって意外な気がする。
|
|
2011/8/8(Mon) 15:52:41|NO.40462
wpoke使用
sdim st ;文字バッファ準備
*main
sw^=$9C81 : wpoke st,,sw ;文字変更
redraw 0
hsvcolor ,,255 : boxf ;画面初期化
color : pos ,0 ;文字色と位置の設定
mes st ;文字の描画
redraw
wait
goto *main
|
|
2011/8/8(Mon) 18:31:20|NO.40466
dim col,3
col(0,0) = 255,0,0
col(0,1) = 255,255,255
*@
i^=1
color col(0,i),col(1,i),col(2,i)
pos 30,300:mes "●"
wait 30
goto*@b
|
|