sgl 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. data/ChangeLog +234 -0
  2. data/Manifest.txt +94 -0
  3. data/Rakefile +16 -5
  4. data/examples/cocoa1-basic.rb +14 -0
  5. data/examples/cocoa10-transparent.rb +26 -0
  6. data/examples/cocoa11-application.rb +13 -0
  7. data/examples/cocoa2-draw.rb +23 -0
  8. data/examples/cocoa3-affine.rb +29 -0
  9. data/examples/cocoa4-font.rb +24 -0
  10. data/examples/cocoa5-image.rb +22 -0
  11. data/examples/cocoa6-sound.rb +24 -0
  12. data/examples/cocoa7-movie.rb +40 -0
  13. data/examples/cocoa8-movieoverlay.rb +42 -0
  14. data/examples/cocoa9-streaming.rb +40 -0
  15. data/examples/opengl1-basic.rb +14 -0
  16. data/examples/opengl11-application.rb +13 -0
  17. data/examples/opengl2-draw.rb +23 -0
  18. data/examples/opengl3-affine.rb +29 -0
  19. data/examples/sample1.rb +11 -0
  20. data/examples/sample10.rb +16 -0
  21. data/examples/sample11.rb +22 -0
  22. data/examples/sample11a.rb +33 -0
  23. data/examples/sample12.rb +30 -0
  24. data/examples/sample12a.rb +35 -0
  25. data/examples/sample13.rb +116 -0
  26. data/examples/sample15.rb +24 -0
  27. data/examples/sample16.rb +31 -0
  28. data/examples/sample16a.rb +35 -0
  29. data/examples/sample6.rb +18 -0
  30. data/examples/sample7.rb +16 -0
  31. data/examples/sample9.rb +20 -0
  32. data/examples/sgl-sound1.rb +6 -0
  33. data/examples/sgl-sound2.rb +19 -0
  34. data/examples/sine.ogg +0 -0
  35. data/examples/testgl.rb +169 -0
  36. data/lib/sgl/bass-api.rb +202 -0
  37. data/lib/sgl/bass-sample.rb +106 -0
  38. data/lib/sgl/bass.rb +46 -0
  39. data/lib/sgl/cocoa-app.rb +43 -0
  40. data/lib/sgl/cocoa-color.rb +65 -0
  41. data/lib/sgl/cocoa-draw.rb +72 -0
  42. data/lib/sgl/cocoa-event.rb +229 -0
  43. data/lib/sgl/cocoa-media.rb +144 -0
  44. data/lib/sgl/cocoa-notuse.rb +493 -0
  45. data/lib/sgl/cocoa-window.rb +203 -0
  46. data/lib/sgl/cocoa.rb +8 -0
  47. data/lib/sgl/notuse-objs.rb +358 -0
  48. data/lib/sgl/opengl-app.rb +38 -0
  49. data/lib/sgl/opengl-color.rb +44 -0
  50. data/lib/sgl/opengl-draw.rb +260 -0
  51. data/lib/sgl/opengl-event.rb +325 -0
  52. data/lib/sgl/opengl-modules.rb +22 -0
  53. data/lib/sgl/opengl-window.rb +224 -0
  54. data/lib/sgl/opengl.rb +7 -0
  55. data/lib/sgl/sgl-basic.rb +61 -0
  56. data/lib/sgl/sgl-button.rb +135 -0
  57. data/lib/sgl/sgl-client.rb +21 -0
  58. data/lib/sgl/sgl-color.rb +82 -0
  59. data/lib/sgl/sgl-connect.rb +9 -0
  60. data/lib/sgl/sgl-objlib.rb +0 -0
  61. data/lib/sgl/sgl-objs.rb +0 -0
  62. data/lib/sgl/sgl-server.rb +58 -0
  63. data/lib/sgl/sgl-sound.rb +24 -0
  64. data/lib/sgl/sgl-spring.rb +216 -0
  65. data/lib/sgl/sgl-timer.rb +72 -0
  66. data/lib/sgl/sgl.rb +5 -0
  67. data/lib/sgl/version.rb +2 -2
  68. data/scripts/makemanifest.rb +20 -0
  69. data/test/test_bass.rb +27 -0
  70. data/test/test_cocoa_app.rb +5 -5
  71. data/test/test_helper.rb +9 -1
  72. data/test/test_module_ruby16.rb +22 -21
  73. data/test/test_opengl_app.rb +4 -5
  74. data/test/test_opengl_basic.rb +3 -4
  75. data/test/test_opengl_fullscreen.rb +4 -6
  76. data/test/test_opengl_novice.rb +3 -6
  77. data/test/test_sgl.rb +4 -27
  78. data/test/test_sound.rb +15 -0
  79. data/website/challenge1.html +91 -0
  80. data/website/challenge1.txt +30 -0
  81. data/website/challenge2.html +144 -0
  82. data/website/challenge2.txt +73 -0
  83. data/website/challenge3.html +63 -0
  84. data/website/challenge3.txt +15 -0
  85. data/website/cocoa.html +88 -0
  86. data/website/cocoa.txt +35 -0
  87. data/website/description.html +138 -0
  88. data/website/description.txt +90 -0
  89. data/website/exercise1.html +264 -0
  90. data/website/exercise1.txt +192 -0
  91. data/website/exercise2.html +683 -0
  92. data/website/exercise2.txt +597 -0
  93. data/website/exhibition.html +84 -0
  94. data/website/exhibition.txt +24 -0
  95. data/website/howto.html +134 -0
  96. data/website/howto.txt +56 -0
  97. data/website/index.html +17 -9
  98. data/website/index.txt +13 -4
  99. data/website/sound.html +141 -0
  100. data/website/sound.txt +87 -0
  101. data/website/stylesheets/grade.png +0 -0
  102. data/website/stylesheets/screen.css +21 -20
  103. metadata +109 -3
