smalruby-editor 0.1.24 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (51) 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/smalruby-editor.gemspec +1 -1
  28. data/spec/acceptance/block_mode/blocks/hardware/{button_down_or_up.feature → button_pressed_or_released.feature} +15 -15
  29. data/spec/acceptance/block_mode/blocks/hardware/led_turn_off.feature +67 -0
  30. data/spec/acceptance/block_mode/blocks/hardware/led_turn_on.feature +67 -0
  31. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_set_color.feature +79 -0
  32. data/spec/acceptance/block_mode/blocks/hardware/{button_not_use_pullup.feature → rgb_led_turn_off.feature} +30 -18
  33. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action.feature +107 -0
  34. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action_with_sec.feature +151 -0
  35. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_led_turn_on_or_off.feature +73 -0
  36. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_light_sensor_value.feature +92 -0
  37. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_motor_speed.feature +116 -0
  38. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_touch_sensor_pressed_or_released.feature +108 -0
  39. data/spec/models/concerns/ruby_to_block/block/hardware_spec.rb +359 -36
  40. data/spec/models/concerns/ruby_to_block_spec.rb +8 -8
  41. data/spec/steps/block_mode_steps.rb +8 -0
  42. metadata +43 -35
  43. data/app/models/concerns/ruby_to_block/block/hardware_button_not_use_pullup.rb +0 -18
  44. data/app/models/concerns/ruby_to_block/block/hardware_on_button_down_or_up.rb +0 -19
  45. data/app/models/concerns/ruby_to_block/block/hardware_on_sensor_change.rb +0 -17
  46. data/spec/acceptance/block_mode/blocks/hardware/led_off.feature +0 -75
  47. data/spec/acceptance/block_mode/blocks/hardware/led_on.feature +0 -75
  48. data/spec/acceptance/block_mode/blocks/hardware/on_button_down_or_up.feature +0 -87
  49. data/spec/acceptance/block_mode/blocks/hardware/on_sensor_change.feature +0 -81
  50. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature +0 -81
  51. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature +0 -87
@@ -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
+ """
@@ -0,0 +1,108 @@
1
+ # encoding: utf-8
2
+ # language: en
3
+ @javascript
4
+ Feature: hardware_smalrubot_v3_touch_sensor_pressed_or_released block
5
+ Scenario: ブロックのみ配置する
6
+ Given "ブロック" タブを表示する
7
+
8
+ When 次のブロックを配置する:
9
+ """
10
+ %block{:type => "hardware_smalrubot_v3_touch_sensor_pressed_or_released", :x => "0", :y => "0"}
11
+ %field{:name => "LOR"}<
12
+ right
13
+ %field{:name => "POR"}<
14
+ pressed
15
+ """
16
+ And ブロックからソースコードを生成する
17
+
18
+ Then テキストエディタのプログラムは "" であること
19
+
20
+ Scenario: 文とブロックを配置する
21
+ Given "ブロック" タブを表示する
22
+
23
+ When 次のブロックを配置する:
24
+ """
25
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
26
+ %value{:name => "ARG"}
27
+ %block{:type => "hardware_smalrubot_v3_touch_sensor_pressed_or_released", :x => "0", :y => "0"}
28
+ %field{:name => "LOR"}<
29
+ right
30
+ %field{:name => "POR"}<
31
+ pressed
32
+ """
33
+ And ブロックからソースコードを生成する
34
+
35
+ Then テキストエディタのプログラムは以下であること:
36
+ """
37
+ require "smalruby"
38
+
39
+ p("")
40
+
41
+ """
42
+
43
+ Scenario: キャラクターとブロックを配置する
44
+ Given "ブロック" タブを表示する
45
+ And 次のキャラクターを追加する:
46
+ | name | costumes | x | y | angle |
47
+ | car1 | car1.png | 0 | 0 | 0 |
48
+
49
+ When 次のブロックを配置する:
50
+ """
51
+ %block{:type => "character_new", :x => "21", :y => "15"}
52
+ %field{:name => "NAME"}<
53
+ car1
54
+ %statement{:name => "DO"}
55
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
56
+ %value{:name => "ARG"}
57
+ %block{:type => "hardware_smalrubot_v3_touch_sensor_pressed_or_released", :x => "0", :y => "0"}
58
+ %field{:name => "LOR"}<
59
+ right
60
+ %field{:name => "POR"}<
61
+ pressed
62
+ """
63
+ And ブロックからソースコードを生成する
64
+
65
+ Then テキストエディタのプログラムは以下であること:
66
+ """
67
+ require "smalruby"
68
+
69
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
70
+ p(car1.smalrubot_v3.right_touch_sensor.pressed?)
71
+
72
+ """
73
+
74
+ Scenario: キャラクターとイベントとブロックを配置する
75
+ Given "ブロック" タブを表示する
76
+ And 次のキャラクターを追加する:
77
+ | name | costumes | x | y | angle |
78
+ | car1 | car1.png | 0 | 0 | 0 |
79
+
80
+ When 次のブロックを配置する:
81
+ """
82
+ %block{:type => "character_new", :x => "21", :y => "15"}
83
+ %field{:name => "NAME"}<
84
+ car1
85
+ %statement{:name => "DO"}
86
+ %block{:type => "events_on_start"}
87
+ %statement{:name => "DO"}
88
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
89
+ %value{:name => "ARG"}
90
+ %block{:type => "hardware_smalrubot_v3_touch_sensor_pressed_or_released", :x => "0", :y => "0"}
91
+ %field{:name => "LOR"}<
92
+ left
93
+ %field{:name => "POR"}<
94
+ released
95
+ """
96
+ And ブロックからソースコードを生成する
97
+
98
+ Then テキストエディタのプログラムは以下であること:
99
+ """
100
+ require "smalruby"
101
+
102
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
103
+
104
+ car1.on(:start) do
105
+ p(smalrubot_v3.left_touch_sensor.released?)
106
+ end
107
+
108
+ """