smalruby-editor 0.0.12-x86-mingw32 → 0.1.0-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of smalruby-editor might be problematic. Click here for more details.

Files changed (179) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -0
  3. data/.travis.yml +2 -0
  4. data/LEGAL +32 -0
  5. data/Rakefile +1 -1
  6. data/app/assets/demos/default.xml +126 -0
  7. data/app/assets/demos/rgb_led_anode.xml +83 -0
  8. data/app/assets/images/favicon.ico +0 -0
  9. data/app/assets/javascripts/application.js +18 -1
  10. data/app/assets/javascripts/block_mode.js.coffee.erb +10 -0
  11. data/app/assets/javascripts/blocks/blockly.js.coffee.erb +34 -0
  12. data/app/assets/javascripts/blocks/character.js.coffee.erb +76 -0
  13. data/app/assets/javascripts/blocks/control.js.coffee.erb +180 -0
  14. data/app/assets/javascripts/blocks/data.js.coffee.erb +6 -0
  15. data/app/assets/javascripts/blocks/etc.js.coffee.erb +6 -0
  16. data/app/assets/javascripts/blocks/events.js.coffee.erb +82 -0
  17. data/app/assets/javascripts/blocks/hardware.js.coffee.erb +313 -0
  18. data/app/assets/javascripts/blocks/looks.js.coffee.erb +163 -0
  19. data/app/assets/javascripts/blocks/motion.js.coffee.erb +297 -0
  20. data/app/assets/javascripts/blocks/operators.js.coffee.erb +279 -0
  21. data/app/assets/javascripts/blocks/pen.js.coffee.erb +6 -0
  22. data/app/assets/javascripts/blocks/ruby.js.coffee.erb +74 -0
  23. data/app/assets/javascripts/blocks/sensing.js.coffee.erb +241 -0
  24. data/app/assets/javascripts/blocks/sound.js.coffee.erb +75 -0
  25. data/{public/favicon.ico → app/assets/javascripts/collections/.keep} +0 -0
  26. data/app/assets/javascripts/collections/character_set.js.coffee +12 -0
  27. data/app/assets/javascripts/generators/ruby.js.coffee.erb +188 -0
  28. data/app/assets/javascripts/models/.keep +0 -0
  29. data/app/assets/javascripts/models/character.js.coffee +66 -0
  30. data/app/assets/javascripts/models/scene.js.coffee +5 -0
  31. data/app/assets/javascripts/models/source_code.js.coffee +64 -0
  32. data/app/assets/javascripts/routers/.keep +0 -0
  33. data/app/assets/javascripts/ruby_mode.js.coffee.erb +12 -0
  34. data/app/assets/javascripts/smalruby.js.coffee +97 -0
  35. data/app/assets/javascripts/views/.keep +0 -0
  36. data/app/assets/javascripts/views/character_modal_view.js.coffee +148 -0
  37. data/app/assets/javascripts/views/character_selector_view.js.coffee +109 -0
  38. data/app/assets/javascripts/views/main_menu_view.js.coffee +264 -0
  39. data/app/assets/stylesheets/editor.css.scss +318 -2
  40. data/app/assets/stylesheets/toolbox.css.scss.erb +62 -0
  41. data/app/assets/templates/.keep +0 -0
  42. data/app/controllers/application_controller.rb +19 -0
  43. data/app/controllers/editor_controller.rb +4 -0
  44. data/app/controllers/source_codes_controller.rb +8 -2
  45. data/app/helpers/application_helper.rb +1 -0
  46. data/app/helpers/editor_helper.rb +46 -0
  47. data/app/models/source_code.rb +49 -6
  48. data/app/views/editor/_block_tab.html.haml +53 -0
  49. data/app/views/editor/_character_modal.html.haml +53 -0
  50. data/app/views/editor/_toolbox.html.haml +384 -0
  51. data/app/views/editor/demo.html.erb +16 -0
  52. data/app/views/editor/index.html.haml +60 -0
  53. data/app/views/layouts/application.html.erb +7 -0
  54. data/config/application.rb +1 -0
  55. data/config/initializers/teaspoon.rb +79 -0
  56. data/config/routes.rb +4 -0
  57. data/lib/smalruby_editor/version.rb +1 -1
  58. data/lib/tasks/gem.rake +7 -4
  59. data/lib/tasks/release.rake +43 -0
  60. data/public/apple-touch-icon.png +0 -0
  61. data/public/blockly/media/1x1.gif +0 -0
  62. data/public/blockly/media/click.mp3 +0 -0
  63. data/public/blockly/media/click.ogg +0 -0
  64. data/public/blockly/media/click.wav +0 -0
  65. data/public/blockly/media/delete.mp3 +0 -0
  66. data/public/blockly/media/delete.ogg +0 -0
  67. data/public/blockly/media/delete.wav +0 -0
  68. data/public/blockly/media/handclosed.cur +0 -0
  69. data/public/blockly/media/handopen.cur +0 -0
  70. data/public/blockly/media/quote0.png +0 -0
  71. data/public/blockly/media/quote1.png +0 -0
  72. data/public/blockly/media/trashbody.png +0 -0
  73. data/public/blockly/media/trashlid.png +0 -0
  74. data/public/blockly/media/tree.png +0 -0
  75. data/public/browserconfig.xml +1 -0
  76. data/public/large.png +0 -0
  77. data/public/smalruby/assets/ball1.png +0 -0
  78. data/public/smalruby/assets/ball2.png +0 -0
  79. data/public/smalruby/assets/ball3.png +0 -0
  80. data/public/smalruby/assets/ball4.png +0 -0
  81. data/public/smalruby/assets/ball5.png +0 -0
  82. data/public/smalruby/assets/ball6.png +0 -0
  83. data/public/smalruby/assets/car1.png +0 -0
  84. data/public/smalruby/assets/car2.png +0 -0
  85. data/public/smalruby/assets/car3.png +0 -0
  86. data/public/smalruby/assets/car4.png +0 -0
  87. data/public/smalruby/assets/cat1.png +0 -0
  88. data/public/smalruby/assets/cat2.png +0 -0
  89. data/public/smalruby/assets/cat3.png +0 -0
  90. data/public/smalruby/assets/frog1.png +0 -0
  91. data/public/smalruby/assets/piano_do.wav +0 -0
  92. data/public/smalruby/assets/piano_do_2.wav +0 -0
  93. data/public/smalruby/assets/piano_fa.wav +0 -0
  94. data/public/smalruby/assets/piano_mi.wav +0 -0
  95. data/public/smalruby/assets/piano_ra.wav +0 -0
  96. data/public/smalruby/assets/piano_re.wav +0 -0
  97. data/public/smalruby/assets/piano_si.wav +0 -0
  98. data/public/smalruby/assets/piano_so.wav +0 -0
  99. data/public/square.png +0 -0
  100. data/public/tiny.png +0 -0
  101. data/public/wide.png +0 -0
  102. data/smalruby-editor.gemspec +4 -0
  103. data/spec/acceptance/block_mode/blocks/character/new.feature +136 -0
  104. data/spec/acceptance/block_mode/blocks/control/await.feature +20 -0
  105. data/spec/acceptance/block_mode/blocks/control/await_until.feature +39 -0
  106. data/spec/acceptance/block_mode/blocks/control/break.feature +20 -0
  107. data/spec/acceptance/block_mode/blocks/control/if.feature +68 -0
  108. data/spec/acceptance/block_mode/blocks/control/if_else.feature +78 -0
  109. data/spec/acceptance/block_mode/blocks/control/loop.feature +45 -0
  110. data/spec/acceptance/block_mode/blocks/control/next.feature +20 -0
  111. data/spec/acceptance/block_mode/blocks/control/redo.feature +20 -0
  112. data/spec/acceptance/block_mode/blocks/control/sleep.feature +41 -0
  113. data/spec/acceptance/block_mode/blocks/control/times.feature +72 -0
  114. data/spec/acceptance/block_mode/blocks/control/until.feature +68 -0
  115. data/spec/acceptance/block_mode/blocks/events/on_click.feature +75 -0
  116. data/spec/acceptance/block_mode/blocks/events/on_hit.feature +83 -0
  117. data/spec/acceptance/block_mode/blocks/events/on_key_push_or_down.feature +171 -0
  118. data/spec/acceptance/block_mode/blocks/events/on_start.feature +75 -0
  119. data/spec/acceptance/block_mode/blocks/hardware/init_hardware.feature +44 -0
  120. data/spec/acceptance/block_mode/blocks/hardware/led_off.feature +75 -0
  121. data/spec/acceptance/block_mode/blocks/hardware/led_on.feature +75 -0
  122. data/spec/acceptance/block_mode/blocks/hardware/on_sensor_change.feature +81 -0
  123. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature +81 -0
  124. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature +87 -0
  125. data/spec/acceptance/block_mode/blocks/hardware/sensor_value.feature +100 -0
  126. data/spec/acceptance/block_mode/blocks/looks/hide.feature +69 -0
  127. data/spec/acceptance/block_mode/blocks/looks/say.feature +106 -0
  128. data/spec/acceptance/block_mode/blocks/looks/show.feature +69 -0
  129. data/spec/acceptance/block_mode/blocks/looks/vanish.feature +69 -0
  130. data/spec/acceptance/block_mode/blocks/motion/change_x_by.feature +81 -0
  131. data/spec/acceptance/block_mode/blocks/motion/change_y_by.feature +81 -0
  132. data/spec/acceptance/block_mode/blocks/motion/move.feature +81 -0
  133. data/spec/acceptance/block_mode/blocks/motion/reach_wall.feature +98 -0
  134. data/spec/acceptance/block_mode/blocks/motion/rotate_left.feature +81 -0
  135. data/spec/acceptance/block_mode/blocks/motion/rotate_right.feature +81 -0
  136. data/spec/acceptance/block_mode/blocks/motion/self_angle.feature +92 -0
  137. data/spec/acceptance/block_mode/blocks/motion/self_x.feature +92 -0
  138. data/spec/acceptance/block_mode/blocks/motion/self_y.feature +92 -0
  139. data/spec/acceptance/block_mode/blocks/motion/set_angle.feature +81 -0
  140. data/spec/acceptance/block_mode/blocks/motion/set_x.feature +81 -0
  141. data/spec/acceptance/block_mode/blocks/motion/set_x_y.feature +95 -0
  142. data/spec/acceptance/block_mode/blocks/motion/set_y.feature +81 -0
  143. data/spec/acceptance/block_mode/blocks/motion/turn.feature +69 -0
  144. data/spec/acceptance/block_mode/blocks/motion/turn_if_reach_wall.feature +69 -0
  145. data/spec/acceptance/block_mode/blocks/sensing/character_property.feature +114 -0
  146. data/spec/acceptance/block_mode/blocks/sensing/hit.feature +110 -0
  147. data/spec/acceptance/block_mode/blocks/sensing/input_key_push_or_down.feature +91 -0
  148. data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_x.feature +39 -0
  149. data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_y.feature +39 -0
  150. data/spec/acceptance/block_mode/blocks/sensing/input_mouse_push_or_down.feature +91 -0
  151. data/spec/acceptance/block_mode/blocks/sensing/time_now.feature +43 -0
  152. data/spec/acceptance/block_mode/blocks/sound/play.feature +81 -0
  153. data/spec/acceptance/block_mode/demo.feature +49 -0
  154. data/spec/acceptance/{text_editor → ruby_mode}/base.feature +11 -2
  155. data/spec/acceptance/{standalone → ruby_mode}/check.feature +8 -9
  156. data/spec/acceptance/ruby_mode/download.feature +33 -0
  157. data/spec/acceptance/{text_editor → ruby_mode}/load.feature +13 -13
  158. data/spec/acceptance/standalone/run.feature +17 -0
  159. data/spec/acceptance/standalone/save.feature +6 -6
  160. data/spec/helpers/editor_helper_spec.rb +110 -10
  161. data/spec/javascripts/collections/character_set_spec.coffee +41 -0
  162. data/spec/javascripts/models/character_spec.coffee +146 -0
  163. data/spec/javascripts/models/scene_spec.coffee +15 -0
  164. data/spec/javascripts/spec_helper.js +29 -0
  165. data/spec/spec_helper.rb +3 -8
  166. data/spec/steps/block_mode_steps.rb +37 -0
  167. data/spec/steps/global_variable.rb +30 -6
  168. data/spec/steps/text_editor_steps.rb +20 -2
  169. data/spec/teaspoon_env.rb +46 -0
  170. data/vendor/assets/javascripts/blockly/blockly_compressed.js +992 -0
  171. data/vendor/assets/javascripts/blockly/blocks_compressed.js +129 -0
  172. data/vendor/assets/javascripts/blockly/msg/js/ja.js +377 -0
  173. data/vendor/assets/javascripts/jquery.blockUI.js +619 -0
  174. metadata +290 -23
  175. data/app/assets/javascripts/editor.js.coffee.erb +0 -137
  176. data/app/views/editor/index.html.erb +0 -22
  177. data/spec/acceptance/text_editor/check.feature +0 -29
  178. data/spec/acceptance/text_editor/save.feature +0 -34
  179. data/spec/support/assets.rb +0 -18
