stylet 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (194) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.travis.yml +4 -0
  4. data/.yardopts +2 -0
  5. data/Gemfile +16 -0
  6. data/README.org +19 -0
  7. data/Rakefile +17 -0
  8. data/bin/setup +63 -0
  9. data/bin/stylet +8 -0
  10. data/examples/.ruby-version +1 -0
  11. data/examples/00100_lib_hello_world.rb +8 -0
  12. data/examples/00110_lib_sge_check.rb +6 -0
  13. data/examples/00120_lib_/343/202/254/343/203/263/343/203/236/345/200/244/343/201/256/345/244/211/346/233/264.rb +22 -0
  14. data/examples/00130_lib_window_title.rb +8 -0
  15. data/examples/00140_lib_callbacks.rb +8 -0
  16. data/examples/00150_lib_vector.rb +5 -0
  17. data/examples/00160_lib_run.rb +4 -0
  18. data/examples/00170_lib_frame.rb +4 -0
  19. data/examples/00180_lib_config/347/242/272/350/252/215.rb +7 -0
  20. data/examples/00190_lib_/343/201/231/343/201/271/343/201/246/345/220/214/343/201/230/343/202/252/343/203/226/343/202/270/343/202/247/343/202/257/343/203/210.rb +10 -0
  21. data/examples/00200_lib_/343/203/254/343/202/267/343/203/274/343/203/220/343/203/274/343/202/222/347/234/201/347/225/245/343/201/231/343/202/213/346/226/271/346/263/225/343/201/256/343/203/206/343/202/271/343/203/210.rb +28 -0
  22. data/examples/00210_lib_delegators.rb +7 -0
  23. data/examples/00220_lib_template_method.rb +13 -0
  24. data/examples/00230_lib_/350/203/214/346/231/257/347/224/273/345/203/217/350/241/250/347/244/272.rb +9 -0
  25. data/examples/00240_lib_/350/203/214/346/231/257/347/224/273/345/203/217/343/202/222/346/232/227/343/201/2171_/351/273/222/343/201/256/344/270/212/343/201/253/350/203/214/346/231/257.rb +18 -0
  26. data/examples/00250_lib_/350/203/214/346/231/257/347/224/273/345/203/217/343/202/222/346/232/227/343/201/2172_/350/203/214/346/231/257/343/201/256/344/270/212/343/201/253/351/273/222.rb +17 -0
  27. data/examples/00260_lib_/350/203/214/346/231/257/347/224/273/345/203/217/343/202/222/346/232/227/343/201/2173_/350/203/214/346/231/257/343/201/256/344/270/212/343/201/253/351/273/222_/347/224/273/351/235/242/343/202/265/343/202/244/343/202/272/343/203/225/343/202/243/343/203/203/343/203/210_/351/207/215/343/201/204.rb +27 -0
  28. data/examples/00270_lib_/350/203/214/346/231/257/347/224/273/345/203/217/343/202/222/346/232/227/343/201/2173_/350/203/214/346/231/257/343/201/256/344/270/212/343/201/253/351/273/222_/347/224/273/351/235/242/343/202/265/343/202/244/343/202/272/343/203/225/343/202/243/343/203/203/343/203/210_/351/253/230/351/200/237/345/214/226.rb +44 -0
  29. data/examples/00280_lib_/347/211/271/345/256/232/343/201/256/343/202/250/343/203/252/343/202/242/343/201/240/343/201/221/345/276/220/343/200/205/343/201/253/346/266/210/343/201/231.rb +26 -0
  30. data/examples/00290_lib_/350/203/214/346/231/257/350/211/262/345/244/211/346/233/264.rb +5 -0
  31. data/examples/00300_lib_/343/202/255/343/203/243/343/203/251/343/202/257/343/202/277/347/224/273/345/203/217/343/202/222/350/241/250/347/244/272/343/201/231/343/202/213/344/276/213.rb +17 -0
  32. data/examples/00310_lib_/343/202/255/343/203/243/343/203/251/343/202/257/343/202/277/347/224/273/345/203/217/343/201/256/343/202/242/343/203/213/343/203/241/343/203/274/343/202/267/343/203/247/343/203/263.rb +18 -0
  33. data/examples/00320_lib_/343/202/255/343/203/243/343/203/251/343/202/257/343/202/277/346/213/241/345/244/247/347/270/256/345/260/217/345/233/236/350/273/242.rb +21 -0
  34. data/examples/00330_joystick.rb +5 -0
  35. data/examples/00340_joystick_PS3/343/202/242/343/203/212/343/203/255/343/202/260/343/203/254/343/203/220/343/203/274/343/201/256/345/213/225/343/201/215/343/201/214/345/206/205/351/203/250/343/201/247/343/201/257/345/233/233/350/247/222.rb +30 -0
  36. data/examples/00350_joystick_PS3/343/202/242/343/203/212/343/203/255/343/202/260/343/203/254/343/203/220/343/203/274/343/201/256/350/252/277/346/225/264/346/270/210/343/201/277/343/203/231/343/202/257/343/203/210/343/203/253.rb +12 -0
  37. data/examples/00360_lib_mouse.rb +5 -0
  38. data/examples/00370_lib_input.rb +29 -0
  39. data/examples/00380_lib_vputs_align.rb +8 -0
  40. data/examples/00390_/343/203/225/343/202/251/343/203/263/343/203/210/344/270/200/350/246/247.rb +15 -0
  41. data/examples/00400_lib_draw_circle.rb +8 -0
  42. data/examples/00410_SDL/343/201/256draw_rect/343/201/2571/343/203/224/343/202/257/343/202/273/343/203/253/344/275/231/345/210/206/343/201/253/346/217/217/347/224/273/343/201/225/343/202/214/343/202/213/343/201/256/343/201/247/346/263/250/346/204/217.rb +7 -0
  43. data/examples/00420_circle_on_circle.rb +10 -0
  44. data/examples/00430_rotate.rb +16 -0
  45. data/examples/00440_draw_triangle.rb +7 -0
  46. data/examples/00450_parabora_triangle.rb +37 -0
  47. data/examples/00460_ice_hockey.rb +88 -0
  48. data/examples/00470_collision_block_vs_block.rb +120 -0
  49. data/examples/00480_simple_circle_controll.rb +37 -0
  50. data/examples/00490_/347/255/211/351/200/237/347/247/273/345/213/225_uniform_velocity_rain.rb +51 -0
  51. data/examples/00500_/345/212/240/351/200/237/346/224/276/347/211/251/347/267/232_parabora_volcano.rb +94 -0
  52. data/examples/00510_3d.rb +53 -0
  53. data/examples/00520_/343/203/210/343/203/253/343/203/215/343/201/256/343/203/241/343/203/213/343/203/245/343/203/274/351/242/250/343/201/256/345/213/225/343/201/215.rb +77 -0
  54. data/examples/00530_curve_2/346/254/241/343/203/231/343/202/270/343/202/247/346/233/262/347/267/232/343/201/250/347/233/264/347/267/232/343/201/250/343/201/256/344/272/244/347/202/271.rb +43 -0
  55. data/examples/00540_curve_3/346/254/241/343/203/231/343/202/270/343/202/247/346/233/262/347/267/232.rb +40 -0
  56. data/examples/00550_curve_N/346/254/241/343/203/231/343/202/270/343/202/247/346/233/262/347/267/232.rb +92 -0
  57. data/examples/00560_curve_/343/202/271/343/203/227/343/203/251/343/202/244/343/203/263/346/233/262/347/267/232.rb +113 -0
  58. data/examples/00570_/345/206/206/351/201/213/345/213/225_circle_jet_coaster.rb +52 -0
  59. data/examples/00580_/345/206/206/343/202/222/346/212/274/343/201/231/343/201/262/343/201/243/343/201/261/343/202/213_collision_circle_vs_circle_push_or_pull.rb +56 -0
  60. data/examples/00590_/350/212/213/350/231/253/343/202/264/343/203/240/347/264/220/343/203/207/343/203/242_collision_demo_circle_worm.rb +104 -0
  61. data/examples/00600_/346/214/257/343/202/212/345/255/220_swing.rb +145 -0
  62. data/examples/00610_/345/206/205/347/251/215/343/201/250/345/244/226/347/251/215_inner_product.rb +36 -0
  63. data/examples/00620_/346/263/225/347/267/232/343/203/231/343/202/257/343/203/210/343/203/253.rb +23 -0
  64. data/examples/00630_/345/206/206/343/201/250/345/206/206/343/201/256/345/217/215/345/260/204_collision_reflect_circle_vs_circle.rb +222 -0
  65. data/examples/00640_/347/202/271/343/201/250/347/267/232/345/210/206/343/201/256/344/272/244/345/267/256/345/210/244/345/256/232_collision_ray_circle_vs_line.rb +261 -0
  66. data/examples/00650_/345/206/206/343/201/250/347/202/271/343/201/256/345/217/215/345/260/204_collision_circle_vs_dot.rb +36 -0
  67. data/examples/00660_/345/206/206/343/201/250/345/206/206/343/201/250/347/267/232/345/210/206/343/201/256/345/217/215/345/260/204/343/203/207/343/203/242_collision_demo.rb +305 -0
  68. data/examples/00670_/343/203/251/343/202/244/343/203/225/343/202/262/343/203/274/343/203/240.rb +86 -0
  69. data/examples/00680_2/347/202/271/343/202/222/351/200/232/343/202/213/347/233/264/347/267/232/343/201/256/346/226/271/347/250/213/345/274/217.rb +81 -0
  70. data/examples/00690_/343/203/222/343/203/253/343/203/231/343/203/253/343/203/210/346/233/262/347/267/232.rb +77 -0
  71. data/examples/00700_/343/202/263/343/203/203/343/203/233/346/233/262/347/267/232.rb +79 -0
  72. data/examples/00710_/343/202/267/343/202/260/343/203/242/343/202/244/343/203/211/346/233/262/347/267/232.rb +40 -0
  73. data/examples/00720_/343/202/267/343/203/200/346/244/215/347/211/251.rb +44 -0
  74. data/examples/00730_/343/202/257/343/203/252/343/203/225/343/202/251/343/203/274/343/203/211/343/202/242/343/203/210/343/203/251/343/202/257/343/202/277_/345/237/272/346/234/254.rb +29 -0
  75. data/examples/00740_/343/202/257/343/203/252/343/203/225/343/202/251/343/203/274/343/203/211/343/202/242/343/203/210/343/203/251/343/202/257/343/202/277_/346/224/271/350/211/257_/350/211/262/344/273/230/343/201/215.rb +68 -0
  76. data/examples/00750_/343/202/257/343/203/252/343/203/225/343/202/251/343/203/274/343/203/211/343/202/242/343/203/210/343/203/251/343/202/257/343/202/277_/343/203/211/343/203/274/343/203/212/343/203/204/345/236/213.rb +44 -0
  77. data/examples/00760_/347/201/253/350/212/261.rb +42 -0
  78. data/examples/00770_atan/343/201/247atan2/343/202/222/346/233/270/343/201/217.rb +26 -0
  79. data/examples/00780_/346/250/231/346/272/226/343/203/251/343/202/244/343/203/226/343/203/251/343/203/252/343/201/256atan2_sin_cos/343/202/222/344/275/277/343/201/206.rb +15 -0
  80. data/examples/00790_/350/247/222/345/272/246/343/201/250/343/203/251/343/202/270/343/202/242/343/203/263/343/201/256/347/233/270/344/272/222/345/244/211/346/217/233.rb +22 -0
  81. data/examples/00800_/347/220/203/343/201/214/347/233/264/347/267/232/347/232/204/343/201/253/345/213/225/343/201/204/343/201/246/343/201/204/343/202/213/343/201/240/343/201/221/343/201/247/345/233/236/350/273/242/343/201/227/343/201/246/343/201/204/343/202/213/343/202/210/343/201/206/343/201/253/350/246/213/343/201/210/343/202/213.rb +27 -0
  82. data/examples/00810_/343/202/267/343/203/237/343/203/245/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263_/350/273/212.rb +75 -0
  83. data/examples/00820_/343/202/267/343/203/237/343/203/245/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263_/346/210/246/350/273/212.rb +90 -0
  84. data/examples/00830_/350/247/222/345/272/246/345/267/256.rb +36 -0
  85. data/examples/00840_/346/224/276/347/211/251/347/267/232/343/201/247/347/213/231/346/222/203_/346/231/202/351/226/223/345/233/272/345/256/232.rb +61 -0
  86. data/examples/00850_/346/224/276/347/211/251/347/267/232/343/201/247/347/213/231/346/222/203_/350/247/222/345/272/246/345/233/272/345/256/232.rb +84 -0
  87. data/examples/00860_/346/224/276/347/211/251/347/267/232/343/201/247/347/213/231/346/222/203_/351/200/237/345/272/246/345/233/272/345/256/232.rb +66 -0
  88. data/examples/00870_/350/247/222/345/272/246/350/243/234/346/255/243_/345/212/240/351/200/237/343/203/237/343/202/265/343/202/244/343/203/253.rb +60 -0
  89. data/examples/00880_/345/210/235/351/200/237/343/201/214/351/200/237/343/201/204/343/203/237/343/202/265/343/202/244/343/203/253.rb +51 -0
  90. data/examples/00890_/346/255/243/350/246/217/344/271/261/346/225/260/343/201/250/346/250/231/346/272/226/345/201/217/345/267/256/343/201/256/345/217/257/350/246/226/345/214/226.rb +72 -0
  91. data/examples/00900_/345/220/221/345/277/203/345/212/233/343/201/247/345/233/236/350/273/242/343/200/220/350/247/222/345/272/2460/345/272/246/343/201/213/343/202/211/343/200/221.rb +23 -0
  92. data/examples/00910_/345/220/221/345/277/203/345/212/233/343/201/247/345/233/236/350/273/242/343/200/220/344/273/273/346/204/217/343/201/256/350/247/222/345/272/246/343/201/213/343/202/211/343/200/221.rb +33 -0
  93. data/examples/00920_/343/203/236/343/203/252/343/202/252/343/203/226/343/203/251/343/202/266/343/203/274/343/202/272/351/242/250/343/201/253/347/224/273/351/235/242/344/270/241/347/253/257/343/201/214/347/271/213/343/201/243/343/201/246/343/201/204/343/202/213/344/276/213.rb +29 -0
  94. data/examples/00930_/345/212/271/346/236/234/351/237/263.rb +17 -0
  95. data/examples/00940_/343/203/236/343/203/203/343/203/227/343/203/201/343/203/203/343/203/227/343/201/256/343/203/236/343/203/203/343/203/227/351/205/215/347/275/256.rb +71 -0
  96. data/examples/00950_/343/203/236/343/203/203/343/203/227/343/203/201/343/203/203/343/203/227/343/201/256/350/241/250/347/244/272/344/276/213.rb +28 -0
  97. data/examples/00960_/343/203/236/343/203/203/343/203/227/343/203/201/343/203/203/343/203/227/343/201/250/345/215/230/344/270/200/347/224/273/345/203/217/343/201/256/351/201/225/343/201/204/343/202/222/345/220/270/345/217/216/343/201/231/343/202/213/344/276/213.rb +47 -0
  98. data/examples/00970_observer_/343/201/235/343/201/2561_/347/233/264/346/216/245.rb +28 -0
  99. data/examples/00980_observer_/343/201/235/343/201/2562_/346/231/256/351/200/232/343/201/253Singleton/347/211/210.rb +30 -0
  100. data/examples/00990_observer_/343/201/235/343/201/2563_SimpleDelegator/347/211/210.rb +28 -0
  101. data/examples/01000_observer_/343/201/235/343/201/2564_/351/200/206/343/201/253/343/203/253/343/203/274/343/203/227/344/270/273/345/260/216.rb +28 -0
  102. data/examples/01010_observer_/343/201/235/343/201/2565_/343/201/204/343/202/215/343/202/223/343/201/252/346/211/200/343/201/213/343/202/211/345/221/274/343/202/223/343/201/247/343/201/204/343/202/213/343/201/221/343/201/251Singleton/343/201/252/343/201/256/343/201/247/345/256/211/345/205/250.rb +37 -0
  103. data/examples/01020_observer_/343/201/235/343/201/2566_/343/201/204/343/202/215/343/202/223/343/201/252/346/211/200/343/201/213/343/202/211/345/221/274/343/201/266/345/240/264/345/220/210callbacks/343/202/222/344/275/277/343/202/217/343/201/252/343/201/204/343/202/210/343/201/206/343/201/253.rb +30 -0
  104. data/examples/01030_observer_/343/201/235/343/201/2567_/343/202/250/343/203/225/343/202/247/343/202/257/343/203/210/343/202/277/343/202/271/343/202/257/343/202/222/345/233/236/343/201/231/344/276/213.rb +57 -0
  105. data/examples/01040_/343/203/236/343/202/246/343/202/271/343/201/256/344/275/215/347/275/256/343/201/253/343/203/224/343/202/257/343/202/273/343/203/253/343/202/222/346/211/223/343/201/244.rb +18 -0
  106. data/examples/01050_/343/203/224/343/202/257/343/202/273/343/203/253/345/205/250/344/275/223/343/202/222/346/233/270/343/201/215/350/276/274/343/202/200.rb +27 -0
  107. data/examples/01060_effect_/347/224/273/345/203/217/343/201/256/343/202/263/343/203/263/343/203/234/343/203/252/343/203/245/343/203/274/343/203/210/346/263/225/343/201/253/343/202/210/343/202/213/343/202/250/343/203/225/343/202/247/343/202/257/343/203/210/345/207/246/347/220/206.rb +116 -0
  108. data/examples/01070_effect_FF7/343/201/256/346/210/246/351/227/230/343/201/253/345/205/245/343/202/213/343/201/250/343/201/215/343/201/256/343/202/250/343/203/225/343/202/247/343/202/257/343/203/210.rb +33 -0
  109. data/examples/01080_effect_/350/203/214/346/231/257/343/202/222/347/267/251/343/201/217/346/266/210/343/201/227/343/201/246/343/201/204/343/201/217/343/201/250/343/202/271/343/203/240/343/203/274/343/202/272/343/201/253/343/201/252/343/202/213.rb +16 -0
  110. data/examples/01090_/347/224/273/345/203/217/343/201/256/343/202/257/343/203/255/343/202/271/343/203/225/343/202/247/343/203/274/343/203/211.rb +37 -0
  111. data/examples/01100_/343/202/271/343/202/257/343/203/252/343/203/274/343/203/263/346/203/205/345/240/261.rb +8 -0
  112. data/examples/01110_lib_contrib_menu.rb +19 -0
  113. data/examples/01120_/351/233/233/345/236/213_2P/345/257/276/346/210/246/351/242/250STG.rb +109 -0
  114. data/examples/01130_/351/233/233/345/236/213_/346/210/246/350/273/212/345/257/276/346/210/246.rb +396 -0
  115. data/examples/01140_/351/233/233/345/236/213_2P/345/257/276/346/210/246.rb +60 -0
  116. data/examples/01150_/351/233/233/345/236/213_/343/202/271/343/203/274/343/203/221/343/203/274/343/203/236/343/203/252/343/202/252/351/242/250/343/202/242/343/202/257/343/202/267/343/203/247/343/203/263.rb +1251 -0
  117. data/examples/01160_2D/343/202/242/343/203/225/343/202/243/343/203/263/345/244/211/346/217/233.rb +40 -0
  118. data/examples/01170_stackprof.rb +10 -0
  119. data/examples/01180_sdl_/343/202/242/343/203/253/343/203/225/343/202/241/343/203/226/343/203/254/343/203/263/343/203/207/343/202/243/343/203/263/343/202/260/343/201/247/351/207/215/343/201/255/345/220/210/343/201/233/345/241/227/343/202/212/346/275/260/343/201/227.rb +11 -0
  120. data/examples/01190_/343/203/221/343/203/274/343/203/206/343/202/243/343/202/257/343/203/253/345/220/214/345/243/253/343/201/247/344/270/255/345/244/256/343/201/253/345/220/221/343/201/213/343/201/206.rb +79 -0
  121. data/examples/01200_lib_OpenGL.rb +55 -0
  122. data/examples/bezier.rb +202 -0
  123. data/examples/cursor.rb +50 -0
  124. data/examples/helper.rb +38 -0
  125. data/examples/lifegame_patterns.rb +102 -0
  126. data/examples/movable_point.rb +64 -0
  127. data/examples/mtx33.rb +294 -0
  128. data/examples/setup.rb +5 -0
  129. data/examples/stage_infos.rb +1 -0
  130. data/examples/start.sh +2 -0
  131. data/examples/test_all.rb +5 -0
  132. data/examples/testgl.rb +228 -0
  133. data/examples/trash/__0060_shooting2.rb +37 -0
  134. data/examples/trash/__0090_collision_circle1.rb +50 -0
  135. data/examples/trash/__0125_circle_collision.rb +103 -0
  136. data/examples/trash/__0130_circle_collision2.rb +60 -0
  137. data/examples/trash/__0270_circle_cycle_shift.rb +29 -0
  138. data/examples/trash/__bullet_algos.rb +224 -0
  139. data/examples/trash/gunship.rb +39 -0
  140. data/examples//343/203/227/343/203/255/343/202/270/343/202/247/343/202/257/343/202/277/343/203/274/343/201/253/350/241/250/347/244/272/343/201/231/343/202/213/343/201/250/343/201/215.sh +2 -0
  141. data/lib/stylet.rb +1 -0
  142. data/lib/stylet/application_memory_record.rb +33 -0
  143. data/lib/stylet/audio.rb +455 -0
  144. data/lib/stylet/axis_support.rb +62 -0
  145. data/lib/stylet/base.rb +76 -0
  146. data/lib/stylet/callbacks.rb +62 -0
  147. data/lib/stylet/cli.rb +54 -0
  148. data/lib/stylet/collision_support.rb +56 -0
  149. data/lib/stylet/config.rb +39 -0
  150. data/lib/stylet/contrib/menu.rb +508 -0
  151. data/lib/stylet/contrib/shared_pad.rb +32 -0
  152. data/lib/stylet/contrib/sprity.rb +149 -0
  153. data/lib/stylet/core.rb +118 -0
  154. data/lib/stylet/cpu_stat.rb +58 -0
  155. data/lib/stylet/delegators.rb +54 -0
  156. data/lib/stylet/draw.rb +256 -0
  157. data/lib/stylet/draw_support/arrow.rb +56 -0
  158. data/lib/stylet/draw_support/circle.rb +63 -0
  159. data/lib/stylet/draw_support/polygon.rb +22 -0
  160. data/lib/stylet/font.rb +172 -0
  161. data/lib/stylet/fps_adjust.rb +23 -0
  162. data/lib/stylet/fps_stat.rb +41 -0
  163. data/lib/stylet/input.rb +8 -0
  164. data/lib/stylet/input/base.rb +105 -0
  165. data/lib/stylet/input/hardware_bindings.rb +65 -0
  166. data/lib/stylet/input/key_one.rb +162 -0
  167. data/lib/stylet/input/support.rb +72 -0
  168. data/lib/stylet/joystick.rb +31 -0
  169. data/lib/stylet/joystick_adapter.rb +130 -0
  170. data/lib/stylet/joystick_adapters/buffalo_snes_adapter.rb +47 -0
  171. data/lib/stylet/joystick_adapters/elecom_usb_pad_adapter.rb +30 -0
  172. data/lib/stylet/joystick_adapters/hori_rap_v3_sa_adapter.rb +46 -0
  173. data/lib/stylet/joystick_adapters/ps3_standard_adapter.rb +40 -0
  174. data/lib/stylet/joystick_adapters/unknown_adapter.rb +13 -0
  175. data/lib/stylet/keyboard.rb +15 -0
  176. data/lib/stylet/logger.rb +12 -0
  177. data/lib/stylet/mouse.rb +58 -0
  178. data/lib/stylet/palette.rb +17 -0
  179. data/lib/stylet/rect.rb +113 -0
  180. data/lib/stylet/shortcut.rb +8 -0
  181. data/lib/stylet/state.rb +87 -0
  182. data/lib/stylet/stylet.rb +44 -0
  183. data/lib/stylet/system_pause.rb +24 -0
  184. data/lib/stylet/version.rb +3 -0
  185. data/log/.gitkeep +0 -0
  186. data/stylet.gemspec +31 -0
  187. data/test/test_helper.rb +6 -0
  188. data/test/test_input_base.rb +12 -0
  189. data/test/test_input_key_one.rb +43 -0
  190. data/test/test_input_support.rb +47 -0
  191. data/test/test_sample.rb +13 -0
  192. data/test/test_state.rb +26 -0
  193. data/tips.org +16 -0
  194. metadata +391 -0
