smalruby-editor 0.1.24 → 0.2.0
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.
- checksums.yaml +4 -4
- data/Guardfile +9 -0
- data/app/assets/javascripts/blocks/hardware.js.coffee.erb +147 -62
- data/app/assets/javascripts/blocks/sensing.js.coffee.erb +4 -0
- data/app/assets/javascripts/msg/en_us.js +34 -12
- data/app/assets/javascripts/msg/ja.js +35 -15
- data/app/helpers/editor_helper.rb +2 -1
- data/app/models/concerns/ruby_to_block/block/{hardware_button_down_or_up.rb → hardware_button_pressed_or_released.rb} +3 -3
- data/app/models/concerns/ruby_to_block/block/{hardware_led_on.rb → hardware_led_turn_off.rb} +2 -2
- data/app/models/concerns/ruby_to_block/block/{hardware_led_off.rb → hardware_led_turn_on.rb} +2 -2
- data/app/models/concerns/ruby_to_block/block/hardware_operation.rb +2 -0
- data/app/models/concerns/ruby_to_block/block/{hardware_rgb_led_on.rb → hardware_rgb_led_set_color.rb} +2 -2
- data/app/models/concerns/ruby_to_block/block/{hardware_rgb_led_off.rb → hardware_rgb_led_turn_off.rb} +2 -2
- data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_action.rb +22 -0
- data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_action_with_sec.rb +24 -0
- data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_led_turn_on_or_off.rb +22 -0
- data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_light_sensor_value.rb +28 -0
- data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_touch_sensor_pressed_or_released.rb +29 -0
- data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_commands.rb +3 -1
- data/app/views/editor/_toolbox.html.haml +30 -17
- data/app/views/layouts/application.html.erb +3 -1
- data/config/locales/en.yml +1 -0
- data/config/locales/ja.yml +1 -0
- data/lib/smalruby_editor/blockly_message_helper.rb +2 -1
- data/lib/smalruby_editor/version.rb +1 -1
- data/lib/tasks/release.rake +0 -0
- data/smalruby-editor.gemspec +1 -1
- data/spec/acceptance/block_mode/blocks/hardware/{button_down_or_up.feature → button_pressed_or_released.feature} +15 -15
- data/spec/acceptance/block_mode/blocks/hardware/led_turn_off.feature +67 -0
- data/spec/acceptance/block_mode/blocks/hardware/led_turn_on.feature +67 -0
- data/spec/acceptance/block_mode/blocks/hardware/rgb_led_set_color.feature +79 -0
- data/spec/acceptance/block_mode/blocks/hardware/{button_not_use_pullup.feature → rgb_led_turn_off.feature} +30 -18
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action.feature +107 -0
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action_with_sec.feature +151 -0
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_led_turn_on_or_off.feature +73 -0
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_light_sensor_value.feature +92 -0
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_motor_speed.feature +116 -0
- data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_touch_sensor_pressed_or_released.feature +108 -0
- data/spec/models/concerns/ruby_to_block/block/hardware_spec.rb +359 -36
- data/spec/models/concerns/ruby_to_block_spec.rb +8 -8
- data/spec/steps/block_mode_steps.rb +8 -0
- metadata +43 -35
- data/app/models/concerns/ruby_to_block/block/hardware_button_not_use_pullup.rb +0 -18
- data/app/models/concerns/ruby_to_block/block/hardware_on_button_down_or_up.rb +0 -19
- data/app/models/concerns/ruby_to_block/block/hardware_on_sensor_change.rb +0 -17
- data/spec/acceptance/block_mode/blocks/hardware/led_off.feature +0 -75
- data/spec/acceptance/block_mode/blocks/hardware/led_on.feature +0 -75
- data/spec/acceptance/block_mode/blocks/hardware/on_button_down_or_up.feature +0 -87
- data/spec/acceptance/block_mode/blocks/hardware/on_sensor_change.feature +0 -81
- data/spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature +0 -81
- data/spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature +0 -87
@@ -10,8 +10,9 @@ module SmalrubyEditor
|
|
10
10
|
filename = md[1]
|
11
11
|
prefix = filename.slice(%r"app/assets/javascripts/(.*)$", 1)
|
12
12
|
.gsub(/\..*\z/, '')
|
13
|
-
name =
|
13
|
+
name = prefix + name
|
14
14
|
end
|
15
|
+
name = name.gsub(/[\/.]/, '_')
|
15
16
|
"Smalruby.bm('#{name.upcase}')"
|
16
17
|
end
|
17
18
|
end
|
data/lib/tasks/release.rake
CHANGED
File without changes
|
data/smalruby-editor.gemspec
CHANGED
@@ -68,7 +68,7 @@ Gem::Specification.new do |spec|
|
|
68
68
|
['mime-types', '~> 1.16'],
|
69
69
|
['haml-rails'],
|
70
70
|
['nokogiri'],
|
71
|
-
['smalruby', '~> 0.
|
71
|
+
['smalruby', '~> 0.1.1'],
|
72
72
|
]
|
73
73
|
runtime_dependencies << ['therubyracer'] unless is_windows
|
74
74
|
runtime_dependencies.each do |args|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# language: ja
|
3
3
|
@javascript
|
4
|
-
機能:
|
4
|
+
機能: hardware_button_pressed_or_released - 「条件:ボタン[▼PIN]が[▼押された]」ブロック
|
5
5
|
背景:
|
6
6
|
前提 "ブロック" タブを表示する
|
7
7
|
かつ 次のキャラクターを追加する:
|
@@ -10,15 +10,15 @@
|
|
10
10
|
|
11
11
|
シナリオ: ブロックのみ、キャラクターとブロック、キャラクターとイベントとブロックをそれぞれ配置する
|
12
12
|
# ブロックのみ配置する
|
13
|
-
もし 次のブロック("
|
13
|
+
もし 次のブロック("hardware_button_pressed_or_released")を配置する:
|
14
14
|
"""
|
15
15
|
%block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
|
16
16
|
%value{:name => "ARG"}
|
17
|
-
%block{:type => "
|
17
|
+
%block{:type => "hardware_button_pressed_or_released"}
|
18
18
|
%field{:name => "PIN"}<
|
19
19
|
D3
|
20
|
-
%field{:name => "
|
21
|
-
|
20
|
+
%field{:name => "POR"}<
|
21
|
+
pressed
|
22
22
|
"""
|
23
23
|
かつ ブロックからソースコードを生成する
|
24
24
|
|
@@ -31,7 +31,7 @@
|
|
31
31
|
"""
|
32
32
|
|
33
33
|
# キャラクターとブロックを配置する
|
34
|
-
もし 次のブロック("
|
34
|
+
もし 次のブロック("hardware_hardware_button_pressed_or_released")を配置する:
|
35
35
|
"""
|
36
36
|
%block{:type => "character_new", :x => "21", :y => "15"}
|
37
37
|
%field{:name => "NAME"}<
|
@@ -39,21 +39,21 @@
|
|
39
39
|
%statement{:name => "DO"}
|
40
40
|
%block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
|
41
41
|
%value{:name => "ARG"}
|
42
|
-
%block{:type => "
|
42
|
+
%block{:type => "hardware_button_pressed_or_released"}
|
43
43
|
%field{:name => "PIN"}<
|
44
44
|
D3
|
45
|
-
%field{:name => "
|
46
|
-
|
45
|
+
%field{:name => "POR"}<
|
46
|
+
pressed
|
47
47
|
"""
|
48
48
|
かつ ブロックからソースコードを生成する
|
49
49
|
|
50
50
|
ならば テキストエディタのプログラムは以下を含むこと:
|
51
51
|
"""
|
52
|
-
p(car1.button("D3").
|
52
|
+
p(car1.button("D3").pressed?)
|
53
53
|
"""
|
54
54
|
|
55
55
|
# キャラクターとイベントとブロックを配置する
|
56
|
-
もし 次のブロック("
|
56
|
+
もし 次のブロック("hardware_hardware_button_pressed_or_released")を配置する:
|
57
57
|
"""
|
58
58
|
%block{:type => "character_new", :x => "21", :y => "15"}
|
59
59
|
%field{:name => "NAME"}<
|
@@ -63,17 +63,17 @@
|
|
63
63
|
%statement{:name => "DO"}
|
64
64
|
%block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
|
65
65
|
%value{:name => "ARG"}
|
66
|
-
%block{:type => "
|
66
|
+
%block{:type => "hardware_button_pressed_or_released"}
|
67
67
|
%field{:name => "PIN"}<
|
68
68
|
D3
|
69
|
-
%field{:name => "
|
70
|
-
|
69
|
+
%field{:name => "POR"}<
|
70
|
+
released
|
71
71
|
"""
|
72
72
|
かつ ブロックからソースコードを生成する
|
73
73
|
|
74
74
|
ならば テキストエディタのプログラムは以下を含むこと:
|
75
75
|
"""
|
76
76
|
car1.on(:start) do
|
77
|
-
p(button("D3").
|
77
|
+
p(button("D3").released?)
|
78
78
|
end
|
79
79
|
"""
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# language: ja
|
3
|
+
@javascript
|
4
|
+
機能: hardware_led_turn_off block
|
5
|
+
背景:
|
6
|
+
前提 "ブロック" タブを表示する
|
7
|
+
かつ キャラクターcar1を追加する
|
8
|
+
|
9
|
+
シナリオ: ブロックのみ配置する
|
10
|
+
もし 次のブロックを配置する:
|
11
|
+
"""
|
12
|
+
%block{:type => "hardware_led_turn_off", :x => "0", :y => "0"}
|
13
|
+
%field{:name => "PIN"}<
|
14
|
+
D13
|
15
|
+
"""
|
16
|
+
かつ ブロックからソースコードを生成する
|
17
|
+
|
18
|
+
ならば テキストエディタのプログラムは "" であること
|
19
|
+
|
20
|
+
シナリオ: キャラクターとブロックを配置する
|
21
|
+
もし 次のブロックを配置する:
|
22
|
+
"""
|
23
|
+
%block{:type => "character_new", :x => "21", :y => "15"}
|
24
|
+
%field{:name => "NAME"}<
|
25
|
+
car1
|
26
|
+
%statement{:name => "DO"}
|
27
|
+
%block{:type => "hardware_led_turn_off", :x => "0", :y => "0"}
|
28
|
+
%field{:name => "PIN"}<
|
29
|
+
D13
|
30
|
+
"""
|
31
|
+
かつ ブロックからソースコードを生成する
|
32
|
+
|
33
|
+
ならば テキストエディタのプログラムは以下であること:
|
34
|
+
"""
|
35
|
+
require "smalruby"
|
36
|
+
|
37
|
+
car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
|
38
|
+
car1.led("D13").turn_off
|
39
|
+
|
40
|
+
"""
|
41
|
+
|
42
|
+
シナリオ: キャラクターとイベントとブロックを配置する
|
43
|
+
もし 次のブロックを配置する:
|
44
|
+
"""
|
45
|
+
%block{:type => "character_new", :x => "21", :y => "15"}
|
46
|
+
%field{:name => "NAME"}<
|
47
|
+
car1
|
48
|
+
%statement{:name => "DO"}
|
49
|
+
%block{:type => "events_on_start"}
|
50
|
+
%statement{:name => "DO"}
|
51
|
+
%block{:type => "hardware_led_turn_off", :x => "0", :y => "0"}
|
52
|
+
%field{:name => "PIN"}<
|
53
|
+
D13
|
54
|
+
"""
|
55
|
+
かつ ブロックからソースコードを生成する
|
56
|
+
|
57
|
+
ならば テキストエディタのプログラムは以下であること:
|
58
|
+
"""
|
59
|
+
require "smalruby"
|
60
|
+
|
61
|
+
car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
|
62
|
+
|
63
|
+
car1.on(:start) do
|
64
|
+
led("D13").turn_off
|
65
|
+
end
|
66
|
+
|
67
|
+
"""
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# language: ja
|
3
|
+
@javascript
|
4
|
+
機能: hardware_led_turn_on block
|
5
|
+
背景:
|
6
|
+
前提 "ブロック" タブを表示する
|
7
|
+
かつ キャラクターcar1を追加する
|
8
|
+
|
9
|
+
シナリオ: ブロックのみ配置する
|
10
|
+
もし 次のブロックを配置する:
|
11
|
+
"""
|
12
|
+
%block{:type => "hardware_led_turn_on", :x => "0", :y => "0"}
|
13
|
+
%field{:name => "PIN"}<
|
14
|
+
D13
|
15
|
+
"""
|
16
|
+
かつ ブロックからソースコードを生成する
|
17
|
+
|
18
|
+
ならば テキストエディタのプログラムは "" であること
|
19
|
+
|
20
|
+
シナリオ: キャラクターとブロックを配置する
|
21
|
+
もし 次のブロックを配置する:
|
22
|
+
"""
|
23
|
+
%block{:type => "character_new", :x => "21", :y => "15"}
|
24
|
+
%field{:name => "NAME"}<
|
25
|
+
car1
|
26
|
+
%statement{:name => "DO"}
|
27
|
+
%block{:type => "hardware_led_turn_on", :x => "0", :y => "0"}
|
28
|
+
%field{:name => "PIN"}<
|
29
|
+
D13
|
30
|
+
"""
|
31
|
+
かつ ブロックからソースコードを生成する
|
32
|
+
|
33
|
+
ならば テキストエディタのプログラムは以下であること:
|
34
|
+
"""
|
35
|
+
require "smalruby"
|
36
|
+
|
37
|
+
car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
|
38
|
+
car1.led("D13").turn_on
|
39
|
+
|
40
|
+
"""
|
41
|
+
|
42
|
+
シナリオ: キャラクターとイベントとブロックを配置する
|
43
|
+
もし 次のブロックを配置する:
|
44
|
+
"""
|
45
|
+
%block{:type => "character_new", :x => "21", :y => "15"}
|
46
|
+
%field{:name => "NAME"}<
|
47
|
+
car1
|
48
|
+
%statement{:name => "DO"}
|
49
|
+
%block{:type => "events_on_start"}
|
50
|
+
%statement{:name => "DO"}
|
51
|
+
%block{:type => "hardware_led_turn_on", :x => "0", :y => "0"}
|
52
|
+
%field{:name => "PIN"}<
|
53
|
+
D13
|
54
|
+
"""
|
55
|
+
かつ ブロックからソースコードを生成する
|
56
|
+
|
57
|
+
ならば テキストエディタのプログラムは以下であること:
|
58
|
+
"""
|
59
|
+
require "smalruby"
|
60
|
+
|
61
|
+
car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
|
62
|
+
|
63
|
+
car1.on(:start) do
|
64
|
+
led("D13").turn_on
|
65
|
+
end
|
66
|
+
|
67
|
+
"""
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# language: ja
|
3
|
+
@javascript
|
4
|
+
機能: hardware_rgb_led_set_color block
|
5
|
+
背景:
|
6
|
+
前提 "ブロック" タブを表示する
|
7
|
+
かつ キャラクターcar1を追加する
|
8
|
+
|
9
|
+
シナリオ: ブロックのみ配置する
|
10
|
+
もし 次のブロックを配置する:
|
11
|
+
"""
|
12
|
+
%block{:type => "hardware_rgb_led_set_color", :x => "0", :y => "0"}
|
13
|
+
%field{:name => "AC"}<
|
14
|
+
anode
|
15
|
+
%field{:name => "PIN"}<
|
16
|
+
D3
|
17
|
+
%field{:name => "COLOUR"}<
|
18
|
+
\#808080
|
19
|
+
"""
|
20
|
+
かつ ブロックからソースコードを生成する
|
21
|
+
|
22
|
+
ならば テキストエディタのプログラムは "" であること
|
23
|
+
|
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 => "hardware_rgb_led_set_color", :x => "0", :y => "0"}
|
32
|
+
%field{:name => "AC"}<
|
33
|
+
anode
|
34
|
+
%field{:name => "PIN"}<
|
35
|
+
D3
|
36
|
+
%field{:name => "COLOUR"}<
|
37
|
+
\#808080
|
38
|
+
"""
|
39
|
+
かつ ブロックからソースコードを生成する
|
40
|
+
|
41
|
+
ならば テキストエディタのプログラムは以下であること:
|
42
|
+
"""
|
43
|
+
require "smalruby"
|
44
|
+
|
45
|
+
car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
|
46
|
+
car1.rgb_led_anode("D3").color = [128, 128, 128]
|
47
|
+
|
48
|
+
"""
|
49
|
+
|
50
|
+
シナリオ: キャラクターとイベントとブロックを配置する
|
51
|
+
もし 次のブロックを配置する:
|
52
|
+
"""
|
53
|
+
%block{:type => "character_new", :x => "21", :y => "15"}
|
54
|
+
%field{:name => "NAME"}<
|
55
|
+
car1
|
56
|
+
%statement{:name => "DO"}
|
57
|
+
%block{:type => "events_on_start"}
|
58
|
+
%statement{:name => "DO"}
|
59
|
+
%block{:type => "hardware_rgb_led_set_color", :x => "0", :y => "0"}
|
60
|
+
%field{:name => "AC"}<
|
61
|
+
anode
|
62
|
+
%field{:name => "PIN"}<
|
63
|
+
D3
|
64
|
+
%field{:name => "COLOUR"}<
|
65
|
+
\#808080
|
66
|
+
"""
|
67
|
+
かつ ブロックからソースコードを生成する
|
68
|
+
|
69
|
+
ならば テキストエディタのプログラムは以下であること:
|
70
|
+
"""
|
71
|
+
require "smalruby"
|
72
|
+
|
73
|
+
car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
|
74
|
+
|
75
|
+
car1.on(:start) do
|
76
|
+
self.rgb_led_anode("D3").color = [128, 128, 128]
|
77
|
+
end
|
78
|
+
|
79
|
+
"""
|
@@ -1,18 +1,17 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# language: ja
|
3
3
|
@javascript
|
4
|
-
機能:
|
4
|
+
機能: hardware_rgb_led_turn_off block
|
5
5
|
背景:
|
6
6
|
前提 "ブロック" タブを表示する
|
7
|
-
かつ
|
8
|
-
| name | costumes | x | y | angle |
|
9
|
-
| car1 | car1.png | 0 | 0 | 0 |
|
7
|
+
かつ キャラクターcar1を追加する
|
10
8
|
|
11
|
-
シナリオ:
|
12
|
-
|
13
|
-
もし 次のブロック("hardware_button_not_use_pullup")を配置する:
|
9
|
+
シナリオ: ブロックのみ配置する
|
10
|
+
もし 次のブロックを配置する:
|
14
11
|
"""
|
15
|
-
%block{:type => "
|
12
|
+
%block{:type => "hardware_rgb_led_turn_off", :x => "0", :y => "0"}
|
13
|
+
%field{:name => "AC"}<
|
14
|
+
anode
|
16
15
|
%field{:name => "PIN"}<
|
17
16
|
D3
|
18
17
|
"""
|
@@ -20,26 +19,32 @@
|
|
20
19
|
|
21
20
|
ならば テキストエディタのプログラムは "" であること
|
22
21
|
|
23
|
-
|
24
|
-
もし
|
22
|
+
シナリオ: キャラクターとブロックを配置する
|
23
|
+
もし 次のブロックを配置する:
|
25
24
|
"""
|
26
25
|
%block{:type => "character_new", :x => "21", :y => "15"}
|
27
26
|
%field{:name => "NAME"}<
|
28
27
|
car1
|
29
28
|
%statement{:name => "DO"}
|
30
|
-
%block{:type => "
|
29
|
+
%block{:type => "hardware_rgb_led_turn_off", :x => "0", :y => "0"}
|
30
|
+
%field{:name => "AC"}<
|
31
|
+
anode
|
31
32
|
%field{:name => "PIN"}<
|
32
33
|
D3
|
33
34
|
"""
|
34
35
|
かつ ブロックからソースコードを生成する
|
35
36
|
|
36
|
-
ならば
|
37
|
+
ならば テキストエディタのプログラムは以下であること:
|
37
38
|
"""
|
38
|
-
|
39
|
+
require "smalruby"
|
40
|
+
|
41
|
+
car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
|
42
|
+
car1.rgb_led_anode("D3").turn_off
|
43
|
+
|
39
44
|
"""
|
40
45
|
|
41
|
-
|
42
|
-
もし
|
46
|
+
シナリオ: キャラクターとイベントとブロックを配置する
|
47
|
+
もし 次のブロックを配置する:
|
43
48
|
"""
|
44
49
|
%block{:type => "character_new", :x => "21", :y => "15"}
|
45
50
|
%field{:name => "NAME"}<
|
@@ -47,15 +52,22 @@
|
|
47
52
|
%statement{:name => "DO"}
|
48
53
|
%block{:type => "events_on_start"}
|
49
54
|
%statement{:name => "DO"}
|
50
|
-
%block{:type => "
|
55
|
+
%block{:type => "hardware_rgb_led_turn_off", :x => "0", :y => "0"}
|
56
|
+
%field{:name => "AC"}<
|
57
|
+
anode
|
51
58
|
%field{:name => "PIN"}<
|
52
59
|
D3
|
53
60
|
"""
|
54
61
|
かつ ブロックからソースコードを生成する
|
55
62
|
|
56
|
-
ならば
|
63
|
+
ならば テキストエディタのプログラムは以下であること:
|
57
64
|
"""
|
65
|
+
require "smalruby"
|
66
|
+
|
67
|
+
car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
|
68
|
+
|
58
69
|
car1.on(:start) do
|
59
|
-
|
70
|
+
rgb_led_anode("D3").turn_off
|
60
71
|
end
|
72
|
+
|
61
73
|
"""
|
@@ -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
|
+
"""
|