smalruby-editor 0.1.24-x86-mingw32 → 0.2.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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/Guardfile +9 -0
  3. data/app/assets/javascripts/blocks/hardware.js.coffee.erb +147 -62
  4. data/app/assets/javascripts/blocks/sensing.js.coffee.erb +4 -0
  5. data/app/assets/javascripts/msg/en_us.js +34 -12
  6. data/app/assets/javascripts/msg/ja.js +35 -15
  7. data/app/helpers/editor_helper.rb +2 -1
  8. data/app/models/concerns/ruby_to_block/block/{hardware_button_down_or_up.rb → hardware_button_pressed_or_released.rb} +3 -3
  9. data/app/models/concerns/ruby_to_block/block/{hardware_led_on.rb → hardware_led_turn_off.rb} +2 -2
  10. data/app/models/concerns/ruby_to_block/block/{hardware_led_off.rb → hardware_led_turn_on.rb} +2 -2
  11. data/app/models/concerns/ruby_to_block/block/hardware_operation.rb +2 -0
  12. data/app/models/concerns/ruby_to_block/block/{hardware_rgb_led_on.rb → hardware_rgb_led_set_color.rb} +2 -2
  13. data/app/models/concerns/ruby_to_block/block/{hardware_rgb_led_off.rb → hardware_rgb_led_turn_off.rb} +2 -2
  14. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_action.rb +22 -0
  15. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_action_with_sec.rb +24 -0
  16. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_led_turn_on_or_off.rb +22 -0
  17. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_light_sensor_value.rb +28 -0
  18. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_touch_sensor_pressed_or_released.rb +29 -0
  19. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_commands.rb +3 -1
  20. data/app/views/editor/_toolbox.html.haml +30 -17
  21. data/app/views/layouts/application.html.erb +3 -1
  22. data/config/locales/en.yml +1 -0
  23. data/config/locales/ja.yml +1 -0
  24. data/lib/smalruby_editor/blockly_message_helper.rb +2 -1
  25. data/lib/smalruby_editor/version.rb +1 -1
  26. data/lib/tasks/release.rake +0 -0
  27. data/public/assets/{application-fda71a642d958ffbaf90185c471d6e51.js → application-b305a6ea9e7c045a8e170bbf6fb09dd1.js} +3 -3
  28. data/public/assets/{application-fda71a642d958ffbaf90185c471d6e51.js.gz → application-b305a6ea9e7c045a8e170bbf6fb09dd1.js.gz} +0 -0
  29. data/public/assets/{manifest-1a9856df207640ec658271db34b30dbb.json → manifest-ebd584fa603a378faf780f013e6a447d.json} +1 -1
  30. data/public/assets/msg/en_us-c6f8f0084f38560bf933b742ede64a52.js +1 -0
  31. data/public/assets/msg/en_us-c6f8f0084f38560bf933b742ede64a52.js.gz +0 -0
  32. data/public/assets/msg/ja-3703e6ceebd04ae1f08b0e871800539d.js +1 -0
  33. data/public/assets/msg/ja-3703e6ceebd04ae1f08b0e871800539d.js.gz +0 -0
  34. data/smalruby-editor.gemspec +1 -1
  35. data/spec/acceptance/block_mode/blocks/hardware/{button_down_or_up.feature → button_pressed_or_released.feature} +15 -15
  36. data/spec/acceptance/block_mode/blocks/hardware/led_turn_off.feature +67 -0
  37. data/spec/acceptance/block_mode/blocks/hardware/led_turn_on.feature +67 -0
  38. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_set_color.feature +79 -0
  39. data/spec/acceptance/block_mode/blocks/hardware/{button_not_use_pullup.feature → rgb_led_turn_off.feature} +30 -18
  40. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action.feature +107 -0
  41. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action_with_sec.feature +151 -0
  42. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_led_turn_on_or_off.feature +73 -0
  43. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_light_sensor_value.feature +92 -0
  44. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_motor_speed.feature +116 -0
  45. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_touch_sensor_pressed_or_released.feature +108 -0
  46. data/spec/models/concerns/ruby_to_block/block/hardware_spec.rb +359 -36
  47. data/spec/models/concerns/ruby_to_block_spec.rb +8 -8
  48. data/spec/steps/block_mode_steps.rb +8 -0
  49. metadata +43 -35
  50. data/app/models/concerns/ruby_to_block/block/hardware_button_not_use_pullup.rb +0 -18
  51. data/app/models/concerns/ruby_to_block/block/hardware_on_button_down_or_up.rb +0 -19
  52. data/app/models/concerns/ruby_to_block/block/hardware_on_sensor_change.rb +0 -17
  53. data/public/assets/msg/en_us-893d970ff8061fbe7459f009582c4df5.js +0 -1
  54. data/public/assets/msg/en_us-893d970ff8061fbe7459f009582c4df5.js.gz +0 -0
  55. data/public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js +0 -1
  56. data/public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js.gz +0 -0
  57. data/spec/acceptance/block_mode/blocks/hardware/led_off.feature +0 -75
  58. data/spec/acceptance/block_mode/blocks/hardware/led_on.feature +0 -75
  59. data/spec/acceptance/block_mode/blocks/hardware/on_button_down_or_up.feature +0 -87
  60. data/spec/acceptance/block_mode/blocks/hardware/on_sensor_change.feature +0 -81
  61. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature +0 -81
  62. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature +0 -87
