stylet 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.travis.yml +4 -0
- data/.yardopts +2 -0
- data/Gemfile +16 -0
- data/README.org +19 -0
- data/Rakefile +17 -0
- data/bin/setup +63 -0
- data/bin/stylet +8 -0
- data/examples/.ruby-version +1 -0
- data/examples/00100_lib_hello_world.rb +8 -0
- data/examples/00110_lib_sge_check.rb +6 -0
- 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
- data/examples/00130_lib_window_title.rb +8 -0
- data/examples/00140_lib_callbacks.rb +8 -0
- data/examples/00150_lib_vector.rb +5 -0
- data/examples/00160_lib_run.rb +4 -0
- data/examples/00170_lib_frame.rb +4 -0
- data/examples/00180_lib_config/347/242/272/350/252/215.rb +7 -0
- 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
- 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
- data/examples/00210_lib_delegators.rb +7 -0
- data/examples/00220_lib_template_method.rb +13 -0
- 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
- 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
- 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
- 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
- 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
- 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
- data/examples/00290_lib_/350/203/214/346/231/257/350/211/262/345/244/211/346/233/264.rb +5 -0
- 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
- 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
- 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
- data/examples/00330_joystick.rb +5 -0
- 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
- 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
- data/examples/00360_lib_mouse.rb +5 -0
- data/examples/00370_lib_input.rb +29 -0
- data/examples/00380_lib_vputs_align.rb +8 -0
- data/examples/00390_/343/203/225/343/202/251/343/203/263/343/203/210/344/270/200/350/246/247.rb +15 -0
- data/examples/00400_lib_draw_circle.rb +8 -0
- 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
- data/examples/00420_circle_on_circle.rb +10 -0
- data/examples/00430_rotate.rb +16 -0
- data/examples/00440_draw_triangle.rb +7 -0
- data/examples/00450_parabora_triangle.rb +37 -0
- data/examples/00460_ice_hockey.rb +88 -0
- data/examples/00470_collision_block_vs_block.rb +120 -0
- data/examples/00480_simple_circle_controll.rb +37 -0
- data/examples/00490_/347/255/211/351/200/237/347/247/273/345/213/225_uniform_velocity_rain.rb +51 -0
- data/examples/00500_/345/212/240/351/200/237/346/224/276/347/211/251/347/267/232_parabora_volcano.rb +94 -0
- data/examples/00510_3d.rb +53 -0
- 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
- 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
- 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
- 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
- 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
- data/examples/00570_/345/206/206/351/201/213/345/213/225_circle_jet_coaster.rb +52 -0
- 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
- 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
- data/examples/00600_/346/214/257/343/202/212/345/255/220_swing.rb +145 -0
- data/examples/00610_/345/206/205/347/251/215/343/201/250/345/244/226/347/251/215_inner_product.rb +36 -0
- data/examples/00620_/346/263/225/347/267/232/343/203/231/343/202/257/343/203/210/343/203/253.rb +23 -0
- 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
- 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
- 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
- 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
- data/examples/00670_/343/203/251/343/202/244/343/203/225/343/202/262/343/203/274/343/203/240.rb +86 -0
- 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
- 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
- data/examples/00700_/343/202/263/343/203/203/343/203/233/346/233/262/347/267/232.rb +79 -0
- 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
- data/examples/00720_/343/202/267/343/203/200/346/244/215/347/211/251.rb +44 -0
- 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
- 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
- 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
- data/examples/00760_/347/201/253/350/212/261.rb +42 -0
- data/examples/00770_atan/343/201/247atan2/343/202/222/346/233/270/343/201/217.rb +26 -0
- 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
- 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
- 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
- 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
- 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
- data/examples/00830_/350/247/222/345/272/246/345/267/256.rb +36 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- data/examples/00930_/345/212/271/346/236/234/351/237/263.rb +17 -0
- 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
- 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
- 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
- data/examples/00970_observer_/343/201/235/343/201/2561_/347/233/264/346/216/245.rb +28 -0
- 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
- data/examples/00990_observer_/343/201/235/343/201/2563_SimpleDelegator/347/211/210.rb +28 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- data/examples/01110_lib_contrib_menu.rb +19 -0
- data/examples/01120_/351/233/233/345/236/213_2P/345/257/276/346/210/246/351/242/250STG.rb +109 -0
- data/examples/01130_/351/233/233/345/236/213_/346/210/246/350/273/212/345/257/276/346/210/246.rb +396 -0
- data/examples/01140_/351/233/233/345/236/213_2P/345/257/276/346/210/246.rb +60 -0
- 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
- 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
- data/examples/01170_stackprof.rb +10 -0
- 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
- 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
- data/examples/01200_lib_OpenGL.rb +55 -0
- data/examples/bezier.rb +202 -0
- data/examples/cursor.rb +50 -0
- data/examples/helper.rb +38 -0
- data/examples/lifegame_patterns.rb +102 -0
- data/examples/movable_point.rb +64 -0
- data/examples/mtx33.rb +294 -0
- data/examples/setup.rb +5 -0
- data/examples/stage_infos.rb +1 -0
- data/examples/start.sh +2 -0
- data/examples/test_all.rb +5 -0
- data/examples/testgl.rb +228 -0
- data/examples/trash/__0060_shooting2.rb +37 -0
- data/examples/trash/__0090_collision_circle1.rb +50 -0
- data/examples/trash/__0125_circle_collision.rb +103 -0
- data/examples/trash/__0130_circle_collision2.rb +60 -0
- data/examples/trash/__0270_circle_cycle_shift.rb +29 -0
- data/examples/trash/__bullet_algos.rb +224 -0
- data/examples/trash/gunship.rb +39 -0
- 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
- data/lib/stylet.rb +1 -0
- data/lib/stylet/application_memory_record.rb +33 -0
- data/lib/stylet/audio.rb +455 -0
- data/lib/stylet/axis_support.rb +62 -0
- data/lib/stylet/base.rb +76 -0
- data/lib/stylet/callbacks.rb +62 -0
- data/lib/stylet/cli.rb +54 -0
- data/lib/stylet/collision_support.rb +56 -0
- data/lib/stylet/config.rb +39 -0
- data/lib/stylet/contrib/menu.rb +508 -0
- data/lib/stylet/contrib/shared_pad.rb +32 -0
- data/lib/stylet/contrib/sprity.rb +149 -0
- data/lib/stylet/core.rb +118 -0
- data/lib/stylet/cpu_stat.rb +58 -0
- data/lib/stylet/delegators.rb +54 -0
- data/lib/stylet/draw.rb +256 -0
- data/lib/stylet/draw_support/arrow.rb +56 -0
- data/lib/stylet/draw_support/circle.rb +63 -0
- data/lib/stylet/draw_support/polygon.rb +22 -0
- data/lib/stylet/font.rb +172 -0
- data/lib/stylet/fps_adjust.rb +23 -0
- data/lib/stylet/fps_stat.rb +41 -0
- data/lib/stylet/input.rb +8 -0
- data/lib/stylet/input/base.rb +105 -0
- data/lib/stylet/input/hardware_bindings.rb +65 -0
- data/lib/stylet/input/key_one.rb +162 -0
- data/lib/stylet/input/support.rb +72 -0
- data/lib/stylet/joystick.rb +31 -0
- data/lib/stylet/joystick_adapter.rb +130 -0
- data/lib/stylet/joystick_adapters/buffalo_snes_adapter.rb +47 -0
- data/lib/stylet/joystick_adapters/elecom_usb_pad_adapter.rb +30 -0
- data/lib/stylet/joystick_adapters/hori_rap_v3_sa_adapter.rb +46 -0
- data/lib/stylet/joystick_adapters/ps3_standard_adapter.rb +40 -0
- data/lib/stylet/joystick_adapters/unknown_adapter.rb +13 -0
- data/lib/stylet/keyboard.rb +15 -0
- data/lib/stylet/logger.rb +12 -0
- data/lib/stylet/mouse.rb +58 -0
- data/lib/stylet/palette.rb +17 -0
- data/lib/stylet/rect.rb +113 -0
- data/lib/stylet/shortcut.rb +8 -0
- data/lib/stylet/state.rb +87 -0
- data/lib/stylet/stylet.rb +44 -0
- data/lib/stylet/system_pause.rb +24 -0
- data/lib/stylet/version.rb +3 -0
- data/log/.gitkeep +0 -0
- data/stylet.gemspec +31 -0
- data/test/test_helper.rb +6 -0
- data/test/test_input_base.rb +12 -0
- data/test/test_input_key_one.rb +43 -0
- data/test/test_input_support.rb +47 -0
- data/test/test_sample.rb +13 -0
- data/test/test_state.rb +26 -0
- data/tips.org +16 -0
- metadata +391 -0
@@ -0,0 +1,60 @@
|
|
1
|
+
# カーソルの位置に補正していくミサイル
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
|
5
|
+
class Bullet
|
6
|
+
include Stylet::Delegators
|
7
|
+
|
8
|
+
def initialize(pos:, target:)
|
9
|
+
@pos = pos
|
10
|
+
@target = target
|
11
|
+
@dir = rand
|
12
|
+
|
13
|
+
@speed = 3 # 初速度
|
14
|
+
@accel = 0.1 # 増減する加速度
|
15
|
+
@angle_window = 1.0 / 4 # 360 / 8 = 45 度未満ならターゲットの方向を向いていると考える
|
16
|
+
@adir = 0.06 # 相手の方向に補正していく速度(1.0:最速)
|
17
|
+
end
|
18
|
+
|
19
|
+
def update
|
20
|
+
d = Stylet::Magic.angle_diff(from: @dir, to: @pos.angle_to(@target))
|
21
|
+
@dir += d * @adir
|
22
|
+
|
23
|
+
if d.abs < @angle_window # angle_window 度未満なら
|
24
|
+
@speed += @accel # 相手の方向に向いているとして速度を上げる
|
25
|
+
else
|
26
|
+
@speed -= @accel # そうでないなら速度を下げる
|
27
|
+
end
|
28
|
+
@speed = Stylet::Chore.clamp(@speed, 1.0..8.0) # 速度が下がりすぎたり上がりすぎたりするのを防ぐ
|
29
|
+
|
30
|
+
speed_vec = vec2.angle_at(@dir) * @speed
|
31
|
+
@pos += speed_vec
|
32
|
+
draw_triangle(@pos, :radius => 10, :angle => @dir)
|
33
|
+
draw_vector(speed_vec * 4, :origin => @pos) # スピードベクトルの可視化
|
34
|
+
|
35
|
+
if (@target - @pos).length < 16
|
36
|
+
Stylet.context.objects.delete(self)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class App < Stylet::Base
|
42
|
+
include Helper::CursorWithObjectCollection
|
43
|
+
include Helper::MovablePoint
|
44
|
+
|
45
|
+
setup do
|
46
|
+
self.title = "角度補正ミサイル"
|
47
|
+
@points = []
|
48
|
+
@points << srect.center + vec2[+srect.w / 4, 0]
|
49
|
+
end
|
50
|
+
|
51
|
+
update do
|
52
|
+
update_movable_points(@points)
|
53
|
+
@points.each_with_index {|e, i|vputs("p#{i}", :vector => e)}
|
54
|
+
if frame_counter.modulo(30).zero?
|
55
|
+
@objects << Bullet.new(:pos => @points[0], :target => cursor.point)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
run
|
60
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# カーソルの位置に補正していくミサイル
|
2
|
+
|
3
|
+
require_relative "helper"
|
4
|
+
|
5
|
+
class Bullet
|
6
|
+
include Stylet::Delegators
|
7
|
+
|
8
|
+
def initialize(pos:, target:)
|
9
|
+
@pos = pos
|
10
|
+
@target = target
|
11
|
+
@dir = rand
|
12
|
+
|
13
|
+
@speed = 0 # 初速度
|
14
|
+
end
|
15
|
+
|
16
|
+
def update
|
17
|
+
@dir = @pos.angle_to(@target)
|
18
|
+
len = (@target - @pos).length
|
19
|
+
speed = len * 0.04
|
20
|
+
speed = Stylet::Chore.clamp(speed, 3.0..12.0)
|
21
|
+
speed_vec = vec2.angle_at(@dir) * speed
|
22
|
+
@pos += speed_vec
|
23
|
+
draw_triangle(@pos, :radius => 10, :angle => @pos.angle_to(@target))
|
24
|
+
draw_vector(speed_vec * 2, :origin => @pos) # スピードベクトルの可視化
|
25
|
+
|
26
|
+
if (@target - @pos).length < 16
|
27
|
+
Stylet.context.objects.delete(self)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class App < Stylet::Base
|
33
|
+
include Helper::CursorWithObjectCollection
|
34
|
+
include Helper::MovablePoint
|
35
|
+
|
36
|
+
setup do
|
37
|
+
self.title = "俊足ミサイル"
|
38
|
+
@points = []
|
39
|
+
@points << srect.center + vec2[+srect.w / 4, 0]
|
40
|
+
end
|
41
|
+
|
42
|
+
update do
|
43
|
+
update_movable_points(@points)
|
44
|
+
@points.each_with_index {|e, i|vputs("p#{i}", :vector => e)}
|
45
|
+
if frame_counter.modulo(10).zero?
|
46
|
+
@objects << Bullet.new(:pos => @points[0], :target => cursor.point)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
run
|
51
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
#
|
2
|
+
# 正規乱数と標準偏差の可視化
|
3
|
+
# https://www.google.co.jp/search?q=%E6%AD%A3%E8%A6%8F%E5%88%86%E5%B8%83&lr=lang_ja&hl=ja&tbs=lr:lang_1ja&tbm=isch&tbo=u&source=univ&sa=X&ei=enmsUsPLNI_qlAWZooC4Bw&ved=0CDoQsAQ&biw=1280&bih=638
|
4
|
+
#
|
5
|
+
require_relative "helper"
|
6
|
+
|
7
|
+
class App < Stylet::Base
|
8
|
+
include Helper::Cursor
|
9
|
+
|
10
|
+
setup do
|
11
|
+
@sd = 20 # 標準偏差初期値(68%の値がある)
|
12
|
+
end
|
13
|
+
|
14
|
+
update do
|
15
|
+
@sd += button.btA.repeat_0or1 - button.btB.repeat_0or1
|
16
|
+
list = 100.times.collect { rnorm(mean: 80, sd: @sd) } # このプログラムだと平均(mean)の値は重要じゃない
|
17
|
+
|
18
|
+
# 配列から標準偏差を求める
|
19
|
+
avg = list.inject(&:+).to_f / list.size
|
20
|
+
_sd = Math.sqrt(list.collect { |v| (v - avg)**2 }.reduce(:+).to_f / list.size)
|
21
|
+
|
22
|
+
k = 24 # 瓶の数(片方)
|
23
|
+
h = 4 # 瓶の幅
|
24
|
+
r = (-k..k).collect do |i|
|
25
|
+
range = (avg + i * h)...(avg + i.next * h)
|
26
|
+
count = list.count {|v|range.include?(v)}
|
27
|
+
bar(i, count)
|
28
|
+
end
|
29
|
+
|
30
|
+
# 実際の標準偏差の位置確認
|
31
|
+
pos = _sd / h
|
32
|
+
bar(pos, -1, :orange)
|
33
|
+
bar(-pos, -1, :orange)
|
34
|
+
|
35
|
+
vputs "指定の標準偏差: #{@sd}"
|
36
|
+
vputs "実際の標準偏差: #{_sd}"
|
37
|
+
|
38
|
+
# ±標準偏差の中にデータが約68%、2倍な95%、3倍なら0.997含まれるのは本当なのか?
|
39
|
+
vputs ["±1*σ割合(0.6826): ", (list.count {|v|(-(_sd * 1)..(_sd * 1)).include?(v - avg)}.to_f / list.size)].join
|
40
|
+
vputs ["±2*σ割合(0.9544): ", (list.count {|v|(-(_sd * 2)..(_sd * 2)).include?(v - avg)}.to_f / list.size)].join
|
41
|
+
vputs ["±3*σ割合(0.9974): ", (list.count {|v|(-(_sd * 3)..(_sd * 3)).include?(v - avg)}.to_f / list.size)].join
|
42
|
+
end
|
43
|
+
|
44
|
+
def bar(pos, length, color = :white)
|
45
|
+
p0 = srect.center + vec2[pos * 4, srect.h / 4]
|
46
|
+
p1 = p0 + vec2[0, -length * 8]
|
47
|
+
draw_line(p0, p1, :color => color)
|
48
|
+
end
|
49
|
+
|
50
|
+
def rnorm(mean: 0.0, sd: 1.0)
|
51
|
+
# こっちは一様乱数
|
52
|
+
# return rand((mean - sd*2) .. (mean + sd*2))
|
53
|
+
|
54
|
+
# こっちでもだいたい同じになる(ただしrandの呼び出しが2倍)
|
55
|
+
# return mean + sd * Math.sqrt(-2 * Math.log(rand)) * Math.sin(2 * Math::PI * rand)
|
56
|
+
|
57
|
+
if @next_value
|
58
|
+
v = @next_value
|
59
|
+
@next_value = nil
|
60
|
+
else
|
61
|
+
a = Math.sqrt(-2.0 * Math.log(rand))
|
62
|
+
b = 2 * Math::PI * rand
|
63
|
+
z1 = a * Math.cos(b)
|
64
|
+
z2 = a * Math.sin(b)
|
65
|
+
@next_value = z2
|
66
|
+
v = z1
|
67
|
+
end
|
68
|
+
mean + sd * v
|
69
|
+
end
|
70
|
+
|
71
|
+
run
|
72
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#
|
2
|
+
# sin/cosを一切使わずに回転する方法(角度0から)
|
3
|
+
#
|
4
|
+
require_relative "helper"
|
5
|
+
|
6
|
+
class App < Stylet::Base
|
7
|
+
setup do
|
8
|
+
@speed = (2 * Math::PI / (60 * 8)) # 角速度 (一周2πを120分割 = 8秒で一周想定)
|
9
|
+
@r = srect.height / 4 # 半径
|
10
|
+
@p = vec2[@r, 0] # 座標 (0度の状態では)
|
11
|
+
@v = vec2[0, @r * @speed] # 速度 (右端にいるのでy方向のベクトルだけが生きている)
|
12
|
+
end
|
13
|
+
|
14
|
+
update do
|
15
|
+
a = @p * -@speed**2 # 加速度 = 現在の座標 * -角速度^2
|
16
|
+
@v += a # 速度 += 加速度
|
17
|
+
@p += @v # 座標 += 速度
|
18
|
+
draw_vector(@p)
|
19
|
+
vputs "@v: #{@v}"
|
20
|
+
end
|
21
|
+
|
22
|
+
run
|
23
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
# sin/cosを一切使わずに回転【任意の角度から】
|
3
|
+
#
|
4
|
+
require_relative "helper"
|
5
|
+
|
6
|
+
class App < Stylet::Base
|
7
|
+
setup do
|
8
|
+
@speed = (2 * Math::PI / (60 * 8)) # 角速度 (一周2πを120分割 = 8秒で一周想定)
|
9
|
+
|
10
|
+
@r = 100 # 半径
|
11
|
+
@p = vec2.angle_at(Stylet::Magic.r45) * @r # 座標(45度=右下)
|
12
|
+
|
13
|
+
# 速度の求め方
|
14
|
+
# vx = -rω * sin(ωt)
|
15
|
+
# vy = rω * cos(ωt)
|
16
|
+
t = Math.atan2(@p.y, @p.x) / @speed # tフレーム目
|
17
|
+
@v = vec2[
|
18
|
+
-@r * @speed * Math.sin(@speed * t),
|
19
|
+
+@r * @speed * Math.cos(@speed * t),
|
20
|
+
]
|
21
|
+
# ※ 0, 90, 180, 270 度から始まるなら sin cos は不要になる
|
22
|
+
end
|
23
|
+
|
24
|
+
update do
|
25
|
+
a = @p * -@speed**2 # 加速度 = 現在の座標 * -角速度^2
|
26
|
+
@v += a # 速度 += 加速度
|
27
|
+
@p += @v # 座標 += 速度
|
28
|
+
draw_vector(@p)
|
29
|
+
vputs "@v: #{@v}"
|
30
|
+
end
|
31
|
+
|
32
|
+
run
|
33
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# 左右が繋がっている例
|
2
|
+
require_relative "helper"
|
3
|
+
|
4
|
+
Stylet::Palette[:background] = [107, 140, 255]
|
5
|
+
Stylet::Palette[:font] = [0, 0, 0]
|
6
|
+
|
7
|
+
class App < Stylet::Base
|
8
|
+
include Helper::CursorWithObjectCollection
|
9
|
+
|
10
|
+
setup do
|
11
|
+
@cursor.display = false
|
12
|
+
|
13
|
+
s = SDL::Surface.load("assets/mario.png")
|
14
|
+
s.set_color_key(SDL::SRCCOLORKEY, 0)
|
15
|
+
@image = s.display_format
|
16
|
+
@pos = vec2[srect.min_x, srect.center.y]
|
17
|
+
end
|
18
|
+
|
19
|
+
update do
|
20
|
+
@pos.x += -axis.left.counter + axis.right.counter
|
21
|
+
@pos.x = @pos.x.modulo(srect.w)
|
22
|
+
v = @pos + vec2[-@image.w / 2, -@image.h / 2]
|
23
|
+
screen.put(@image, *v)
|
24
|
+
screen.put(@image, *(v - vec2[srect.w, 0]))
|
25
|
+
screen.put(@image, *(v + vec2[srect.w, 0]))
|
26
|
+
end
|
27
|
+
|
28
|
+
run
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative "helper"
|
2
|
+
|
3
|
+
class App < Stylet::Base
|
4
|
+
include Helper::Cursor
|
5
|
+
|
6
|
+
setup do
|
7
|
+
Stylet::SE.load("assets/nc26792_coin.ogg")
|
8
|
+
end
|
9
|
+
|
10
|
+
update do
|
11
|
+
if button.btA.trigger? || frame_counter == 0
|
12
|
+
Stylet::SE[:nc26792_coin].play
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
run
|
17
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require_relative "helper"
|
2
|
+
|
3
|
+
Stylet::Palette[:background] = [107, 140, 255]
|
4
|
+
Stylet::Palette[:font] = [0, 0, 0]
|
5
|
+
|
6
|
+
class App < Stylet::Base
|
7
|
+
include Helper::Cursor
|
8
|
+
|
9
|
+
setup do
|
10
|
+
@cursor.display = false
|
11
|
+
|
12
|
+
@map_tip = SDL::Surface.load("../assets/images/dlmap/castle2.png")
|
13
|
+
@map_tip.set_color_key(SDL::SRCCOLORKEY, 0)
|
14
|
+
@map_tip = @map_tip.display_format
|
15
|
+
@tip = vec2[16, 16]
|
16
|
+
|
17
|
+
@object_info = {
|
18
|
+
"草" => {:src => [7, 0]},
|
19
|
+
"・" => {:src => [8, 0]},
|
20
|
+
"赤" => {:src => [28, 1], :base => "草"},
|
21
|
+
"青" => {:src => [28, 2], :base => "草"},
|
22
|
+
:player => {:src => [19, 9]},
|
23
|
+
}
|
24
|
+
|
25
|
+
@field = [
|
26
|
+
"草草草草草草草草草草草草草草草",
|
27
|
+
"草・・・・・・・・・・・・・草",
|
28
|
+
"草・赤・青・赤・青・赤・青・草",
|
29
|
+
"草・・・・・・・・・・・・・草",
|
30
|
+
"草・赤・青・赤・青・赤・青・草",
|
31
|
+
"草・・・・・・・・・・・・・草",
|
32
|
+
"草・赤・青・赤・青・赤・青・草",
|
33
|
+
"草・・・・・・・・・・・・・草",
|
34
|
+
"草・赤・青・赤・青・赤・青・草",
|
35
|
+
"草・・・・・・・・・・・・・草",
|
36
|
+
"草草草草草草草草草草草草草草草",
|
37
|
+
]
|
38
|
+
|
39
|
+
@map_rect = vec2[@field.first.chars.size, @field.size]
|
40
|
+
|
41
|
+
@player = vec2[1, 1]
|
42
|
+
end
|
43
|
+
|
44
|
+
update do
|
45
|
+
@player.x += -Stylet.context.axis.left.repeat_0or1 + Stylet.context.axis.right.repeat_0or1
|
46
|
+
@player.y += -Stylet.context.axis.up.repeat_0or1 + Stylet.context.axis.down.repeat_0or1
|
47
|
+
@player.x = Stylet::Chore.clamp(@player.x, (0...@map_rect.x))
|
48
|
+
@player.y = Stylet::Chore.clamp(@player.y, (0...@map_rect.y))
|
49
|
+
|
50
|
+
@field.each_with_index do |row, y|
|
51
|
+
row.chars.each_with_index do |key, x|
|
52
|
+
draw_tip(key, x, y)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
draw_tip(:player, *@player)
|
57
|
+
|
58
|
+
vputs "pos: #{@pos}"
|
59
|
+
end
|
60
|
+
|
61
|
+
def draw_tip(key, x, y)
|
62
|
+
info = @object_info[key]
|
63
|
+
src = vec2[*info[:src]]
|
64
|
+
if info[:base]
|
65
|
+
draw_tip(info[:base], x, y)
|
66
|
+
end
|
67
|
+
SDL.blit_surface(@map_tip, @tip.x * src.x, @tip.y * src.y, @tip.x, @tip.y, screen, x * @tip.x, y * @tip.y)
|
68
|
+
end
|
69
|
+
|
70
|
+
run
|
71
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require_relative "helper"
|
2
|
+
|
3
|
+
class App < Stylet::Base
|
4
|
+
include Helper::Cursor
|
5
|
+
|
6
|
+
setup do
|
7
|
+
@map_tip = SDL::Surface.load("../assets/images/dlmap/castle2.png")
|
8
|
+
@map_tip.set_color_key(SDL::SRCCOLORKEY, 0)
|
9
|
+
@map_tip = @map_tip.display_format
|
10
|
+
@tip = vec2[16, 16]
|
11
|
+
|
12
|
+
@object_info = {
|
13
|
+
"草" => {:src => [7, 0]},
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
update do
|
18
|
+
draw_tip("草", *srect.center)
|
19
|
+
end
|
20
|
+
|
21
|
+
def draw_tip(key, x, y)
|
22
|
+
info = @object_info[key]
|
23
|
+
src = vec2[*info[:src]]
|
24
|
+
SDL.blit_surface(@map_tip, @tip.x * src.x, @tip.y * src.y, @tip.x, @tip.y, screen, x, y)
|
25
|
+
end
|
26
|
+
|
27
|
+
run
|
28
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require_relative "helper"
|
2
|
+
require "stylet/contrib/sprity" # ../lib/stylet/contrib/sprity.rb
|
3
|
+
|
4
|
+
Stylet::Palette[:background] = [107, 140, 255]
|
5
|
+
Stylet::Palette[:font] = [0, 0, 0]
|
6
|
+
|
7
|
+
if true
|
8
|
+
Stylet::Sprity.surface_destroy_all
|
9
|
+
|
10
|
+
Stylet::Sprity::ImageFile.memory_record_reset [
|
11
|
+
{:key => :castle2, :filename => "../assets/images/dlmap/castle2.png", :mask => true},
|
12
|
+
]
|
13
|
+
|
14
|
+
Stylet::Sprity::Sprite.memory_record_reset [
|
15
|
+
{:key => :kusa, :filename => :castle2, :cliping => [16 * 7, 16 * 0, 16, 16]},
|
16
|
+
{:key => :kusa_l, :filename => :castle2, :cliping => [16 * 7, 16 * 0, 16, 16], :transform => {:wh => [32, 32], :mask => true}},
|
17
|
+
{:key => :hana, :filename => :castle2, :cliping => [16 * 28, 16 * 1, 16, 16], :transform => {:wh => [32, 32], :angle => 45, :mask => true}},
|
18
|
+
{:key => :mario, :filename => "assets/mario.png", :mask => true},
|
19
|
+
{:key => :mario2, :filename => "assets/mario.png", :transform => {:wh => [64, 64], :angle => 45, :mask => true}},
|
20
|
+
{:key => :mario3, :filename => "assets/mario.png", :transform => {:mix => {:rgb => [0, 0, 255], :alpha => 128}}},
|
21
|
+
]
|
22
|
+
end
|
23
|
+
|
24
|
+
class App < Stylet::Base
|
25
|
+
include Helper::Cursor
|
26
|
+
|
27
|
+
update do
|
28
|
+
draw_texture(:mario2, cursor.point)
|
29
|
+
|
30
|
+
if true
|
31
|
+
xy = srect.center / 4
|
32
|
+
Stylet::Sprity::Sprite.each do |info|
|
33
|
+
draw_texture(info.key, xy)
|
34
|
+
xy.y += info.swh.y
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def draw_texture(key, xy)
|
40
|
+
sprite = Stylet::Sprity::Sprite[key]
|
41
|
+
screen.put(sprite.surface, *xy)
|
42
|
+
draw_rect4(*xy, *sprite.swh)
|
43
|
+
vputs "#{key}: #{sprite.swh.to_a}", :vector => xy + [sprite.swh.x, 0]
|
44
|
+
end
|
45
|
+
|
46
|
+
run
|
47
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Stylet::Base 側のループで描画されるのではなくPlayer側のタイミングで描画する
|
2
|
+
require_relative "helper"
|
3
|
+
|
4
|
+
class Player
|
5
|
+
include Observable
|
6
|
+
def render
|
7
|
+
changed
|
8
|
+
notify_observers(self)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class Window < Stylet::Base
|
13
|
+
def initialize
|
14
|
+
super
|
15
|
+
run_initializers
|
16
|
+
end
|
17
|
+
|
18
|
+
def scene_update(player) # Stylet::Base#update はすでにあるため別メソッドにする必要がある
|
19
|
+
next_frame
|
20
|
+
vputs player
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
player = Player.new
|
25
|
+
player.add_observer(Window.instance, :scene_update)
|
26
|
+
loop do
|
27
|
+
player.render
|
28
|
+
end
|