@@ -0,0 +1,75 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: events_on_click - 「キャラクターがクリックされたとき」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "events_on_click", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは "" であること
15
+
16
+ シナリオ: キャラクターとブロックを配置する
17
+ 前提 "ブロック" タブを表示する
18
+ かつ 次のキャラクターを追加する:
19
+ | name | costumes | x | y | angle |
20
+ | car1 | car1.png | 0 | 0 | 0 |
21
+
22
+ もし 次のブロックを配置する:
23
+ """
24
+ %block{:type => "character_new", :x => "21", :y => "15"}
25
+ %field{:name => "NAME"}<
26
+ car1
27
+ %statement{:name => "DO"}
28
+ %block{:type => "events_on_click", :x => "0", :y => "0"}
29
+ """
30
+ かつ ブロックからソースコードを生成する
31
+
32
+ ならば テキストエディタのプログラムは以下であること:
33
+ """
34
+ require "smalruby"
35
+
36
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
37
+
38
+ car1.on(:click) do
39
+
40
+ end
41
+
42
+ """
43
+
44
+ シナリオ: キャラクターとイベントとブロックを配置する
45
+ 前提 "ブロック" タブを表示する
46
+ かつ 次のキャラクターを追加する:
47
+ | name | costumes | x | y | angle |
48
+ | car1 | car1.png | 0 | 0 | 0 |
49
+
50
+ もし 次のブロックを配置する:
51
+ """
52
+ %block{:type => "character_new", :x => "21", :y => "15"}
53
+ %field{:name => "NAME"}<
54
+ car1
55
+ %statement{:name => "DO"}
56
+ %block{:type => "events_on_start"}
57
+ %statement{:name => "DO"}
58
+ %block{:type => "events_on_click"}
59
+ """
60
+ かつ ブロックからソースコードを生成する
61
+
62
+ ならば テキストエディタのプログラムは以下であること:
63
+ """
64
+ require "smalruby"
65
+
66
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
67
+
68
+ car1.on(:start) do
69
+
70
+ on(:click) do
71
+
72
+ end
73
+ end
74
+
75
+ """
@@ -0,0 +1,83 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: events_on_hit - 「[▼キャラクター]にぶつかったとき」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "events_on_hit", :x => "0", :y => "0"}
11
+ %field{:name => "CHAR"}<
12
+ car2
13
+ """
14
+ かつ ブロックからソースコードを生成する
15
+
16
+ ならば テキストエディタのプログラムは "" であること
17
+
18
+ シナリオ: キャラクターとブロックを配置する
19
+ 前提 "ブロック" タブを表示する
20
+ かつ 次のキャラクターを追加する:
21
+ | name | costumes | x | y | angle |
22
+ | car1 | car1.png | 0 | 0 | 0 |
23
+ | car2 | car2.png | 0 | 0 | 0 |
24
+
25
+ もし 次のブロックを配置する:
26
+ """
27
+ %block{:type => "character_new", :x => "21", :y => "15"}
28
+ %field{:name => "NAME"}<
29
+ car1
30
+ %statement{:name => "DO"}
31
+ %block{:type => "events_on_hit", :x => "0", :y => "0"}
32
+ %field{:name => "CHAR"}<
33
+ car2
34
+ """
35
+ かつ ブロックからソースコードを生成する
36
+
37
+ ならば テキストエディタのプログラムは以下であること:
38
+ """
39
+ require "smalruby"
40
+
41
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
42
+
43
+ car1.on(:hit, car2) do
44
+
45
+ end
46
+
47
+ """
48
+
49
+ シナリオ: キャラクターとイベントとブロックを配置する
50
+ 前提 "ブロック" タブを表示する
51
+ かつ 次のキャラクターを追加する:
52
+ | name | costumes | x | y | angle |
53
+ | car1 | car1.png | 0 | 0 | 0 |
54
+ | car2 | car2.png | 0 | 0 | 0 |
55
+
56
+ もし 次のブロックを配置する:
57
+ """
58
+ %block{:type => "character_new", :x => "21", :y => "15"}
59
+ %field{:name => "NAME"}<
60
+ car1
61
+ %statement{:name => "DO"}
62
+ %block{:type => "events_on_start"}
63
+ %statement{:name => "DO"}
64
+ %block{:type => "events_on_hit"}
65
+ %field{:name => "CHAR"}<
66
+ car2
67
+ """
68
+ かつ ブロックからソースコードを生成する
69
+
70
+ ならば テキストエディタのプログラムは以下であること:
71
+ """
72
+ require "smalruby"
73
+
74
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
75
+
76
+ car1.on(:start) do
77
+
78
+ on(:hit, car2) do
79
+
80
+ end
81
+ end
82
+
83
+ """
@@ -0,0 +1,171 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: events_on_key_push_or_down - 「キーボードの[▼キー]が[▼押された]とき」ブロック
5
+ シナリオ: [▼押された]ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "events_on_key_push_or_down", :x => "0", :y => "0"}
11
+ %field{:name => "KEY"}<
12
+ K_SPACE
13
+ %field{:name => "POD"}<
14
+ push
15
+ """
16
+ かつ ブロックからソースコードを生成する
17
+
18
+ ならば テキストエディタのプログラムは "" であること
19
+
20
+ シナリオ: キャラクターと[▼押された]ブロックを配置する
21
+ 前提 "ブロック" タブを表示する
22
+ かつ 次のキャラクターを追加する:
23
+ | name | costumes | x | y | angle |
24
+ | car1 | car1.png | 0 | 0 | 0 |
25
+
26
+ もし 次のブロックを配置する:
27
+ """
28
+ %block{:type => "character_new", :x => "21", :y => "15"}
29
+ %field{:name => "NAME"}<
30
+ car1
31
+ %statement{:name => "DO"}
32
+ %block{:type => "events_on_key_push_or_down", :x => "0", :y => "0"}
33
+ %field{:name => "KEY"}<
34
+ K_SPACE
35
+ %field{:name => "POD"}<
36
+ push
37
+ """
38
+ かつ ブロックからソースコードを生成する
39
+
40
+ ならば テキストエディタのプログラムは以下であること:
41
+ """
42
+ require "smalruby"
43
+
44
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
45
+
46
+ car1.on(:key_push, K_SPACE) do
47
+
48
+ end
49
+
50
+ """
51
+
52
+ シナリオ: キャラクターとイベントと[▼押された]ブロックを配置する
53
+ 前提 "ブロック" タブを表示する
54
+ かつ 次のキャラクターを追加する:
55
+ | name | costumes | x | y | angle |
56
+ | car1 | car1.png | 0 | 0 | 0 |
57
+
58
+ もし 次のブロックを配置する:
59
+ """
60
+ %block{:type => "character_new", :x => "21", :y => "15"}
61
+ %field{:name => "NAME"}<
62
+ car1
63
+ %statement{:name => "DO"}
64
+ %block{:type => "events_on_start"}
65
+ %statement{:name => "DO"}
66
+ %block{:type => "events_on_key_push_or_down", :x => "0", :y => "0"}
67
+ %field{:name => "KEY"}<
68
+ K_SPACE
69
+ %field{:name => "POD"}<
70
+ push
71
+ """
72
+ かつ ブロックからソースコードを生成する
73
+
74
+ ならば テキストエディタのプログラムは以下であること:
75
+ """
76
+ require "smalruby"
77
+
78
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
79
+
80
+ car1.on(:start) do
81
+
82
+ on(:key_push, K_SPACE) do
83
+
84
+ end
85
+ end
86
+
87
+ """
88
+
89
+ シナリオ: [▼押され続けている]ブロックのみ配置する
90
+ 前提 "ブロック" タブを表示する
91
+
92
+ もし 次のブロックを配置する:
93
+ """
94
+ %block{:type => "events_on_key_push_or_down", :x => "0", :y => "0"}
95
+ %field{:name => "KEY"}<
96
+ K_SPACE
97
+ %field{:name => "POD"}<
98
+ down
99
+ """
100
+ かつ ブロックからソースコードを生成する
101
+
102
+ ならば テキストエディタのプログラムは "" であること
103
+
104
+ シナリオ: キャラクターと[▼押され続けている]ブロックを配置する
105
+ 前提 "ブロック" タブを表示する
106
+ かつ 次のキャラクターを追加する:
107
+ | name | costumes | x | y | angle |
108
+ | car1 | car1.png | 0 | 0 | 0 |
109
+
110
+ もし 次のブロックを配置する:
111
+ """
112
+ %block{:type => "character_new", :x => "21", :y => "15"}
113
+ %field{:name => "NAME"}<
114
+ car1
115
+ %statement{:name => "DO"}
116
+ %block{:type => "events_on_key_push_or_down", :x => "0", :y => "0"}
117
+ %field{:name => "KEY"}<
118
+ K_SPACE
119
+ %field{:name => "POD"}<
120
+ down
121
+ """
122
+ かつ ブロックからソースコードを生成する
123
+
124
+ ならば テキストエディタのプログラムは以下であること:
125
+ """
126
+ require "smalruby"
127
+
128
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
129
+
130
+ car1.on(:key_down, K_SPACE) do
131
+
132
+ end
133
+
134
+ """
135
+
136
+ シナリオ: キャラクターとイベントと[▼押され続けている]ブロックを配置する
137
+ 前提 "ブロック" タブを表示する
138
+ かつ 次のキャラクターを追加する:
139
+ | name | costumes | x | y | angle |
140
+ | car1 | car1.png | 0 | 0 | 0 |
141
+
142
+ もし 次のブロックを配置する:
143
+ """
144
+ %block{:type => "character_new", :x => "21", :y => "15"}
145
+ %field{:name => "NAME"}<
146
+ car1
147
+ %statement{:name => "DO"}
148
+ %block{:type => "events_on_start"}
149
+ %statement{:name => "DO"}
150
+ %block{:type => "events_on_key_push_or_down", :x => "0", :y => "0"}
151
+ %field{:name => "KEY"}<
152
+ K_SPACE
153
+ %field{:name => "POD"}<
154
+ down
155
+ """
156
+ かつ ブロックからソースコードを生成する
157
+
158
+ ならば テキストエディタのプログラムは以下であること:
159
+ """
160
+ require "smalruby"
161
+
162
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
163
+
164
+ car1.on(:start) do
165
+
166
+ on(:key_down, K_SPACE) do
167
+
168
+ end
169
+ end
170
+
171
+ """
@@ -0,0 +1,75 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: events_on_start - 「まずは」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "events_on_start", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは "" であること
15
+
16
+ シナリオ: キャラクターとブロックを配置する
17
+ 前提 "ブロック" タブを表示する
18
+ かつ 次のキャラクターを追加する:
19
+ | name | costumes | x | y | angle |
20
+ | car1 | car1.png | 0 | 0 | 0 |
21
+
22
+ もし 次のブロックを配置する:
23
+ """
24
+ %block{:type => "character_new", :x => "21", :y => "15"}
25
+ %field{:name => "NAME"}<
26
+ car1
27
+ %statement{:name => "DO"}
28
+ %block{:type => "events_on_start", :x => "0", :y => "0"}
29
+ """
30
+ かつ ブロックからソースコードを生成する
31
+
32
+ ならば テキストエディタのプログラムは以下であること:
33
+ """
34
+ require "smalruby"
35
+
36
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
37
+
38
+ car1.on(:start) do
39
+
40
+ end
41
+
42
+ """
43
+
44
+ シナリオ: キャラクターとイベントとブロックを配置する
45
+ 前提 "ブロック" タブを表示する
46
+ かつ 次のキャラクターを追加する:
47
+ | name | costumes | x | y | angle |
48
+ | car1 | car1.png | 0 | 0 | 0 |
49
+
50
+ もし 次のブロックを配置する:
51
+ """
52
+ %block{:type => "character_new", :x => "21", :y => "15"}
53
+ %field{:name => "NAME"}<
54
+ car1
55
+ %statement{:name => "DO"}
56
+ %block{:type => "events_on_start"}
57
+ %statement{:name => "DO"}
58
+ %block{:type => "events_on_start"}
59
+ """
60
+ かつ ブロックからソースコードを生成する
61
+
62
+ ならば テキストエディタのプログラムは以下であること:
63
+ """
64
+ require "smalruby"
65
+
66
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
67
+
68
+ car1.on(:start) do
69
+
70
+ on(:start) do
71
+
72
+ end
73
+ end
74
+
75
+ """
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: hardware_init_hardware - 「ハードウェアを準備する」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "hardware_init_hardware", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは以下であること:
15
+ """
16
+ require "smalruby"
17
+
18
+ init_hardware
19
+
20
+ """
21
+
22
+ シナリオ: ブロックとそれ以外のブロックを配置する
23
+ 前提 "ブロック" タブを表示する
24
+ かつ 次のキャラクターを追加する:
25
+ | name | costumes | x | y | angle |
26
+ | car1 | car1.png | 0 | 0 | 0 |
27
+
28
+ もし 次のブロックを配置する:
29
+ """
30
+ %block{:type => "hardware_init_hardware", :x => "0", :y => "0"}
31
+ %block{:type => "character_new", :x => "21", :y => "15"}
32
+ %field{:name => "NAME"}<
33
+ car1
34
+ """
35
+ かつ ブロックからソースコードを生成する
36
+
37
+ ならば テキストエディタのプログラムは以下であること:
38
+ """
39
+ require "smalruby"
40
+
41
+ init_hardware
42
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
43
+
44
+ """