@@ -0,0 +1,107 @@
1
+ # encoding: utf-8
2
+ # language: en
3
+ @javascript
4
+ Feature: hardware_smalrubot_v3_action block
5
+ Background:
6
+ Given "ブロック" タブを表示する
7
+ And キャラクターcar1を追加する
8
+
9
+ Scenario: ブロックのみ配置する
10
+ When 次のブロックを配置する:
11
+ """
12
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
13
+ %field{:name => "ACTION"}<
14
+ backward
15
+ """
16
+ And ブロックからソースコードを生成する
17
+
18
+ Then テキストエディタのプログラムは "" であること
19
+
20
+ Scenario: キャラクターとブロックを配置する
21
+ When 次のブロックを配置する:
22
+ """
23
+ %block{:type => "character_new", :x => "21", :y => "15"}
24
+ %field{:name => "NAME"}<
25
+ car1
26
+ %statement{:name => "DO"}
27
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
28
+ %field{:name => "ACTION"}<
29
+ forward
30
+ %next
31
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
32
+ %field{:name => "ACTION"}<
33
+ backward
34
+ %next
35
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
36
+ %field{:name => "ACTION"}<
37
+ turn_left
38
+ %next
39
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
40
+ %field{:name => "ACTION"}<
41
+ turn_right
42
+ %next
43
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
44
+ %field{:name => "ACTION"}<
45
+ stop
46
+ """
47
+ And ブロックからソースコードを生成する
48
+
49
+ Then テキストエディタのプログラムは以下であること:
50
+ """
51
+ require "smalruby"
52
+
53
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
54
+ car1.smalrubot_v3.forward
55
+ car1.smalrubot_v3.backward
56
+ car1.smalrubot_v3.turn_left
57
+ car1.smalrubot_v3.turn_right
58
+ car1.smalrubot_v3.stop
59
+
60
+ """
61
+
62
+ Scenario: キャラクターとイベントとブロックを配置する
63
+ When 次のブロックを配置する:
64
+ """
65
+ %block{:type => "character_new", :x => "21", :y => "15"}
66
+ %field{:name => "NAME"}<
67
+ car1
68
+ %statement{:name => "DO"}
69
+ %block{:type => "events_on_start"}
70
+ %statement{:name => "DO"}
71
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
72
+ %field{:name => "ACTION"}<
73
+ forward
74
+ %next
75
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
76
+ %field{:name => "ACTION"}<
77
+ backward
78
+ %next
79
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
80
+ %field{:name => "ACTION"}<
81
+ turn_left
82
+ %next
83
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
84
+ %field{:name => "ACTION"}<
85
+ turn_right
86
+ %next
87
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
88
+ %field{:name => "ACTION"}<
89
+ stop
90
+ """
91
+ And ブロックからソースコードを生成する
92
+
93
+ Then テキストエディタのプログラムは以下であること:
94
+ """
95
+ require "smalruby"
96
+
97
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
98
+
99
+ car1.on(:start) do
100
+ smalrubot_v3.forward
101
+ smalrubot_v3.backward
102
+ smalrubot_v3.turn_left
103
+ smalrubot_v3.turn_right
104
+ smalrubot_v3.stop
105
+ end
106
+
107
+ """
@@ -0,0 +1,151 @@
1
+ # encoding: utf-8
2
+ # language: en
3
+ @javascript
4
+ Feature: hardware_smalrubot_v3_action_with_sec block
5
+ Background:
6
+ Given "ブロック" タブを表示する
7
+ And キャラクターcar1を追加する
8
+
9
+ Scenario: ブロックのみ配置する
10
+ When 次のブロックを配置する:
11
+ """
12
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
13
+ %field{:name => "ACTION"}<
14
+ backward
15
+ %value{:name => "SEC"}
16
+ %block{:type => "math_number"}
17
+ %field{:name => "NUM"}<
18
+ 0.5
19
+ """
20
+ And ブロックからソースコードを生成する
21
+
22
+ Then テキストエディタのプログラムは "" であること
23
+
24
+ Scenario: キャラクターとブロックを配置する
25
+ When 次のブロックを配置する:
26
+ """
27
+ %block{:type => "character_new", :x => "21", :y => "15"}
28
+ %field{:name => "NAME"}<
29
+ car1
30
+ %statement{:name => "DO"}
31
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
32
+ %field{:name => "ACTION"}<
33
+ forward
34
+ %value{:name => "SEC"}
35
+ %block{:type => "math_number"}
36
+ %field{:name => "NUM"}<
37
+ 0.5
38
+ %next
39
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
40
+ %field{:name => "ACTION"}<
41
+ backward
42
+ %value{:name => "SEC"}
43
+ %block{:type => "math_number"}
44
+ %field{:name => "NUM"}<
45
+ 0.5
46
+ %next
47
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
48
+ %field{:name => "ACTION"}<
49
+ turn_left
50
+ %value{:name => "SEC"}
51
+ %block{:type => "math_number"}
52
+ %field{:name => "NUM"}<
53
+ 0.5
54
+ %next
55
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
56
+ %field{:name => "ACTION"}<
57
+ turn_right
58
+ %value{:name => "SEC"}
59
+ %block{:type => "math_number"}
60
+ %field{:name => "NUM"}<
61
+ 0.5
62
+ %next
63
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
64
+ %field{:name => "ACTION"}<
65
+ stop
66
+ %value{:name => "SEC"}
67
+ %block{:type => "math_number"}
68
+ %field{:name => "NUM"}<
69
+ 0.5
70
+ """
71
+ And ブロックからソースコードを生成する
72
+
73
+ Then テキストエディタのプログラムは以下であること:
74
+ """
75
+ require "smalruby"
76
+
77
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
78
+ car1.smalrubot_v3.forward(sec: 0.5)
79
+ car1.smalrubot_v3.backward(sec: 0.5)
80
+ car1.smalrubot_v3.turn_left(sec: 0.5)
81
+ car1.smalrubot_v3.turn_right(sec: 0.5)
82
+ car1.smalrubot_v3.stop(sec: 0.5)
83
+
84
+ """
85
+
86
+ Scenario: キャラクターとイベントとブロックを配置する
87
+ When 次のブロックを配置する:
88
+ """
89
+ %block{:type => "character_new", :x => "21", :y => "15"}
90
+ %field{:name => "NAME"}<
91
+ car1
92
+ %statement{:name => "DO"}
93
+ %block{:type => "events_on_start"}
94
+ %statement{:name => "DO"}
95
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
96
+ %field{:name => "ACTION"}<
97
+ forward
98
+ %value{:name => "SEC"}
99
+ %block{:type => "math_number"}
100
+ %field{:name => "NUM"}<
101
+ 0.5
102
+ %next
103
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
104
+ %field{:name => "ACTION"}<
105
+ backward
106
+ %value{:name => "SEC"}
107
+ %block{:type => "math_number"}
108
+ %field{:name => "NUM"}<
109
+ 0.5
110
+ %next
111
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
112
+ %field{:name => "ACTION"}<
113
+ turn_left
114
+ %value{:name => "SEC"}
115
+ %block{:type => "math_number"}
116
+ %field{:name => "NUM"}<
117
+ 0.5
118
+ %next
119
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
120
+ %field{:name => "ACTION"}<
121
+ turn_right
122
+ %value{:name => "SEC"}
123
+ %block{:type => "math_number"}
124
+ %field{:name => "NUM"}<
125
+ 0.5
126
+ %next
127
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
128
+ %field{:name => "ACTION"}<
129
+ stop
130
+ %value{:name => "SEC"}
131
+ %block{:type => "math_number"}
132
+ %field{:name => "NUM"}<
133
+ 0.5
134
+ """
135
+ And ブロックからソースコードを生成する
136
+
137
+ Then テキストエディタのプログラムは以下であること:
138
+ """
139
+ require "smalruby"
140
+
141
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
142
+
143
+ car1.on(:start) do
144
+ smalrubot_v3.forward(sec: 0.5)
145
+ smalrubot_v3.backward(sec: 0.5)
146
+ smalrubot_v3.turn_left(sec: 0.5)
147
+ smalrubot_v3.turn_right(sec: 0.5)
148
+ smalrubot_v3.stop(sec: 0.5)
149
+ end
150
+
151
+ """
@@ -0,0 +1,73 @@
1
+ # encoding: utf-8
2
+ # language: en
3
+ @javascript
4
+ Feature: hardware_smalrubot_v3_led_turn_on_or_off block
5
+ Background:
6
+ Given "ブロック" タブを表示する
7
+ And キャラクターcar1を追加する
8
+
9
+ Scenario: ブロックのみ配置する
10
+ When 次のブロックを配置する:
11
+ """
12
+ %block{:type => "hardware_smalrubot_v3_led_turn_on_or_off", :x => "0", :y => "0"}
13
+ %field{:name => "COLOUR"}<
14
+ green
15
+ %field{:name => "OOO"}<
16
+ turn_off
17
+ """
18
+ And ブロックからソースコードを生成する
19
+
20
+ Then テキストエディタのプログラムは "" であること
21
+
22
+ Scenario: キャラクターとブロックを配置する
23
+ When 次のブロックを配置する:
24
+ """
25
+ %block{:type => "character_new", :x => "21", :y => "15"}
26
+ %field{:name => "NAME"}<
27
+ car1
28
+ %statement{:name => "DO"}
29
+ %block{:type => "hardware_smalrubot_v3_led_turn_on_or_off", :x => "0", :y => "0"}
30
+ %field{:name => "COLOUR"}<
31
+ green
32
+ %field{:name => "OOO"}<
33
+ turn_off
34
+ """
35
+ And ブロックからソースコードを生成する
36
+
37
+ Then テキストエディタのプログラムは以下であること:
38
+ """
39
+ require "smalruby"
40
+
41
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
42
+ car1.smalrubot_v3.green_led.turn_off
43
+
44
+ """
45
+
46
+ Scenario: キャラクターとイベントとブロックを配置する
47
+ When 次のブロックを配置する:
48
+ """
49
+ %block{:type => "character_new", :x => "21", :y => "15"}
50
+ %field{:name => "NAME"}<
51
+ car1
52
+ %statement{:name => "DO"}
53
+ %block{:type => "events_on_start"}
54
+ %statement{:name => "DO"}
55
+ %block{:type => "hardware_smalrubot_v3_led_turn_on_or_off", :x => "0", :y => "0"}
56
+ %field{:name => "COLOUR"}<
57
+ red
58
+ %field{:name => "OOO"}<
59
+ turn_on
60
+ """
61
+ And ブロックからソースコードを生成する
62
+
63
+ Then テキストエディタのプログラムは以下であること:
64
+ """
65
+ require "smalruby"
66
+
67
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
68
+
69
+ car1.on(:start) do
70
+ smalrubot_v3.red_led.turn_on
71
+ end
72
+
73
+ """
@@ -0,0 +1,92 @@
1
+ # encoding: utf-8
2
+ # language: en
3
+ @javascript
4
+ Feature: hardware_smalrubot_v3_light_sensor_value block
5
+ Scenario: ブロックのみ配置する
6
+ Given "ブロック" タブを表示する
7
+
8
+ When 次のブロックを配置する:
9
+ """
10
+ %block{:type => "hardware_smalrubot_v3_light_sensor_value", :x => "0", :y => "0"}
11
+ """
12
+ And ブロックからソースコードを生成する
13
+
14
+ Then テキストエディタのプログラムは "" であること
15
+
16
+ Scenario: 文とブロックを配置する
17
+ Given "ブロック" タブを表示する
18
+
19
+ When 次のブロックを配置する:
20
+ """
21
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
22
+ %value{:name => "ARG"}
23
+ %block{:type => "hardware_smalrubot_v3_light_sensor_value", :x => "0", :y => "0"}
24
+ """
25
+ And ブロックからソースコードを生成する
26
+
27
+ Then テキストエディタのプログラムは以下であること:
28
+ """
29
+ require "smalruby"
30
+
31
+ p("")
32
+
33
+ """
34
+
35
+ Scenario: キャラクターとブロックを配置する
36
+ Given "ブロック" タブを表示する
37
+ And 次のキャラクターを追加する:
38
+ | name | costumes | x | y | angle |
39
+ | car1 | car1.png | 0 | 0 | 0 |
40
+
41
+ When 次のブロックを配置する:
42
+ """
43
+ %block{:type => "character_new", :x => "21", :y => "15"}
44
+ %field{:name => "NAME"}<
45
+ car1
46
+ %statement{:name => "DO"}
47
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
48
+ %value{:name => "ARG"}
49
+ %block{:type => "hardware_smalrubot_v3_light_sensor_value", :x => "0", :y => "0"}
50
+ """
51
+ And ブロックからソースコードを生成する
52
+
53
+ Then テキストエディタのプログラムは以下であること:
54
+ """
55
+ require "smalruby"
56
+
57
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
58
+ p(car1.smalrubot_v3.light_sensor.value)
59
+
60
+ """
61
+
62
+ Scenario: キャラクターとイベントとブロックを配置する
63
+ Given "ブロック" タブを表示する
64
+ And 次のキャラクターを追加する:
65
+ | name | costumes | x | y | angle |
66
+ | car1 | car1.png | 0 | 0 | 0 |
67
+
68
+ When 次のブロックを配置する:
69
+ """
70
+ %block{:type => "character_new", :x => "21", :y => "15"}
71
+ %field{:name => "NAME"}<
72
+ car1
73
+ %statement{:name => "DO"}
74
+ %block{:type => "events_on_start"}
75
+ %statement{:name => "DO"}
76
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
77
+ %value{:name => "ARG"}
78
+ %block{:type => "hardware_smalrubot_v3_light_sensor_value", :x => "0", :y => "0"}
79
+ """
80
+ And ブロックからソースコードを生成する
81
+
82
+ Then テキストエディタのプログラムは以下であること:
83
+ """
84
+ require "smalruby"
85
+
86
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
87
+
88
+ car1.on(:start) do
89
+ p(smalrubot_v3.light_sensor.value)
90
+ end
91
+
92
+ """
@@ -0,0 +1,116 @@
1
+ # encoding: utf-8
2
+ # language: en
3
+ @javascript
4
+ Feature: hardware_smalrubot_v3_motor_{speed,set_speed} block
5
+ Background:
6
+ Given "ブロック" タブを表示する
7
+ And キャラクターcar1を追加する
8
+
9
+ Scenario: ブロックのみ配置する
10
+ When 次のブロックを配置する:
11
+ """
12
+ %block{:type => "hardware_smalrubot_v3_motor_speed"}
13
+ %field{:name => "LOR"}<
14
+ right
15
+ """
16
+ And ブロックからソースコードを生成する
17
+
18
+ Then テキストエディタのプログラムは "" であること
19
+
20
+ Scenario: 文とブロックを配置する
21
+ When 次のブロックを配置する:
22
+ """
23
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
24
+ %value{:name => "ARG"}
25
+ %block{:type => "hardware_smalrubot_v3_motor_speed"}
26
+ %field{:name => "LOR"}<
27
+ right
28
+ %next
29
+ %block{:type => "hardware_smalrubot_v3_motor_set_speed"}
30
+ %field{:name => "LOR"}<
31
+ left
32
+ %value{:name => "SPEED"}
33
+ %block{:type => "math_number"}
34
+ %field{:name => "NUM"}<
35
+ 50
36
+ """
37
+ And ブロックからソースコードを生成する
38
+
39
+ Then テキストエディタのプログラムは以下であること:
40
+ """
41
+ require "smalruby"
42
+
43
+ p("")
44
+
45
+ """
46
+
47
+ Scenario: キャラクターとブロックを配置する
48
+ When 次のブロックを配置する:
49
+ """
50
+ %block{:type => "character_new", :x => "21", :y => "15"}
51
+ %field{:name => "NAME"}<
52
+ car1
53
+ %statement{:name => "DO"}
54
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
55
+ %value{:name => "ARG"}
56
+ %block{:type => "hardware_smalrubot_v3_motor_speed"}
57
+ %field{:name => "LOR"}<
58
+ right
59
+ %next
60
+ %block{:type => "hardware_smalrubot_v3_motor_set_speed"}
61
+ %field{:name => "LOR"}<
62
+ left
63
+ %value{:name => "SPEED"}
64
+ %block{:type => "math_number"}
65
+ %field{:name => "NUM"}<
66
+ 50
67
+ """
68
+ And ブロックからソースコードを生成する
69
+
70
+ Then テキストエディタのプログラムは以下であること:
71
+ """
72
+ require "smalruby"
73
+
74
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
75
+ p(car1.smalrubot_v3.right_motor.speed)
76
+ car1.smalrubot_v3.left_motor.speed = 50
77
+
78
+ """
79
+
80
+ Scenario: キャラクターとイベントとブロックを配置する
81
+ When 次のブロックを配置する:
82
+ """
83
+ %block{:type => "character_new", :x => "21", :y => "15"}
84
+ %field{:name => "NAME"}<
85
+ car1
86
+ %statement{:name => "DO"}
87
+ %block{:type => "events_on_start"}
88
+ %statement{:name => "DO"}
89
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
90
+ %value{:name => "ARG"}
91
+ %block{:type => "hardware_smalrubot_v3_motor_speed"}
92
+ %field{:name => "LOR"}<
93
+ right
94
+ %next
95
+ %block{:type => "hardware_smalrubot_v3_motor_set_speed"}
96
+ %field{:name => "LOR"}<
97
+ left
98
+ %value{:name => "SPEED"}
99
+ %block{:type => "math_number"}
100
+ %field{:name => "NUM"}<
101
+ 50
102
+ """
103
+ And ブロックからソースコードを生成する
104
+
105
+ Then テキストエディタのプログラムは以下であること:
106
+ """
107
+ require "smalruby"
108
+
109
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
110
+
111
+ car1.on(:start) do
112
+ p(smalrubot_v3.right_motor.speed)
113
+ self.smalrubot_v3.left_motor.speed = 50
114
+ end
115
+
116
+ """