●課題1: 基本 (window, background, color, line)

1A: 一本の線を描くプログラムを作りなさい。
1B: ある考えの元に3本の線を描くプログラムを作りなさい。
1C: 5本以下の直線で「変化」を表現するプログラムを作りなさい。
1D: 10本以下の直線で「ハーモニー(調和)」を表現するプログラムを作りなさい。
require 'sgl'         # プログラムの最初に必ず書く必要がある
window 100, 100       # windowを開く
background 0          # 背景を黒にする
color 100             # 描画する色を白にする
line 0, 0, 100, 100   # 左下から右上に線を描く
wait                  # そのまま待つ
半透明色の使い方
require 'sgl'
window 100,100
color 100, 0, 0       # 赤
rect 10,10,70,70      # 四角
color 0,0,100,50      # 半透明の青
rect 30,30,90,90      # 四角を重ねてかく
wait

●課題2A:

一つの変数を使って2本の直線の構成をコントロールするプログラムを作りなさい。
require 'sgl'
window 100, 100
a = 50
line   0, 0, 50, a
line 100, 0, 50, a
wait

●課題3A: 繰り返し (for a in 0..100; end)

繰り返しを使った形態を描きなさい。
require 'sgl'
window 100, 100
for a in 20..80
  color a
  line a, 0, a, 100
end
wait

●課題4A: 計算 (+ - * /)

計算を使った形態をかくプログラムを作りなさい。
require 'sgl'
window 100, 100
for a in 20..40
  color a
  line(a, 0, a*2, 100)
end
wait

●課題6A: kadai6a.rb

●6. 入れ子構造: 6A: 格子状にひろがる形態を作りなさい
# kadai6a.rb
require 'sgl'
window 200,200
for a in 0..10
  for b in 0..10
    color a*10, b*10, b*10
    rect a*20+5, b*20+5, a*20+15, b*20+15
  end
end
wait

●課題7A: kadai7a.rb

●7. 質問 (if 50 < a; end): 7A: 画面の左右で違う形態をかきなさい。
# kadai7a.rb
require 'sgl'
window 200,200
for a in 0..200
  color a/2, 50, 50
  if a < 100
    line a, 50, a, 100
  else
    line a, 100, a, 150
  end
end
wait

●課題8A:

defを使って自分なりのコマンドを作り、それを用いた形態をかきなさい。
ファイル名: kadai8a.rb
require 'sgl'
window 100,100
background 100

def my_rect(x1, y1, x2, y2, outline, fill)
  color fill
  rect x1, y1, x2, y2
  color outline
  line x1, y1, x2, y1
  line x2, y1, x2, y2
  line x2, y2, x1, y2
  line x1, y2, x1, y1
end

my_rect(20, 20, 40, 30, 20, 50)
my_rect(60, 60, 80, 90, 70, 90)
wait
defというコマンドで、関数定義をしています。ここで自分がよく使う、枠 付きの塗りつぶされた四角形を定義しています。その次にくるのが関数名で す。アルファベットの小文字から始まっている必要があります。

この四角を描かせてみると、角のところが1ドットだけ欠けてしまうことが あると思います。このライブラリーの特性で、そうなってしまいます。動き のデザインをするようになる場合は気にならなくなると思いますので御了承 下さい。

●課題9A:

flipを使ってアニメーションを作りなさい。
ファイル名: kadai9a.rb
require 'sgl'
window 100,100
loop do
  for a in 0..100
    line 20,a,80,a
    flip
  end
end
wait
flipというところがポイントです。ここで、ちょうど紙をめくるような動作をしています。
loop do 〜〜〜 end というところもポイントです。その間を無限に繰り返すということをしています。

●課題10A:

HSVによる色指定を使い、自分なりの色グラデーションを作りな さい。静止画でもアニメーションでもよいです。(colorHSV, backgroundHSV)
ファイル名: kadai10a.rb
require 'sgl'
window 100,100
background 100

loop do
  for h in 0..100
    colorHSV h, 50, 100
    rect 0, h, 100, h+5
    flip
  end
end
wait
colorHSV(h, s, v) → hue, saturation, value
hue → 色調
saturation → どれだけ原色に近いか
value → 明るさ

4番目のパラメーターを使って、透明度を設定することもできます。
backgroundHSVというコマンドもあります。


課題はいずれもwindowサイズなどは自由です。課題例は100,100のサイズに していますが、できるだけ大きいwindowサイズでやってみてください。

ファイル名は必ず指定のものにして、Z:にセーブしてください。課題提出は Z:にあるファイルを自動的に認識して、課題を提出したものとみなしていま す。ファイル名が違う場合は提出してないことになってしまうので気をつけ てください。