●このページの課題は maru04.bas として、マイドキュメントの basic フォルダに保存すること。( .bas は自動的につきます)
●好きなところで跳ね返るようにしましょう。
●キーボードから"/"を入力すると反対に進むようにします。やり方はいくつかありますが、d の値を -d にすれば、進む向きは逆になります。これがいちばん簡単でしょう。
SET WINDOW 0,500,0,500
SET AREA COLOR 2
LET x=50
LET y=300
LET d=1
DO
CHARACTER INPUT NOWAIT:s$
IF s$="e" THEN EXIT DO
IF s$="/" THEN d = -d
LET ox = x
LET x = x + d
IF x > 500 THEN
LET d=-1
END IF
IF x < 0 THEN
LET d=1
END IF
SET AREA COLOR 0
DRAW disk WITH SCALE(10)*SHIFT(ox,y)
SET AREA COLOR 2
DRAW disk WITH SCALE(10)*SHIFT(x,y)
WAIT DELAY 0.01
LOOP
END
●キー入力で跳ね返るとき縦に動くようにします。"/"の向きから考えて、右に動いていたときは上に、左に動いていたときは下に跳ね返るようにします。
●これもやり方はいろいろありますが、d を dx と dy の2つにして、"/" の入力で、dx の値を dy に代入すれば、右に動いていたときは上に、左に動いていたときは下にいかせることができます。代入したあとは 0 にしておきます。
●上下にも動かすので、かなりいろいろ変えなければならなくなります。d を dx と dy に分けます。ox に対して oy もつくります。
SET WINDOW 0,500,0,500 SET AREA COLOR 2 LET x=50 LET y=300 LET dx=1 LET dy=0 DO CHARACTER INPUT NOWAIT:s$ IF s$="e" THEN EXIT DO IF s$="/" THEN dy = dx dx = 0 END IF LET ox = x LET oy = y LET x = x + dx LET y = y + dy IF x > 500 THEN LET dx=-1 END IF IF x < 0 THEN LET dx=1 END IF SET AREA COLOR 0 DRAW disk WITH SCALE(10)*SHIFT(ox,oy) SET AREA COLOR 2 DRAW disk WITH SCALE(10)*SHIFT(x,y) WAIT DELAY 0.01 LOOP END
●上下に動くときも端で跳ね返るようにします。
SET WINDOW 0,500,0,500 SET AREA COLOR 2 LET x=50 LET y=300 LET dx=1 LET dy=0 DO CHARACTER INPUT NOWAIT:s$ IF s$="e" THEN EXIT DO IF s$="/" THEN LET tmp=dy LET dy=dx LET dx=tmp END IF LET ox = x LET oy = y LET x = x + dx LET y = y + dy IF x > 500 THEN LET dx=-1 END IF IF x < 0 THEN LET dx=1 END IF IF y > 500 THEN LET dy=-1 END IF IF y < 0 THEN LET dy=1 END IF SET AREA COLOR 0 DRAW disk WITH SCALE(10)*SHIFT(ox,oy) SET AREA COLOR 2 DRAW disk WITH SCALE(10)*SHIFT(x,y) WAIT DELAY 0.01 LOOP END
●青色部分も変えました。dx と dy を交換するようにしています。これをしないと、2度目に"/"を押すと止まってしまいます。こうすることで、上に動いているときに"/"を押すと右に動くようになります。