@@ -0,0 +1,597 @@
1
+ h1. 練習問題 11〜21
2
+
3
+ h2. 課題15 マウスのボタンが押された時に
4
+
5
+ h2. 課題16 円の描き方
6
+
7
+ h2. 課題18 三次元
8
+
9
+ h2. 課題19 速度
10
+
11
+ h2. 課題20 キーボードからの入力
12
+
13
+ h2. 課題21 配列の使い方
14
+
15
+ h2. 課題11A マウスの位置に反応する形
16
+
17
+ <pre syntax="ruby">
18
+ require 'sgl'
19
+
20
+ window 200,200
21
+
22
+ loop do
23
+ x = mouseX
24
+ y = mouseY
25
+ rect x-5, y-5, x+5, y+5
26
+ flip
27
+ end
28
+ </pre>
29
+
30
+ mouseXとmouseYでマウス位置を取得する.rectで四角形を描画する.
31
+
32
+ rectの前に@color x, y, 0@をいれてみる.
33
+
34
+ rectの後に下記をいれてみる.
35
+ <pre syntax="ruby">
36
+ line 0, 0, x, y
37
+ line 200, 0, x, y
38
+ line 0, 200, x, y
39
+ line 200, 200, x, y
40
+ </pre>
41
+
42
+ h2. 課題12A 複雑な形の描画
43
+
44
+ <pre syntax="ruby">
45
+ require 'sgl'
46
+
47
+ window -200, -200, 200, 200
48
+
49
+ beginObj(POLYGON)
50
+ vertex 60, 90
51
+ vertex -120, 60
52
+ vertex -90, -90
53
+ vertex 120, -90
54
+ endObj
55
+
56
+ wait
57
+ </pre>
58
+
59
+ @window -200, -200, 200, 200@のようにして四つの値を指定できる.
60
+ beginObjとendObjではさまれた領域で形を描く.
61
+
62
+ <pre syntax="ruby">
63
+ beginObj(POLYGON)
64
+ color 100, 0, 0, 100
65
+ vertex 60, 90
66
+ color 0, 100, 0, 100
67
+ vertex -120, 60
68
+ color 0, 0, 100, 100
69
+ vertex -90, -90
70
+ color 100, 100, 0, 100
71
+ vertex 120, -90
72
+ endObj
73
+ </pre>
74
+
75
+ 頂点ごとに色を指定できる.
76
+
77
+ <pre syntax="ruby">
78
+ beginObj(POLYGON)
79
+ color 100, 0, 0, 0
80
+ vertex 60, 90
81
+ color 0, 100, 0, 100
82
+ vertex -120, 60
83
+ color 0, 0, 100, 100
84
+ vertex -90, -90
85
+ color 100, 100, 0, 0
86
+ vertex 120, -90
87
+ endObj
88
+ </pre>
89
+
90
+ 頂点ごとに透明度も変えられる.
91
+
92
+ h2. 課題13A スムースな線の描画
93
+
94
+ <pre syntax="ruby">
95
+ require 'sgl'
96
+
97
+ useSmooth
98
+
99
+ window -200, -200, 200, 200
100
+
101
+ beginObj(LINE_LOOP)
102
+ color 100, 0, 0, 100
103
+ vertex 60, 90
104
+ color 0, 100, 0, 50
105
+ vertex -120, 60
106
+ color 0, 0, 100, 50
107
+ vertex -90, -90
108
+ color 100, 100, 0, 100
109
+ vertex 120, -90
110
+ endObj
111
+
112
+ wait
113
+ </pre>
114
+
115
+ windowの前にuseSmoothを指定することによって,アンチエイリアスを
116
+ かけることができる.
117
+
118
+ beginObjの括弧の中は,@POLYGON@または@LINE_LOOP@を指定する.
119
+ この二つがあればほぼ十分であるが,他に下記方法も指定できる.
120
+
121
+ LINES, POINTS, LINE_STRIP, LINE_LOOP, TRIANGLES, TRIANGLE_STRIP,
122
+ TRIANGLE_FAN, QUADS, QUAD_STRIP, POLYGON,
123
+
124
+ h2. 課題14A 物体の移動
125
+
126
+ <pre syntax="ruby">
127
+ require 'sgl'
128
+
129
+ useSmooth
130
+
131
+ window -200, -200, 200, 200
132
+
133
+ push
134
+ translate 100, 0
135
+ rotateZ 10
136
+ scale 2
137
+ rect -5, -5, 5, 5
138
+ pop
139
+
140
+ wait
141
+ </pre>
142
+
143
+ 今回でてきた新しいコマンド,
144
+ push, pop, translate, rotateZ, scaleを使って回転移動拡大縮小などができ
145
+ るようになる.pushとpopで囲まれていることが非常に重要である.また襦袢
146
+ として,translate, rotateZ, scaleの順番に指定することが重要.形を描く
147
+ コマンドと,位置,回転角度などの指定を分離できる.
148
+
149
+ h2. 課題15A ボタンが押されたその時に
150
+
151
+ <pre syntax="ruby">
152
+ require 'sgl'
153
+
154
+ def setup
155
+ window -200, -200, 200, 200
156
+ background 0
157
+ $x = 0
158
+ $y = 0
159
+ end
160
+
161
+ def onMouseDown(x, y)
162
+ $x = x
163
+ $y = y
164
+ end
165
+
166
+ def display
167
+ line 0, 0, $x, $y
168
+ end
169
+
170
+ mainloop
171
+ </pre>
172
+
173
+ いままではプログラムはかかれている順番通りに実行されるものだったが,こ
174
+ こでは違う順序となっている.まず最初にコマンドを登録し,それが後に呼ば
175
+ れて実行されることになる.このようにプログラムの実行順番が違う方式をこ
176
+ れから採用する.
177
+
178
+ setup, onMouseDown, displayというコマンドを登録する.その後mainloopと
179
+ いうコマンドを呼ぶ.このメインループの中で,全てのプログラムが実行され,
180
+ 適宜setup, displayが呼び出される.マウスのボタンが押された瞬間に,
181
+ onMouseDownというコマンドが呼ばれる.
182
+
183
+ そのonMouseDownの前に,$xという$のついた変数がつかわれている.変数には
184
+ それぞれ使える範囲というのもがあるのだが,通常は一つのコマンドの範囲内
185
+ でしか使うことができなかった.しかし,$のついた変数であれば,プログラ
186
+ ムが動いている間ずっと残る.プログラムの最初の部分で,@$x = 0@のように
187
+ して,あらかじめなんらかの値を代入することで,変数を使うということを示
188
+ す必要がある.
189
+
190
+ h2. 課題16A 円
191
+
192
+ <pre syntax="ruby">
193
+ require 'sgl'
194
+
195
+ def setup
196
+ window -200, -200, 200, 200
197
+ background 100
198
+ $x = 0
199
+ $y = 0
200
+ end
201
+
202
+ def onMouseDown(x, y)
203
+ $x = x
204
+ $y = y
205
+ end
206
+
207
+ def display
208
+ color 100, 0, 0
209
+ circle($x, $y, 100)
210
+ end
211
+
212
+ mainloop
213
+ </pre>
214
+
215
+ 円を描く.マウスボタンを押すと,ボタンを押したところに移動する.
216
+ プログラムの構造は課題15Aで導入された構造を使っている.
217
+
218
+ <pre syntax="ruby">
219
+ def display
220
+ colorHSV 66, 100, 100, 30
221
+ circle($x, $y, 100, POLYGON)
222
+ end
223
+ </pre>
224
+
225
+ 塗り潰された円を描く.
226
+
227
+ <pre syntax="ruby">
228
+ def display
229
+ colorHSV 33, 100, 100, 30
230
+ circle($x, $y, 100, POLYGON, 5)
231
+ end
232
+ </pre>
233
+
234
+ 五角形を描く.いままで円といってきたものは,実は正確には正32角形である.
235
+ 上記circle文の@5@のところを@32@にすると,普通の円と同じになる.
236
+
237
+ <pre syntax="ruby">
238
+ def display
239
+ x = mouseX
240
+ y = mouseY
241
+ colorHSV 8, 100, 100, 50
242
+ circle(x, y, 100, POLYGON, 7)
243
+ end
244
+ </pre>
245
+
246
+ マウスを押されないでもついてくるようにする.
247
+
248
+ h2. 課題18A 3D
249
+
250
+ <pre syntax="ruby">
251
+ require 'sgl'
252
+
253
+ window -200, -200, 200, 200
254
+
255
+ push
256
+ color 100, 0, 0
257
+ translate 30, 40, 20
258
+ rotateZ 10
259
+ rotateY 20
260
+ rotateX 30
261
+ scale 20
262
+ rect -5, -5, 5, 5
263
+ pop
264
+
265
+ wait
266
+ </pre>
267
+
268
+ 課題14の物体の移動の例とほとんど同じだが,@translate 30, 40, 20@として
269
+ 三つの値を指定している点,@rotateZ@だけではなく,@rotateY@ @rotateX@を
270
+ 使っている点が違う.三つめの値はZ軸,奥行きである.手前が正の値,奥の
271
+ ほうが負の値となる.vertexを使った形の描画は,三つの値を指定することで
272
+ 3Dに対応できる.
273
+
274
+ <pre syntax="ruby">
275
+ require 'sgl'
276
+
277
+ def setup
278
+ window -200, -200, 200, 200
279
+ background 100
280
+ end
281
+
282
+ def display
283
+ x = mouseX
284
+ y = mouseY
285
+
286
+ push
287
+ color 100, 0, 0
288
+ translate x, y, 0
289
+ rotateX x
290
+ rotateY y
291
+ scale 20
292
+ rect -5, -5, 5, 5
293
+ pop
294
+ end
295
+
296
+ mainloop
297
+ </pre>
298
+
299
+ マウスの移動と組み合わせることもできる.
300
+
301
+ <pre syntax="ruby">
302
+ require 'sgl'
303
+
304
+ def setup
305
+ window -200, -200, 200, 200
306
+ background 100
307
+ $pos = [] # 中身が空の配列を用意する.
308
+ end
309
+
310
+ def display
311
+ x = mouseX
312
+ y = mouseY
313
+
314
+ $pos << [x, y] # 配列に現在のマウスの位置を追加する.
315
+
316
+ $pos.each {|pos| # 配列の各々の要素について,{}の中身を実行する.
317
+ # その各々の要素は,posという変数に入る.
318
+ x = pos[0]
319
+ y = pos[1]
320
+
321
+ push
322
+ colorHSV 0, 100, 100, 10
323
+ translate x, y, 0
324
+ rotateX x
325
+ rotateY y
326
+ scale 20
327
+ rect -5, -5, 5, 5
328
+ pop
329
+ }
330
+
331
+ if 10 < $pos.length # 配列がたまりすぎた場合は,先頭から順に捨てていく.
332
+ $pos.shift
333
+ end
334
+ end
335
+
336
+ mainloop
337
+ </pre>
338
+
339
+ 配列の使用と組み合わせてみている.
340
+
341
+ h2. 課題19A 速度
342
+
343
+ <pre syntax="ruby">
344
+ require 'sgl'
345
+
346
+ def setup
347
+ window -200, -200, 200, 200
348
+ background 100
349
+ $x = 0
350
+ $y = 0
351
+ end
352
+
353
+ def display
354
+ x = mouseX
355
+ y = mouseY
356
+ speed = 20.0
357
+ vx = (x - $x)/speed
358
+ vy = (y - $y)/speed
359
+ $x = $x + vx
360
+ $y = $y + vy
361
+ color 100, 0, 0
362
+ circle($x, $y, 50, POLYGON)
363
+ end
364
+
365
+ mainloop
366
+ </pre>
367
+
368
+ 物の位置に加え,速度を導入する.円がマウスのところに近付こうとする.
369
+
370
+ <pre syntax="ruby">
371
+ require 'sgl'
372
+
373
+ def setup
374
+ window -200, -200, 200, 200
375
+ background 100
376
+ $pos=[]
377
+ for i in 0..9
378
+ $pos[i] = [-200 + i * 40, 0] # 最初の位置を指定する.
379
+ end
380
+ end
381
+
382
+ def display
383
+ x = mouseX
384
+ y = mouseY
385
+
386
+ speed = 10.0
387
+ for i in 0..9
388
+ pos = $pos[i]
389
+ vx = (x - pos[0]) / speed # マウスに吸い寄せられる速度
390
+ vy = (y - pos[1]) / speed
391
+ speed += 2.0 # 円によって速度が異なるようにする.
392
+ pos[0] = pos[0] + vx # マウスに吸い寄せられた位置
393
+ pos[1] = pos[1] + vy
394
+ color 100, 0, 0, 10
395
+ circle(pos[0], pos[1], 50, POLYGON)
396
+ end
397
+ end
398
+
399
+ mainloop
400
+ </pre>
401
+
402
+ 配列の使い方を説明する.
403
+
404
+ <pre syntax="ruby">
405
+ require 'sgl'
406
+
407
+ def setup
408
+ window -200, -200, 200, 200
409
+ background 100
410
+
411
+ $pos=[]
412
+ $orgpos=[]
413
+ for i in 0..19
414
+ $pos[i] = [-200 + i * 40, 0] # 最初の位置を指定する.
415
+ $orgpos[i] = [-200 + i * 40, 0] # もう一つ別の配列にも保存する.
416
+ end
417
+ end
418
+
419
+ def display
420
+ x = mouseX
421
+ y = mouseY
422
+
423
+ for i in 0..19
424
+ pos = $pos[i] # 現在の円の位置
425
+ orgpos = $orgpos[i] # 元々の位置
426
+
427
+ if mouseDown # ボタンが押されているときだけマウスに吸いつく.
428
+ vx = x - pos[0]
429
+ vy = y - pos[1]
430
+ mag = Math.sqrt(vx * vx + vy * vy)
431
+ mag = mag / 40
432
+ mag = mag * mag + 1
433
+ vx = vx / mag
434
+ vy = vy / mag
435
+ pos[0] = pos[0] + vx
436
+ pos[1] = pos[1] + vy
437
+ end
438
+
439
+ speed = 3.0
440
+ vx2 = (orgpos[0] - pos[0]) / speed # 元々の位置に吸い寄せられる速度
441
+ vy2 = (orgpos[1] - pos[1]) / speed
442
+ pos[0] = pos[0] + vx2 # マウスに吸い寄せられた位置
443
+ pos[1] = pos[1] + vy2
444
+ color 100, 0, 0, 30
445
+ circle(pos[0], pos[1], 50, POLYGON)
446
+ end
447
+ end
448
+
449
+ mainloop
450
+ </pre>
451
+
452
+ マウスにすいよせられる円.マウスボタンを押しているときだけ反応する.
453
+
454
+ <pre syntax="ruby">
455
+ require 'sgl'
456
+
457
+ def setup
458
+ window -200, -200, 200, 200
459
+ background 100
460
+ $xpos = [] # 配列を準備する.
461
+ $ypos = []
462
+ for i in 0..9
463
+ $xpos[i] = -200 + i * 40
464
+ $ypos[i] = 0
465
+ end
466
+ end
467
+
468
+ def display
469
+ x = mouseX
470
+ y = mouseY
471
+
472
+ speed = 10.0
473
+ for i in 0..9
474
+ vx = (x - $xpos[i]) / speed # マウスに吸い寄せられる速度
475
+ vy = (y - $ypos[i]) / speed
476
+ speed += 2.0 # 円によって速度が異なるようにする.
477
+ $xpos[i] = $xpos[i] + vx # マウスに吸い寄せられた位置
478
+ $ypos[i] = $ypos[i] + vy
479
+ color 100, 0, 0, 10
480
+ circle($xpos[i], $ypos[i], 50, POLYGON)
481
+ end
482
+ end
483
+
484
+ mainloop
485
+ </pre>
486
+
487
+ 配列の使い方を変更した.
488
+
489
+ h2. 課題20A キーボードからの入力の仕方
490
+
491
+ <pre syntax="ruby">
492
+ require 'sgl'
493
+
494
+ def setup
495
+ window 200, 200
496
+ background 100
497
+ $key = 0
498
+ end
499
+
500
+ def onKeyDown(key)
501
+ p key
502
+ $key = key
503
+ end
504
+
505
+ def display
506
+ colorHSV $key, 100, 100
507
+ line $key, 0, $key, 200
508
+ end
509
+
510
+ mainloop
511
+ </pre>
512
+
513
+ アルファベットのキーを押すと,keyに1〜26の値が入る.Aが1,Zが26という
514
+ 関係になる.
515
+
516
+ それら以外のキーを押したときにどのようなキーコードになるかは,
517
+ @c:\ruby\doc\rubysdl\rubysdl_const_list.txt@ に記述されている.
518
+ 数字の0が押されたときは,@SDL::Key::K0@という値となる.
519
+
520
+ h2. 課題21A 配列の使い方return
521
+
522
+ <pre syntax="ruby">
523
+ require 'sgl'
524
+
525
+ def setup
526
+ window -200, -200, 200, 200
527
+ background 100
528
+ $pos = [] # 中身が空の配列を用意する.
529
+ for a in 0..10 # 配列の要素それぞれについて繰り返す.
530
+ $pos[a] = 0 # 中身に全部0を入れておく.
531
+ end
532
+ $index = 0 # 現在配列のどこの部分を指しているかを示す変数である.
533
+ end
534
+
535
+ def display
536
+ $pos[$index] = mouseX # 配列の$indexの示す個所に現在のマウスのx座標を入れる.
537
+
538
+ for a in 0..10 # 配列の要素それぞれについて繰り返します.
539
+ x = $pos[a]
540
+ color 0
541
+ line x, -100, x, 100 # 縦線を描く.
542
+ end
543
+
544
+ $index = $index + 1 # 現在を示す$indexを次の値のところにセットする.
545
+ if 10 < $index # $indexが配列の大きさを越えたら0にセットしなおす.
546
+ $index = 0
547
+ end
548
+
549
+ p $pos # $posという配列の中身を表示する.
550
+ end
551
+
552
+ mainloop
553
+ </pre>
554
+
555
+ 配列の使い方の基本形である.縦線が,マウスの動きを追って動く.つまりマ
556
+ ウスのx座標だけを保存している.x座標,y座標を保存するとどうなるか,実
557
+ 験する.
558
+
559
+ <pre syntax="ruby">
560
+ require 'sgl'
561
+
562
+ def setup
563
+ window -200, -200, 200, 200
564
+ background 100
565
+ $xpos = [] # 中身が空の配列を,x座標,y座標について用意する.
566
+ $ypos = []
567
+ for a in 0..10 # 配列の要素それぞれについて繰り返す.
568
+ $xpos[a] = 0
569
+ $ypos[a] = 0
570
+ end
571
+ $index = 0 # 現在配列のどこの部分を指しているかを示す変数.
572
+ end
573
+
574
+ def display
575
+ $xpos[$index] = mouseX
576
+ $ypos[$index] = mouseY
577
+
578
+ for a in 0..10 # 配列の要素それぞれについて繰り返す.
579
+ x = $xpos[a]
580
+ y = $ypos[a]
581
+ color 0
582
+ circle x, y, 50
583
+ end
584
+
585
+ $index = $index + 1 # 現在を示す$indexを,次の値のところにセットする.
586
+ if 10 < $index # $indexが配列の最大を越えたら,0にセットしなおす.
587
+ $index = 0
588
+ end
589
+
590
+ p $xpos
591
+ p $ypos
592
+ end
593
+
594
+ mainloop
595
+ </pre>
596
+
597
+ このように値を保存する配列を増やしていくようにする.
@@ -0,0 +1,84 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <title>
8
+ 作品合同展示
9
+ </title>
10
+ <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
+ <style>
12
+
13
+ </style>
14
+ <script type="text/javascript">
15
+ window.onload = function() {
16
+ settings = {
17
+ tl: { radius: 10 },
18
+ tr: { radius: 10 },
19
+ bl: { radius: 10 },
20
+ br: { radius: 10 },
21
+ antiAlias: true,
22
+ autoPad: true,
23
+ validTags: ["div"]
24
+ }
25
+ var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
+ versionBox.applyCornersToAll();
27
+ }
28
+ </script>
29
+ </head>
30
+ <body>
31
+ <div id="main">
32
+
33
+ <h1>作品合同展示</h1>
34
+ <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/sgl"; return false'>
35
+ <p>Get Version</p>
36
+ <a href="http://rubyforge.org/projects/sgl" class="numbers">0.4.0</a>
37
+ </div>
38
+ <h2>合同展示</h2>
39
+
40
+
41
+ <ul>
42
+ <li>展示場所,見せ方について考える.複数のプログラムを統合したものを見せる.</li>
43
+ <li>まずは全員のプログラムをお互いに観賞し,どのような作品ができたかを見る.</li>
44
+ <li>useFullScreenを使って画面を最大化する.必要な変更をする.
45
+ <ul>
46
+ <li>全画面使用に伴い,デザインを変更する必要がある.</li>
47
+ </ul>
48
+ </li>
49
+ <li>キーボードは展示に出さないため,マウスだけで操作できるようにする.
50
+ <ul>
51
+ <li>どのように変更すればいいかを説明する.</li>
52
+ </ul>
53
+ </li>
54
+ <li>複数のプログラムを連結する方法について説明する.
55
+ <ul>
56
+ <li>展示用のファイル名を指定する.指定したディレクトリーにそのファイルを置く.</li>
57
+ </ul>
58
+ </li>
59
+ <li>展示についてのリーダーを決める.</li>
60
+ </ul>
61
+
62
+
63
+ <h2>サウンド機能</h2>
64
+
65
+
66
+ <ul>
67
+ <li>作品はサウンドのあるなしで大分印象が違う.</li>
68
+ <li>音をつける手順について説明する.</li>
69
+ <li>まずどのような音をつけるか考える.後で変えられるので簡単でよい.</li>
70
+ <li>サンプル音は,マイクで取り込む,フリーのサンプル音を使う,MP3から切り出すなどがある.</li>
71
+ <li>波形編集ソフトで必要な部分だけを抜き出す.0.1秒くらいを目途にする.</li>
72
+ <li>useSoundの使い方を学ぶ.</li>
73
+ <li>サウンドファイルを再生する方法.音程,音量,パンなどを指定できる.</li>
74
+ <li>小さい音を重ねて再生するようにすると効果的である.50音程度は再生できる.</li>
75
+ </ul>
76
+ <p class="coda">
77
+ 20th June 2007<br>
78
+ </p>
79
+ </div>
80
+
81
+ <!-- insert site tracking codes here, like Google Urchin -->
82
+
83
+ </body>
84
+ </html>
@@ -0,0 +1,24 @@
1
+ h1. 作品合同展示
2
+
3
+ h2. 合同展示
4
+
5
+ * 展示場所,見せ方について考える.複数のプログラムを統合したものを見せる.
6
+ * まずは全員のプログラムをお互いに観賞し,どのような作品ができたかを見る.
7
+ * useFullScreenを使って画面を最大化する.必要な変更をする.
8
+ ** 全画面使用に伴い,デザインを変更する必要がある.
9
+ * キーボードは展示に出さないため,マウスだけで操作できるようにする.
10
+ ** どのように変更すればいいかを説明する.
11
+ * 複数のプログラムを連結する方法について説明する.
12
+ ** 展示用のファイル名を指定する.指定したディレクトリーにそのファイルを置く.
13
+ * 展示についてのリーダーを決める.
14
+
15
+ h2. サウンド機能
16
+
17
+ * 作品はサウンドのあるなしで大分印象が違う.
18
+ * 音をつける手順について説明する.
19
+ * まずどのような音をつけるか考える.後で変えられるので簡単でよい.
20
+ * サンプル音は,マイクで取り込む,フリーのサンプル音を使う,MP3から切り出すなどがある.
21
+ * 波形編集ソフトで必要な部分だけを抜き出す.0.1秒くらいを目途にする.
22
+ * useSoundの使い方を学ぶ.
23
+ * サウンドファイルを再生する方法.音程,音量,パンなどを指定できる.
24
+ * 小さい音を重ねて再生するようにすると効果的である.50音程度は再生できる.