練習問題5
Get Version
1.0.0課題22: キーボードからの入力を受け取る
# kadai22.rb require 'sgl' def setup window 200, 200 background 100 $key = 0 end def onKeyDown(key) p key $key = key end def display colorHSV $key, 100, 100 line $key, 0, $key, 200 end mainloop
アルファベットのキーを押すと,keyに1〜26の値が入る.Aが1,Zが26という 関係になる.
それら以外のキーを押したときにどのようなキーコードになるかは,
c:\ruby\doc\rubysdl\rubysdl_const_list.txt
に記述されている.
数字の0が押されたときは,SDL::Key::K0
という値となる.
課題23: 配列の使い方をもう一度考える
# kadai23.rb require 'sgl' def setup window -200, -200, 200, 200 background 100 $pos = [] # 中身が空の配列を用意する. for a in 0..10 # 配列の要素それぞれについて繰り返す. $pos[a] = 0 # 中身に全部0を入れておく. end $index = 0 # 現在配列のどこの部分を指しているかを示す変数である. end def display $pos[$index] = mouseX # 配列の$indexの示す個所に現在のマウスのx座標を入れる. for a in 0..10 # 配列の要素それぞれについて繰り返します. x = $pos[a] color 0 line x, -100, x, 100 # 縦線を描く. end $index = $index + 1 # 現在を示す$indexを次の値のところにセットする. if 10 < $index # $indexが配列の大きさを越えたら0にセットしなおす. $index = 0 end p $pos # $posという配列の中身を表示する. end mainloop
配列の使い方の基本形である.縦線が,マウスの動きを追って動く.つまりマ ウスのx座標だけを保存している.x座標,y座標を保存するとどうなるか,実 験する.
require 'sgl' def setup window -200, -200, 200, 200 background 100 $xpos = [] # 中身が空の配列を,x座標,y座標について用意する. $ypos = [] for a in 0..10 # 配列の要素それぞれについて繰り返す. $xpos[a] = 0 $ypos[a] = 0 end $index = 0 # 現在配列のどこの部分を指しているかを示す変数. end def display $xpos[$index] = mouseX $ypos[$index] = mouseY for a in 0..10 # 配列の要素それぞれについて繰り返す. x = $xpos[a] y = $ypos[a] color 0 circle x, y, 50 end $index = $index + 1 # 現在を示す$indexを,次の値のところにセットする. if 10 < $index # $indexが配列の最大を越えたら,0にセットしなおす. $index = 0 end p $xpos p $ypos end mainloop
このように値を保存する配列を増やしていくようにする.
30th June 2007