@@ -0,0 +1,36 @@
1
+ #
2
+ # 円と点の反射
3
+ #
4
+ require_relative "helper"
5
+
6
+ class App < Stylet::Base
7
+ include Helper::CursorWithObjectCollection
8
+
9
+ setup do
10
+ cursor.radius = 1
11
+
12
+ @radius = 64 # 円の半径
13
+
14
+ @pos = vec2[srect.center.x, srect.max_y] # 物体初期位置
15
+ @speed = vec2[rand(-2.0..2.0), rand(-15.0..-12)] # 速度ベクトル
16
+ @gravity = vec2[0, 0.220] # 重力
17
+ end
18
+
19
+ update do
20
+ @speed += @gravity
21
+ @pos += @speed
22
+
23
+ diff = @pos - cursor.point
24
+ if diff.magnitude > 0
25
+ if diff.magnitude < @radius
26
+ @pos = cursor.point + diff.normalize.scale(@radius)
27
+ @speed = diff.normalize * @speed.magnitude
28
+ end
29
+ end
30
+
31
+ draw_circle(@pos, :radius => @radius, :vertex => 32)
32
+ vputs "Z:x++ X:x--"
33
+ end
34
+
35
+ run
36
+ end
@@ -0,0 +1,305 @@
1
+ #
2
+ # デモ - かごの中で球が転がある
3
+ #
4
+ require_relative "helper"
5
+
6
+ class Ball
7
+ include Stylet::Delegators
8
+ delegate :button, :axis, :cursor, :to => "Stylet.context"
9
+
10
+ REFLECT_RATIO = 1.0 # 反射係数
11
+
12
+ attr_accessor :pos # 中心点
13
+ attr_accessor :speed # 速度
14
+ attr_reader :radius # 円の半径
15
+ attr_reader :mass # 質量
16
+
17
+ def initialize(index)
18
+ @pos = srect.center.clone # 中心点
19
+ @speed = Stylet::Vector.new(rand(-2.0..2), rand(-8.0..-6)) # 速度ベクトル
20
+ @gravity = Stylet::Vector.new(0, 0.20) # 重力
21
+ if index < 4
22
+ @radius = 8 + ((index + 2)**2) # 半径
23
+ else
24
+ @radius = rand(8..20) # 半径
25
+ end
26
+ @mass = @radius**2 # 質量は面積と比例することにする(PI*r二乗)
27
+ @vertex = 16 # 何角形か?
28
+ end
29
+
30
+ #
31
+ # 線分 pA pB との当たり判定
32
+ #
33
+ def collide_circle_vs_line(pA, pB, options = {})
34
+ # 点Aと点Bに円がめり込んでいたら押す
35
+ [pA, pB].each do |pX|
36
+ diff = @pos - pX
37
+ if diff.magnitude > 0
38
+ if diff.magnitude < @radius
39
+ @pos = pX + diff.normalize.scale(@radius)
40
+ @speed = diff.normalize * @speed.magnitude
41
+ end
42
+ end
43
+ end
44
+
45
+ # 法線(正規化済み)
46
+ normal = pA.normal(pB).normalize
47
+ # Stylet.context.draw_line(pA, pA + normal.scale(30))
48
+
49
+ # t と C の取得
50
+ begin
51
+ # 自機から面と垂直な線を出して面と交差するか調べる
52
+ @vP = vec2.angle_at(normal.reverse.angle).scale(@radius)
53
+
54
+ # 自機の原点・速度ベクトル・法線の原点(pAでもpBでもよい)・法線ベクトルを渡すと求まる
55
+ @t = Stylet::Vector.collision_power_scale(@pos, @vP, pA, normal)
56
+
57
+ # 交差点の取得
58
+ @pC = @pos + @vP.scale(@t)
59
+
60
+ # 内積の取得
61
+ ac = @pC - pA
62
+ bc = @pC - pB
63
+ if ac.nonzero? && bc.nonzero?
64
+ @ip2 = Stylet::Vector.dot_product(ac, bc)
65
+ else
66
+ raise
67
+ end
68
+ end
69
+
70
+ # 線の表裏どちらにいるか。また衝突しているか? (この時点では無限線)
71
+
72
+ f = false
73
+ if options[:ground]
74
+ f = @t <= 1.0 # めり込んでいる or 通り過ぎている
75
+ else
76
+ f = 0.0 < @t && @t <= 1.0 # めり込んでいる(これだと線を飛び越えてしまう)
77
+ end
78
+ if f
79
+ if @ip2 < 0 # 線の中で
80
+ # 円を押し戻す
81
+ @pos = @pC + normal * @radius
82
+ @speed += @speed.reflect(normal)
83
+ end
84
+ end
85
+
86
+ # 速度制限(円が線から飛び出さないようにする)
87
+ speed_limit!
88
+ # if @speed.magnitude > @radius
89
+ # @speed = @speed.normalize.scale(@radius)
90
+ # end
91
+ end
92
+
93
+ def self.collide_circle_vs_circle(oA, oB)
94
+ pA = oA.pos
95
+ pB = oB.pos
96
+ sA = oA.speed
97
+ sB = oB.speed
98
+ amass = oA.mass
99
+ bmass = oB.mass
100
+
101
+ diff = pB - pA
102
+ rdiff = (oA.radius + oB.radius) - diff.magnitude
103
+ # Stylet::Base.active_frame.vputs rdiff
104
+
105
+ # ここは完全に重なっている。物理的にはこうならないので左右に移動させる
106
+ if diff.magnitude.zero?
107
+ arrow = Stylet::Vector.new(*2.times.collect { [1.0, -1.0].sample })
108
+ pA -= arrow * oA.radius
109
+ pB += arrow * oB.radius
110
+ oA.pos = pA
111
+ oB.pos = pB
112
+ return true
113
+ end
114
+
115
+ # Stylet.context.vputs "magnitude=#{diff.magnitude}"
116
+ # Stylet.context.vputs "rdiff=#{rdiff}"
117
+
118
+ # if diff.magnitude.zero?
119
+ # return
120
+ # end
121
+
122
+ # # AとBをお互い離す
123
+ # if Stylet.context.reflect_mode == "move"
124
+ # if rdiff > 0
125
+ # pA -= diff.normalize * rdiff / 2
126
+ # pB += diff.normalize * rdiff / 2
127
+ # end
128
+ # end
129
+
130
+ # 反射する
131
+ if rdiff > 0
132
+
133
+ # 反射するモードでもいったんお互いを引き離さないと絡まってしまう
134
+ pA -= diff.normalize * rdiff * 0.5
135
+ pB += diff.normalize * rdiff * 0.5
136
+
137
+ # (am) 円Aから円Bへ移動運動を発生させるベクトル
138
+ # (ar) 円Aから円Bへ回転運動を発生させるベクトル
139
+ # (bm) 円Bから円Aへ移動運動を発生させるベクトル
140
+ # (br) 円Bから円Aへ回転運動を発生させるベクトル
141
+
142
+ # 速度ベクトルを重心方向と垂直な方向に分離する
143
+ _denominator = (diff.x**2 + diff.y**2)
144
+
145
+ # A
146
+ # A→B 回転運動
147
+ t = -(diff.x * sA.x + diff.y * sA.y) / _denominator
148
+ ar = sA + diff.scale(t)
149
+
150
+ # A→B 移動運動
151
+ t = -(-diff.y * sA.x + diff.x * sA.y) / _denominator
152
+ am = Stylet::Vector.new
153
+ am.x = sA.x - diff.y * t
154
+ am.y = sA.y + diff.x * t
155
+
156
+ # B
157
+ # B→A 回転運動
158
+ t = -(diff.x * sB.x + diff.y * sB.y) / _denominator
159
+ br = sB + diff.scale(t)
160
+
161
+ # B→A 移動運動
162
+ t = -(-diff.y * sB.x + diff.x * sB.y) / _denominator
163
+ bm = Stylet::Vector.new
164
+ bm.x = sB.x - diff.y * t
165
+ bm.y = sB.y + diff.x * t
166
+
167
+ # x 方向と y 方向それぞれの衝突後の速度を計算する
168
+ ad = Stylet::Vector.new
169
+ bd = Stylet::Vector.new
170
+ ad.x = (amass * am.x + bmass * bm.x + bm.x * REFLECT_RATIO * bmass - am.x * REFLECT_RATIO * bmass) / (amass + bmass)
171
+ bd.x = - REFLECT_RATIO * (bm.x - am.x) + ad.x
172
+ ad.y = (amass * am.y + bmass * bm.y + bm.y * REFLECT_RATIO * bmass - am.y * REFLECT_RATIO * bmass) / (amass + bmass)
173
+ bd.y = - REFLECT_RATIO * (bm.y - am.y) + ad.y
174
+
175
+ # 回転運動を発生させるベクトルを加算して衝突後の速度を計算
176
+ sA.x = ad.x + ar.x
177
+ sA.y = ad.y + ar.y
178
+ sB.x = bd.x + br.x
179
+ sB.y = bd.y + br.y
180
+
181
+ oA.pos = pA
182
+ oB.pos = pB
183
+ oA.speed = sA
184
+ oB.speed = sB
185
+
186
+ oA.speed_limit!
187
+ oB.speed_limit!
188
+
189
+ # pA += sA
190
+ # pB += sB
191
+ true
192
+ else
193
+ false
194
+ end
195
+ end
196
+
197
+ def speed_limit!(r = 1.0)
198
+ # 速度制限(円が線から飛び出さないようにする)
199
+ if @speed.magnitude > (@radius * r)
200
+ @speed = @speed.normalize.scale(@radius * r)
201
+ end
202
+ end
203
+
204
+ def speed_limit2!(v)
205
+ # 速度制限(円が線から飛び出さないようにする)
206
+ if @speed.magnitude > v
207
+ @speed = @speed.normalize.scale(v)
208
+ end
209
+ end
210
+
211
+ def update
212
+ # 操作
213
+ begin
214
+ # AとBで速度ベクトルの反映
215
+ @pos += @speed.scale(button.btA.repeat_0or1) + @speed.scale(-button.btB.repeat_0or1)
216
+ # Cボタンおしっぱなし + マウスで自機位置移動
217
+ if button.btC.press?
218
+ @pos = cursor.point.clone
219
+ end
220
+ # Dボタンおしっぱなし + マウスで自機角度変更
221
+ if button.btD.press?
222
+ if cursor.point != @pos
223
+ @speed = (cursor.point - @pos).normalize * @speed.magnitude.round
224
+ end
225
+ end
226
+ end
227
+
228
+ @speed += @gravity
229
+ # speed_limit2!(10.0)
230
+
231
+ @pos += @speed
232
+
233
+ # 自機(円)の表示
234
+ draw_circle(@pos, :radius => @radius, :vertex => @vertex, :angle => @speed.angle)
235
+ end
236
+ end
237
+
238
+ class App < Stylet::Base
239
+ include Helper::CursorWithObjectCollection
240
+
241
+ setup do
242
+ @balls = Array.new(5) {|i|Ball.new(i)}
243
+ @center = srect.center
244
+ end
245
+
246
+ update do
247
+ # 線の準備
248
+ @lines = []
249
+ n = 5
250
+ n.times do |i|
251
+ @lines << @center + vec2.angle_at((1.0 / 128 * frame_counter) + 1.0 / n * i) * srect.h * 0.45
252
+ end
253
+
254
+ # 線の準備
255
+ @lines2 = []
256
+ n = 3
257
+ n.times do |i|
258
+ @lines2 << @center + vec2.angle_at((1.0 / 512 * frame_counter) + 1.0 / n * i) * srect.h * 0.1
259
+ end
260
+
261
+ # 円と円の当たり判定
262
+ @balls.each do |ball1|
263
+ (@balls - [ball1]).each do |ball2|
264
+ Ball.collide_circle_vs_circle(ball1, ball2)
265
+ end
266
+ end
267
+
268
+ # 円と線の当たり判定
269
+ @lines.each_index do |i|
270
+ a = @lines[i]
271
+ b = @lines[i.next.modulo(@lines.size)]
272
+ @balls.each do |ball|
273
+ ball.collide_circle_vs_line(a, b, :ground => true)
274
+ end
275
+ end
276
+
277
+ # 円と線の当たり判定(中央の物体)
278
+ @lines2.each_index do |i|
279
+ a = @lines2[i]
280
+ b = @lines2[i.next.modulo(@lines2.size)]
281
+ @balls.each do |ball|
282
+ ball.collide_circle_vs_line(b, a)
283
+ end
284
+ end
285
+
286
+ # 線の描画
287
+ @lines.each_index do |i|
288
+ a = @lines[i]
289
+ b = @lines[i.next.modulo(@lines.size)]
290
+ draw_line(a, b)
291
+ end
292
+
293
+ # 線の描画
294
+ @lines2.each_index do |i|
295
+ a = @lines2[i]
296
+ b = @lines2[i.next.modulo(@lines2.size)]
297
+ draw_line(a, b)
298
+ end
299
+
300
+ # 球の描画
301
+ @balls.each(&:update)
302
+ end
303
+
304
+ run
305
+ end
@@ -0,0 +1,86 @@
1
+ #
2
+ # ライフゲーム
3
+ #
4
+ # Conway's Game of Life http://www.conwaylife.com/
5
+ #
6
+
7
+ require_relative "helper"
8
+ require_relative "lifegame_patterns"
9
+
10
+ class App < Stylet::Base
11
+ include Helper::CursorWithObjectCollection
12
+
13
+ setup do
14
+ @matrixs = Array.new(2) {{}}
15
+ @generation = 0
16
+ @cell_list_index = 0
17
+
18
+ @size = 12
19
+ @width = srect.width / @size
20
+ @height = srect.height / @size
21
+
22
+ reset
23
+ end
24
+
25
+ update do
26
+ next_generation
27
+ display
28
+ end
29
+
30
+ def reset
31
+ @generation = 0
32
+ @matrixs[0].clear
33
+ LifegamePatterns[@cell_list_index.modulo(LifegamePatterns.size)].strip.lines.each_with_index do |line, y|
34
+ line.chars.each_with_index do |char, x|
35
+ if char.match?(/[oO■]/)
36
+ @matrixs[0][[x, y]] = true
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ def next_generation
43
+ if button.btA.repeat == 1 || button.btB.repeat == 1
44
+ @cell_list_index += (button.btA.repeat_0or1 - button.btB.repeat_0or1)
45
+ reset
46
+ end
47
+ if button.btC.repeat == 1
48
+ reset
49
+ end
50
+
51
+ @matrix = @matrixs[@generation.modulo(@matrixs.size)]
52
+ @next_matrix = @matrixs[@generation.next.modulo(@matrixs.size)]
53
+
54
+ @height.times do |y|
55
+ @width.times do |x|
56
+ vec = vec2[x, y]
57
+ frame_counter = around_vectors.count do |v|
58
+ @matrix[(vec + v).to_a.collect(&:to_i)]
59
+ end
60
+ @next_matrix[vec.to_a] = @matrix[vec.to_a] ? (frame_counter == 2 || frame_counter == 3) : (frame_counter == 3)
61
+ end
62
+ end
63
+
64
+ @generation += 1
65
+ end
66
+
67
+ def display
68
+ if @next_matrix
69
+ @next_matrix.each do |xy, cell|
70
+ if cell
71
+ v = vec2[*xy]
72
+ v = (v * @size) + srect.to_vector + cursor.point
73
+ draw_rect(rect4.new(*v, @size, @size), :fill => true, :color => :font)
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ def around_vectors
80
+ @around_vectors ||= [[-1, -1], [0, -1], [1, -1], [-1, 0], [1, 0], [-1, 1], [0, 1], [1, 1]].collect do |e|
81
+ vec2[*e]
82
+ end
83
+ end
84
+
85
+ run
86
+ end
@@ -0,0 +1,81 @@
1
+ #
2
+ # 2点を通る直線の方程式
3
+ #
4
+ require_relative "helper"
5
+
6
+ class App < Stylet::Base
7
+ include Helper::CursorWithObjectCollection
8
+ include Helper::MovablePoint
9
+
10
+ setup do
11
+ @p0 = srect.center + vec2[-srect.w / 4, rand(srect.h / 4)] # 左の点
12
+ @p1 = srect.center + vec2[+srect.w / 4, rand(srect.h / 4)] # 右の点
13
+ self.title = "2点を通る直線の方程式"
14
+ @x_mode = true
15
+ end
16
+
17
+ update do
18
+ update_movable_points([@p0, @p1])
19
+ [@p0, @p1].each_with_index {|e, i|vputs("p#{i} #{e}", :vector => e)}
20
+
21
+ if button.btC.trigger?
22
+ @x_mode = !@x_mode
23
+ end
24
+
25
+ # 2点から直線の式の求め方 - Yahoo!知恵袋 の ju_tateru さんの回答より
26
+ # http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1255399312
27
+ # > したがって、(x0,y0),(x1,y1)を通る直線は
28
+ # > (y0 - y1)x - (x0 - x1)y + x0y1 - x1y0 = 0
29
+ # > と表せます。
30
+ #
31
+ # なので ax + by + c = 0 の部分の a b c は次のようになる
32
+ a = @p0.y - @p1.y
33
+ b = -(@p0.x - @p1.x)
34
+ c = (@p0.x * @p1.y - @p1.x * @p0.y)
35
+ # あとは ax + by + c = 0 を入れ替えて
36
+ # x から y を求めるなら y = (-c + -a * x) / b
37
+ # y から x を求めるなら x = (-c + -b * y) / a
38
+ # となる
39
+
40
+ # ax + by + c = 0 の場合の傾きとy切片は次のようになるらしい
41
+ # 傾き: -a/b
42
+ # y切片: -c/b
43
+
44
+ katamuki = -a.to_f / b
45
+ y_seppen = -c.to_f / b
46
+
47
+ if @x_mode
48
+ # X軸を等速で動かしてYを求める場合
49
+ x_range = ((srect.center.x - srect.w / 4)..(srect.center.x + srect.w / 4))
50
+ x_range.begin.step(x_range.end, 16) do |x|
51
+ # y = (((@p1.y - @p0.y).to_f / (@p1.x - @p0.x)) * (x - @p0.x)) + @p0.y # ← こっちでもいい
52
+ y = (-c + -a * x).to_f / b
53
+ v = vec2[x, y]
54
+ draw_triangle(v, :radius => 4, :vertex => 4)
55
+ end
56
+ else
57
+ # Y軸を等速で動かしてXを求める場合
58
+ y_range = ((srect.center.y - srect.h / 4)..(srect.center.y + srect.h / 4))
59
+ y_range.begin.step(y_range.end, 16) do |y|
60
+ # x = (((y - @p0.y) * (@p1.x - @p0.x)).to_f / (@p1.y - @p0.y)) + @p0.x # ← こっちでもいい
61
+ x = (-c + -b * y).to_f / a
62
+ v = vec2[x, y]
63
+ draw_triangle(v, :radius => 4, :vertex => 4)
64
+ end
65
+ end
66
+
67
+ # (y1-y0)x -(x1-x0)y -{(y1-y0)x0+(x1-x0)y0} = 0
68
+ # ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^
69
+ # a x + b y + c
70
+
71
+ vputs " ax+by+c=0 => #{a}x + #{b}y + #{c} = 0"
72
+ vputs " 傾き -a/b => #{katamuki}"
73
+ vputs "y切片 -c/b => #{y_seppen}"
74
+
75
+ vputs "p0:#{@p0}"
76
+ vputs "p1:#{@p1}"
77
+ vputs "A:left point move B:right point move C:x y toggle"
78
+ end
79
+
80
+ run
81
+ end