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.
- 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/public/assets/{application-fda71a642d958ffbaf90185c471d6e51.js → application-b305a6ea9e7c045a8e170bbf6fb09dd1.js} +3 -3
- data/public/assets/{application-fda71a642d958ffbaf90185c471d6e51.js.gz → application-b305a6ea9e7c045a8e170bbf6fb09dd1.js.gz} +0 -0
- data/public/assets/{manifest-1a9856df207640ec658271db34b30dbb.json → manifest-ebd584fa603a378faf780f013e6a447d.json} +1 -1
- data/public/assets/msg/en_us-c6f8f0084f38560bf933b742ede64a52.js +1 -0
- data/public/assets/msg/en_us-c6f8f0084f38560bf933b742ede64a52.js.gz +0 -0
- data/public/assets/msg/ja-3703e6ceebd04ae1f08b0e871800539d.js +1 -0
- data/public/assets/msg/ja-3703e6ceebd04ae1f08b0e871800539d.js.gz +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/public/assets/msg/en_us-893d970ff8061fbe7459f009582c4df5.js +0 -1
- data/public/assets/msg/en_us-893d970ff8061fbe7459f009582c4df5.js.gz +0 -0
- data/public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js +0 -1
- data/public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js.gz +0 -0
- 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
@@ -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
|
+
"""
|