rapid-router 5.4.1__py2.py3-none-any.whl → 7.6.8__py2.py3-none-any.whl
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.
- example_project/rapid_router_test_settings.py +164 -0
- example_project/settings.py +152 -0
- example_project/urls.py +15 -0
- example_project/{example_project/wsgi.py → wsgi.py} +2 -1
- game/__init__.py +1 -1
- game/admin.py +43 -4
- game/app_settings.py +3 -7
- game/character.py +26 -18
- game/decor.py +172 -97
- game/end_to_end_tests/base_game_test.py +44 -33
- game/end_to_end_tests/editor_page.py +17 -2
- game/end_to_end_tests/game_page.py +127 -45
- game/end_to_end_tests/selenium_test_case.py +1 -20
- game/end_to_end_tests/test_cow_crashes.py +3 -5
- game/end_to_end_tests/test_language_dropdown.py +14 -0
- game/end_to_end_tests/test_level_editor.py +290 -0
- game/end_to_end_tests/test_level_failures.py +1 -1
- game/end_to_end_tests/test_level_selection.py +79 -0
- game/end_to_end_tests/test_play_through.py +240 -102
- game/end_to_end_tests/test_python_levels.py +44 -13
- game/end_to_end_tests/test_saving_workspace.py +22 -0
- game/forms.py +9 -2
- game/level_management.py +38 -29
- game/messages.py +1218 -203
- game/migrations/0001_squashed_0025_levels_ordering_pt1.py +19 -1
- game/migrations/0026_levels_pt2.py +13 -2
- game/migrations/0032_cannot_turn_left_level.py +13 -2
- game/migrations/0033_recursion_level.py +13 -2
- game/migrations/0034_joes_level.py +13 -2
- game/migrations/0035_disable_route_score_level_70.py +0 -2
- game/migrations/0036_level_score_73.py +0 -2
- game/migrations/0037_level_score_79.py +0 -2
- game/migrations/0038_level_score_40.py +0 -1
- game/migrations/0042_level_score_73.py +0 -2
- game/migrations/0048_add_cow_field_and_blocks.py +0 -2
- game/migrations/0049_level_score_34.py +0 -2
- game/migrations/0050_level_score_40.py +0 -2
- game/migrations/0051_level_score_49.py +0 -1
- game/migrations/0076_level_locked_for_class.py +19 -0
- game/migrations/0077_alter_level_next_level.py +52 -0
- game/migrations/0078_add_block_types.py +23 -0
- game/migrations/0079_populate_block_type_add_cow_blocks.py +60 -0
- game/migrations/0080_level_disable_algorithm_score.py +18 -0
- game/migrations/0081_first_12_levels_no_algo_score.py +29 -0
- game/migrations/0082_level_43_solution.py +16 -0
- game/migrations/0083_add_cows_to_existing_levels.py +195 -0
- game/migrations/0084_alter_block_block_type.py +18 -0
- game/migrations/0085_add_new_blocks.py +53 -0
- game/migrations/0086_loop_levels.py +482 -0
- game/migrations/0087_workspace_python_view_enabled.py +18 -0
- game/migrations/0088_rename_episodes.py +35 -0
- game/migrations/0089_episodes_in_development.py +30 -0
- game/migrations/0090_add_missing_model_solutions.py +144 -0
- game/migrations/0091_disable_algo_score_if_no_model_solution.py +46 -0
- game/migrations/0092_disable_algo_score_in_custom_levels.py +28 -0
- game/migrations/0093_alter_level_character_name.py +18 -0
- game/migrations/0094_add_hint_lesson_subtitle_to_levels.py +28 -0
- game/migrations/0095_level_commands.py +18 -0
- game/migrations/0096_alter_level_commands.py +18 -0
- game/migrations/0097_add_python_den_levels.py +1515 -0
- game/migrations/0098_add_episode_link_fields.py +44 -0
- game/migrations/0099_python_episodes_links.py +103 -0
- game/migrations/0100_reorder_python_levels.py +179 -0
- game/migrations/0101_rename_episodes.py +45 -0
- game/migrations/0102_reoder_episodes_13_14.py +136 -0
- game/migrations/0103_level_1015_solution.py +26 -0
- game/migrations/0104_remove_level_direct_drive.py +17 -0
- game/migrations/0105_delete_invalid_attempts.py +18 -0
- game/migrations/0106_fields_to_snake_case.py +48 -0
- game/migrations/0107_rename_worksheet_link_episode_student_worksheet_link.py +18 -0
- game/migrations/0108_episode_indy_worksheet_link.py +18 -0
- game/migrations/0109_create_episodes_23_and_24.py +99 -0
- game/migrations/0110_remove_episode_indy_worksheet_link_and_more.py +100 -0
- game/migrations/0111_create_worksheets.py +149 -0
- game/migrations/0112_worksheet_locked_classes.py +21 -0
- game/migrations/0113_level_needs_approval.py +18 -0
- game/migrations/0114_default_and_non_student_levels_no_approval.py +31 -0
- game/migrations/0115_level_level__default_does_not_need_approval.py +22 -0
- game/migrations/0116_update_worksheet_video_links.py +68 -0
- game/migrations/0117_update_solutions_to_if_else.py +61 -0
- game/models.py +157 -16
- game/permissions.py +34 -19
- game/python_den_urls.py +26 -0
- game/random_road.py +43 -127
- game/serializers.py +12 -17
- game/static/django_reverse_js/js/reverse.js +171 -0
- game/static/game/css/LilitaOne-Regular.ttf +0 -0
- game/static/game/css/backgrounds.css +14 -10
- game/static/game/css/dataTables.custom.css +4 -2
- game/static/game/css/dataTables.jqueryui.css +561 -320
- game/static/game/css/editor.css +47 -0
- game/static/game/css/game.css +43 -49
- game/static/game/css/game_screen.css +116 -53
- game/static/game/css/jquery.dataTables.css +455 -251
- game/static/game/css/level_editor.css +10 -1
- game/static/game/css/level_selection.css +32 -3
- game/static/game/css/level_share.css +6 -5
- game/static/game/css/skulpt/codemirror.css +1 -0
- game/static/game/image/Python_Den_hero_student.png +0 -0
- game/static/game/image/Python_levels_page.svg +1954 -0
- game/static/game/image/characters/front_view/Electric_van.svg +448 -0
- game/static/game/image/characters/top_view/Electric_van.svg +448 -0
- game/static/game/image/characters/top_view/Sleigh.svg +436 -0
- game/static/game/image/decor/city/solar_panel.svg +1200 -0
- game/static/game/image/decor/farm/solar_panel.svg +86 -0
- game/static/game/image/decor/grass/solar_panel.svg +86 -0
- game/static/game/image/decor/snow/barn.svg +1788 -0
- game/static/game/image/decor/snow/cfc.svg +1050 -147
- game/static/game/image/decor/snow/crops.svg +7370 -0
- game/static/game/image/decor/snow/hospital.svg +1220 -0
- game/static/game/image/decor/snow/house1.svg +971 -0
- game/static/game/image/decor/snow/house2.svg +1574 -0
- game/static/game/image/decor/snow/school.svg +1071 -0
- game/static/game/image/decor/snow/shop.svg +3211 -0
- game/static/game/image/decor/snow/solar_panel.svg +173 -0
- game/static/game/image/electric_van.svg +448 -0
- game/static/game/image/icons/add_house.svg +26 -0
- game/static/game/image/icons/delete_house.svg +26 -0
- game/static/game/image/icons/description.svg +1 -0
- game/static/game/image/icons/hint.svg +1 -0
- game/static/game/image/icons/if_else.svg +3 -0
- game/static/game/image/icons/python.svg +1 -1
- game/static/game/image/if_else_example.png +0 -0
- game/static/game/image/pigeon.svg +684 -0
- game/static/game/image/python_den_header.svg +19 -0
- game/static/game/js/animation.js +84 -28
- game/static/game/js/blockly/msg/js/bg.js +52 -1
- game/static/game/js/blockly/msg/js/ca.js +52 -1
- game/static/game/js/blockly/msg/js/en-gb.js +52 -1
- game/static/game/js/blockly/msg/js/en.js +52 -1
- game/static/game/js/blockly/msg/js/es.js +52 -1
- game/static/game/js/blockly/msg/js/fr.js +52 -1
- game/static/game/js/blockly/msg/js/hi.js +52 -1
- game/static/game/js/blockly/msg/js/it.js +52 -1
- game/static/game/js/blockly/msg/js/pl.js +52 -1
- game/static/game/js/blockly/msg/js/pt-br.js +52 -1
- game/static/game/js/blockly/msg/js/ru.js +52 -1
- game/static/game/js/blockly/msg/js/ur.js +52 -1
- game/static/game/js/blocklyCompiler.js +550 -392
- game/static/game/js/blocklyControl.js +335 -302
- game/static/game/js/blocklyCustomBlocks.js +691 -458
- game/static/game/js/blocklyCustomisations.js +3 -1
- game/static/game/js/button.js +12 -0
- game/static/game/js/cow.js +15 -130
- game/static/game/js/drawing.js +313 -201
- game/static/game/js/editor.js +23 -0
- game/static/game/js/game.js +148 -139
- game/static/game/js/jquery.dataTables.min.js +3 -159
- game/static/game/js/level_editor.js +823 -448
- game/static/game/js/level_moderation.js +33 -2
- game/static/game/js/level_selection.js +62 -25
- game/static/game/js/loadLanguages.js +21 -0
- game/static/game/js/map.js +106 -36
- game/static/game/js/model.js +55 -107
- game/static/game/js/pathFinder.js +73 -72
- game/static/game/js/program.js +184 -193
- game/static/game/js/pythonControl.js +14 -1
- game/static/game/js/scoreboard.js +0 -37
- game/static/game/js/scoreboardSharedLevels.js +48 -0
- game/static/game/js/sharing.js +22 -10
- game/static/game/js/skulpt/codemirror.js +5 -4
- game/static/game/js/skulpt/skulpt-stdlib.js +1 -1
- game/static/game/js/sound.js +52 -5
- game/static/game/js/van.js +0 -7
- game/static/game/raphael_image/characters/top_view/Electric_van.svg +448 -0
- game/static/game/raphael_image/characters/top_view/Sleigh.svg +436 -0
- game/static/game/raphael_image/decor/city/solar_panel.svg +1200 -0
- game/static/game/raphael_image/decor/farm/solar_panel.svg +86 -0
- game/static/game/raphael_image/decor/grass/solar_panel.svg +86 -0
- game/static/game/raphael_image/decor/snow/barn.svg +1788 -0
- game/static/game/raphael_image/decor/snow/cfc.svg +1050 -147
- game/static/game/raphael_image/decor/snow/crops.svg +7370 -0
- game/static/game/raphael_image/decor/snow/hospital.svg +1220 -0
- game/static/game/raphael_image/decor/snow/house1.svg +971 -0
- game/static/game/raphael_image/decor/snow/house2.svg +1574 -0
- game/static/game/raphael_image/decor/snow/school.svg +1071 -0
- game/static/game/raphael_image/decor/snow/shop.svg +3211 -0
- game/static/game/raphael_image/decor/snow/solar_panel.svg +173 -0
- game/static/game/raphael_image/pigeon.svg +685 -0
- game/static/game/raphael_image/sleigh_wreckage.svg +430 -0
- game/static/game/sass/game.scss +22 -6
- game/static/game/sound/clown_horn.mp3 +0 -0
- game/static/game/sound/clown_horn.ogg +0 -0
- game/static/game/sound/electric_van_starting.mp3 +0 -0
- game/static/game/sound/electric_van_starting.ogg +0 -0
- game/static/game/sound/pigeon.mp3 +0 -0
- game/static/game/sound/pigeon.ogg +0 -0
- game/static/game/sound/sleigh_bells.mp3 +0 -0
- game/static/game/sound/sleigh_bells.ogg +0 -0
- game/static/game/sound/sleigh_crash.mp3 +0 -0
- game/static/game/sound/sleigh_crash.ogg +0 -0
- game/templates/game/base.html +35 -15
- game/templates/game/basenonav.html +23 -17
- game/templates/game/game.html +236 -111
- game/templates/game/level_editor.html +353 -275
- game/templates/game/level_moderation.html +19 -6
- game/templates/game/level_selection.html +75 -62
- game/templates/game/python_den_level_selection.html +291 -0
- game/templates/game/python_den_worksheet.html +101 -0
- game/templates/game/scoreboard.html +88 -65
- game/tests/test_level_editor.py +210 -35
- game/tests/test_level_moderation.py +6 -20
- game/tests/test_level_selection.py +332 -11
- game/tests/test_python_den_worksheet.py +85 -0
- game/tests/test_scoreboard.py +258 -66
- game/tests/utils/level.py +43 -3
- game/tests/utils/teacher.py +2 -2
- game/theme.py +21 -21
- game/urls.py +125 -78
- game/views/language_code_conversions.py +90 -0
- game/views/level.py +201 -63
- game/views/level_editor.py +109 -48
- game/views/level_moderation.py +29 -6
- game/views/level_selection.py +179 -56
- game/views/level_solutions.py +600 -106
- game/views/scoreboard.py +181 -66
- game/views/worksheet.py +25 -0
- rapid_router-7.6.8.dist-info/METADATA +174 -0
- {rapid_router-5.4.1.dist-info → rapid_router-7.6.8.dist-info}/RECORD +222 -242
- {rapid_router-5.4.1.dist-info → rapid_router-7.6.8.dist-info}/WHEEL +1 -1
- rapid_router-7.6.8.dist-info/licenses/LICENSE.md +3 -0
- example_project/example_project/__init__.py +0 -1
- example_project/example_project/settings.py +0 -54
- example_project/example_project/urls.py +0 -16
- example_project/manage.py +0 -10
- game/autoconfig.py +0 -59
- game/csp_config.py +0 -23
- game/locale/ar_SA/LC_MESSAGES/django.mo +0 -0
- game/locale/ar_SA/LC_MESSAGES/django.po +0 -405
- game/locale/ar_SA/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/ar_SA/LC_MESSAGES/djangojs.po +0 -743
- game/locale/bg_BG/LC_MESSAGES/django.mo +0 -0
- game/locale/bg_BG/LC_MESSAGES/django.po +0 -405
- game/locale/bg_BG/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/bg_BG/LC_MESSAGES/djangojs.po +0 -739
- game/locale/ca_ES/LC_MESSAGES/django.mo +0 -0
- game/locale/ca_ES/LC_MESSAGES/django.po +0 -405
- game/locale/ca_ES/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/ca_ES/LC_MESSAGES/djangojs.po +0 -740
- game/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
- game/locale/cs_CZ/LC_MESSAGES/django.po +0 -405
- game/locale/cs_CZ/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/cs_CZ/LC_MESSAGES/djangojs.po +0 -741
- game/locale/cy_GB/LC_MESSAGES/django.mo +0 -0
- game/locale/cy_GB/LC_MESSAGES/django.po +0 -405
- game/locale/cy_GB/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/cy_GB/LC_MESSAGES/djangojs.po +0 -743
- game/locale/de_DE/LC_MESSAGES/django.mo +0 -0
- game/locale/de_DE/LC_MESSAGES/django.po +0 -405
- game/locale/de_DE/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/de_DE/LC_MESSAGES/djangojs.po +0 -739
- game/locale/el_GR/LC_MESSAGES/django.mo +0 -0
- game/locale/el_GR/LC_MESSAGES/django.po +0 -405
- game/locale/el_GR/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/el_GR/LC_MESSAGES/djangojs.po +0 -739
- game/locale/en_GB/LC_MESSAGES/django.mo +0 -0
- game/locale/en_GB/LC_MESSAGES/django.po +0 -405
- game/locale/en_GB/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/en_GB/LC_MESSAGES/djangojs.po +0 -739
- game/locale/es_ES/LC_MESSAGES/django.mo +0 -0
- game/locale/es_ES/LC_MESSAGES/django.po +0 -405
- game/locale/es_ES/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/es_ES/LC_MESSAGES/djangojs.po +0 -739
- game/locale/fi_FI/LC_MESSAGES/django.mo +0 -0
- game/locale/fi_FI/LC_MESSAGES/django.po +0 -405
- game/locale/fi_FI/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/fi_FI/LC_MESSAGES/djangojs.po +0 -739
- game/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
- game/locale/fr_FR/LC_MESSAGES/django.po +0 -405
- game/locale/fr_FR/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/fr_FR/LC_MESSAGES/djangojs.po +0 -739
- game/locale/gu_IN/LC_MESSAGES/django.mo +0 -0
- game/locale/gu_IN/LC_MESSAGES/django.po +0 -405
- game/locale/gu_IN/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/gu_IN/LC_MESSAGES/djangojs.po +0 -739
- game/locale/hi_IN/LC_MESSAGES/django.mo +0 -0
- game/locale/hi_IN/LC_MESSAGES/django.po +0 -405
- game/locale/hi_IN/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/hi_IN/LC_MESSAGES/djangojs.po +0 -739
- game/locale/id_ID/LC_MESSAGES/django.mo +0 -0
- game/locale/id_ID/LC_MESSAGES/django.po +0 -405
- game/locale/id_ID/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/id_ID/LC_MESSAGES/djangojs.po +0 -738
- game/locale/it_IT/LC_MESSAGES/django.mo +0 -0
- game/locale/it_IT/LC_MESSAGES/django.po +0 -405
- game/locale/it_IT/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/it_IT/LC_MESSAGES/djangojs.po +0 -739
- game/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
- game/locale/ja_JP/LC_MESSAGES/django.po +0 -405
- game/locale/ja_JP/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/ja_JP/LC_MESSAGES/djangojs.po +0 -738
- game/locale/lol_US/LC_MESSAGES/django.mo +0 -0
- game/locale/lol_US/LC_MESSAGES/django.po +0 -405
- game/locale/lol_US/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/lol_US/LC_MESSAGES/djangojs.po +0 -739
- game/locale/nb_NO/LC_MESSAGES/django.mo +0 -0
- game/locale/nb_NO/LC_MESSAGES/django.po +0 -405
- game/locale/nb_NO/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/nb_NO/LC_MESSAGES/djangojs.po +0 -739
- game/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
- game/locale/nl_NL/LC_MESSAGES/django.po +0 -405
- game/locale/nl_NL/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/nl_NL/LC_MESSAGES/djangojs.po +0 -739
- game/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
- game/locale/pl_PL/LC_MESSAGES/django.po +0 -405
- game/locale/pl_PL/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/pl_PL/LC_MESSAGES/djangojs.po +0 -741
- game/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- game/locale/pt_BR/LC_MESSAGES/django.po +0 -405
- game/locale/pt_BR/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/pt_BR/LC_MESSAGES/djangojs.po +0 -739
- game/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
- game/locale/pt_PT/LC_MESSAGES/django.po +0 -405
- game/locale/pt_PT/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/pt_PT/LC_MESSAGES/djangojs.po +0 -739
- game/locale/ro_RO/LC_MESSAGES/django.mo +0 -0
- game/locale/ro_RO/LC_MESSAGES/django.po +0 -405
- game/locale/ro_RO/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/ro_RO/LC_MESSAGES/djangojs.po +0 -740
- game/locale/ru_RU/LC_MESSAGES/django.mo +0 -0
- game/locale/ru_RU/LC_MESSAGES/django.po +0 -405
- game/locale/ru_RU/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/ru_RU/LC_MESSAGES/djangojs.po +0 -741
- game/locale/sv_SE/LC_MESSAGES/django.mo +0 -0
- game/locale/sv_SE/LC_MESSAGES/django.po +0 -405
- game/locale/sv_SE/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/sv_SE/LC_MESSAGES/djangojs.po +0 -739
- game/locale/tl_PH/LC_MESSAGES/django.mo +0 -0
- game/locale/tl_PH/LC_MESSAGES/django.po +0 -405
- game/locale/tl_PH/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/tl_PH/LC_MESSAGES/djangojs.po +0 -739
- game/locale/tlh_AA/LC_MESSAGES/django.mo +0 -0
- game/locale/tlh_AA/LC_MESSAGES/django.po +0 -405
- game/locale/tlh_AA/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/tlh_AA/LC_MESSAGES/djangojs.po +0 -739
- game/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
- game/locale/tr_TR/LC_MESSAGES/django.po +0 -405
- game/locale/tr_TR/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/tr_TR/LC_MESSAGES/djangojs.po +0 -740
- game/locale/ur_IN/LC_MESSAGES/django.mo +0 -0
- game/locale/ur_IN/LC_MESSAGES/django.po +0 -405
- game/locale/ur_IN/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/ur_IN/LC_MESSAGES/djangojs.po +0 -739
- game/locale/ur_PK/LC_MESSAGES/django.mo +0 -0
- game/locale/ur_PK/LC_MESSAGES/django.po +0 -405
- game/locale/ur_PK/LC_MESSAGES/djangojs.mo +0 -0
- game/locale/ur_PK/LC_MESSAGES/djangojs.po +0 -739
- game/static/game/image/actions/go.svg +0 -18
- game/static/game/image/icons/destination.svg +0 -9
- game/static/game/js/pqselect.min.js +0 -9
- game/static/game/js/widget-scroller.js +0 -906
- rapid_router-5.4.1.dist-info/LICENSE.md +0 -577
- rapid_router-5.4.1.dist-info/METADATA +0 -24
- {rapid_router-5.4.1.dist-info → rapid_router-7.6.8.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<svg width="1440" height="41" viewBox="0 0 1440 41" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_1836_1252)">
|
|
3
|
+
<rect width="1440" height="41" fill="#1E30A6"/>
|
|
4
|
+
<path d="M1146.39 -2.60795L1149 -9.65065C1149.17 -10.1164 1149.83 -10.1164 1150 -9.65065L1152.61 -2.60779L1159.65 -0.00171947C1160.12 0.170583 1160.12 0.829576 1159.65 1.00188L1152.61 3.60795L1150 10.6508C1149.83 11.1166 1149.17 11.1166 1149 10.6508L1146.39 3.60795L1139.35 1.00188C1138.88 0.829576 1138.88 0.170583 1139.35 -0.00171947L1146.39 -2.60779L1146.39 -2.60795Z" fill="white"/>
|
|
5
|
+
<path d="M965.392 18.392L967.998 11.3493C968.17 10.8836 968.829 10.8836 969.002 11.3493L971.608 18.3922L978.651 20.9983C979.116 21.1706 979.116 21.8296 978.651 22.0019L971.608 24.608L969.002 31.6508C968.829 32.1166 968.17 32.1166 967.998 31.6508L965.392 24.608L958.349 22.0019C957.884 21.8296 957.884 21.1706 958.349 20.9983L965.392 18.3922L965.392 18.392Z" fill="white"/>
|
|
6
|
+
<path d="M322.392 36.392L324.998 29.3493C325.17 28.8836 325.829 28.8836 326.002 29.3493L328.608 36.3922L335.651 38.9983C336.116 39.1706 336.116 39.8296 335.651 40.0019L328.608 42.608L326.002 49.6508C325.829 50.1166 325.17 50.1166 324.998 49.6508L322.392 42.608L315.349 40.0019C314.884 39.8296 314.884 39.1706 315.349 38.9983L322.392 36.3922L322.392 36.392Z" fill="white"/>
|
|
7
|
+
<path d="M1349 34.9998L1349 6.00001L1320 6.00001C1320 22.0174 1332.98 34.9998 1349 34.9998Z" fill="#213CE7"/>
|
|
8
|
+
<path d="M1244.86 19.8721C1252.37 19.8721 1252.37 30.8962 1259.88 30.8962C1267.39 30.8962 1267.4 19.8721 1274.91 19.8721C1282.42 19.8721 1282.42 30.8962 1289.93 30.8962C1297.44 30.8962 1297.44 19.8721 1304.95 19.8721C1312.47 19.8721 1312.47 30.8962 1319.98 30.8962C1327.49 30.8962 1327.49 19.8721 1335 19.8721" stroke="#D841C3" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
|
9
|
+
<path d="M1244.86 31.7442L1221 22.1552V17.6461L1244.86 8V11.9954L1224.94 19.8721L1244.86 27.7488V31.7442Z" fill="#F5CD50"/>
|
|
10
|
+
<path d="M183 10L204 18.4808V22.4687L183 31L183 27.4663L200.535 20.5L183 13.5337L183 10Z" fill="#D841C3"/>
|
|
11
|
+
<path d="M99 19C105.667 19 105.667 29 112.333 29C118.999 29 119 19 125.666 19C132.332 19 132.333 29 139 29C145.666 29 145.666 19 152.333 19C159 19 159 29 165.666 29C172.332 29 172.333 19 179 19" stroke="#F5CD50" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
|
12
|
+
<path d="M464 20V44H488C488 30.7441 477.256 20 464 20Z" fill="#F6BE00"/>
|
|
13
|
+
</g>
|
|
14
|
+
<defs>
|
|
15
|
+
<clipPath id="clip0_1836_1252">
|
|
16
|
+
<rect width="1440" height="41" fill="white"/>
|
|
17
|
+
</clipPath>
|
|
18
|
+
</defs>
|
|
19
|
+
</svg>
|
game/static/game/js/animation.js
CHANGED
|
@@ -16,24 +16,39 @@ ocargo.Animation = function(model, decor, drawing) {
|
|
|
16
16
|
|
|
17
17
|
this.setAnimationDuration(this.REGULAR_ANIMATION_DURATION);
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.drawing.renderDecor(this.decor);
|
|
25
|
-
this.drawing.renderOrigin(this.model.map.startingPosition());
|
|
26
|
-
this.drawing.renderDestinations(this.model.map.getDestinations());
|
|
27
|
-
this.drawing.renderTrafficLights(this.model.trafficLights);
|
|
19
|
+
// timer identifier for pausing
|
|
20
|
+
this.playTimer = -1;
|
|
21
|
+
|
|
22
|
+
this.drawing.clearPaper();
|
|
23
|
+
this.drawing.renderMap(this.model.map);
|
|
28
24
|
this.drawing.renderCharacter();
|
|
25
|
+
this.drawing.renderDecor(this.decor);
|
|
26
|
+
this.drawing.renderOrigin(this.model.map.startingPosition());
|
|
27
|
+
this.drawing.renderDestinations(this.model.map.getDestinations());
|
|
28
|
+
this.drawing.renderTrafficLights(this.model.trafficLights);
|
|
29
|
+
|
|
30
|
+
this.addCows();
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
this._updateFuelGauge(100);
|
|
31
33
|
};
|
|
32
34
|
|
|
33
35
|
ocargo.Animation.prototype.isFinished = function() {
|
|
34
36
|
return this.finished;
|
|
35
37
|
};
|
|
36
38
|
|
|
39
|
+
ocargo.Animation.prototype.addCows = function() {
|
|
40
|
+
let cows = this.model.cows;
|
|
41
|
+
|
|
42
|
+
for (let i = 0 ; i < cows.length ; i++){
|
|
43
|
+
let cow = cows[i];
|
|
44
|
+
for (let j = 0; j < cow.coordinates.length; j++) {
|
|
45
|
+
const cowImage = this.drawing.renderCow(cow.id, cow.coordinates[j], cow.potentialNodes[j], 0, cow.type);
|
|
46
|
+
this.numberOfCowsOnMap++;
|
|
47
|
+
this.activeCows.push(cowImage);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
37
52
|
ocargo.Animation.prototype.removeCows = function() {
|
|
38
53
|
for (var i = 0; i < this.activeCows.length; i++) {
|
|
39
54
|
this.drawing.removeCow(this.activeCows[i]);
|
|
@@ -60,6 +75,7 @@ ocargo.Animation.prototype.resetAnimation = function() {
|
|
|
60
75
|
}
|
|
61
76
|
|
|
62
77
|
this.removeCows();
|
|
78
|
+
this.addCows();
|
|
63
79
|
|
|
64
80
|
for(var i = 0; i < this.model.map.destinations.length; i++) {
|
|
65
81
|
var destination = this.model.map.destinations[i];
|
|
@@ -112,7 +128,7 @@ ocargo.Animation.prototype.stepAnimation = function(callback) {
|
|
|
112
128
|
var animation = timestampQueue.shift();
|
|
113
129
|
var delay = this.performAnimation(animation);
|
|
114
130
|
if (this.crashed && delay != 0) {
|
|
115
|
-
//Special case for crashing into cow as the van travel less before crashing
|
|
131
|
+
// Special case for crashing into cow as the van travel less before crashing
|
|
116
132
|
maxDelay = delay;
|
|
117
133
|
} else {
|
|
118
134
|
maxDelay = Math.max(maxDelay, delay);
|
|
@@ -151,6 +167,18 @@ ocargo.Animation.prototype.playAnimation = function() {
|
|
|
151
167
|
if (!this.currentlyAnimating && !this.isPlaying && this.animationQueue.length > 0) {
|
|
152
168
|
this.isPlaying = true;
|
|
153
169
|
this.stepAnimation(undefined);
|
|
170
|
+
|
|
171
|
+
let gauge_text = document.getElementById("Text_percentage");
|
|
172
|
+
let gauge_text_value = document.getElementById("Text_percentage_value");
|
|
173
|
+
let gauge_charge_circle = document.getElementById("f");
|
|
174
|
+
let gauge_emptying_circle = document.getElementById("emptying_circle");
|
|
175
|
+
|
|
176
|
+
gauge_text.setAttribute("transform", "translate(42.3 48.2)");
|
|
177
|
+
gauge_text.setAttribute("fill", "#4ba0dd");
|
|
178
|
+
gauge_text_value.textContent = "100%";
|
|
179
|
+
gauge_charge_circle.setAttribute("fill", "#4ba0dd");
|
|
180
|
+
gauge_emptying_circle.setAttribute("stroke-dashoffset", 273.18);
|
|
181
|
+
gauge_emptying_circle.setAttribute("transform", "rotate(90, 59.79, 59.79)");
|
|
154
182
|
}
|
|
155
183
|
};
|
|
156
184
|
|
|
@@ -211,6 +239,9 @@ ocargo.Animation.prototype.performAnimation = function(animation) {
|
|
|
211
239
|
case 'WAIT':
|
|
212
240
|
this.drawing.wait();
|
|
213
241
|
break;
|
|
242
|
+
case 'SOUND_HORN':
|
|
243
|
+
this.drawing.wait();
|
|
244
|
+
break;
|
|
214
245
|
case 'PUFFUP':
|
|
215
246
|
this.scalingModifier.push(2);
|
|
216
247
|
break;
|
|
@@ -287,7 +318,14 @@ ocargo.Animation.prototype.performAnimation = function(animation) {
|
|
|
287
318
|
} else {
|
|
288
319
|
// If there exists next level, add animation button which redirects the user to that
|
|
289
320
|
if (NEXT_LEVEL_URL) {
|
|
290
|
-
|
|
321
|
+
if (NEXT_LEVEL_URL == "/pythonden/") {
|
|
322
|
+
buttons += ocargo.button.episodeRedirectButtonHtml('next_level_button', NEXT_LEVEL_URL, gettext('Next episode'), NEXT_EPISODE)
|
|
323
|
+
} else {
|
|
324
|
+
buttons += ocargo.button.redirectButtonHtml('next_level_button', NEXT_LEVEL_URL, gettext('Next level'))
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
else if (PREV_LEVEL_URL) {
|
|
328
|
+
buttons += ocargo.button.redirectButtonHtml('prev_level_button', PREV_LEVEL_URL, gettext('Previous level'));
|
|
291
329
|
} else {
|
|
292
330
|
/*
|
|
293
331
|
This is the last level of the episode. If there exists animation next episode, add button to
|
|
@@ -331,7 +369,7 @@ ocargo.Animation.prototype.performAnimation = function(animation) {
|
|
|
331
369
|
}
|
|
332
370
|
var otherMsg = "";
|
|
333
371
|
if (animation.popupHint) {
|
|
334
|
-
buttons += '<button class="navigation_button long_button" id="hintPopupBtn"><span>' + gettext('
|
|
372
|
+
buttons += '<button class="navigation_button long_button" id="hintPopupBtn"><span>' + gettext('Show hint') + '</span></button>';
|
|
335
373
|
otherMsg = '<div id="hintBtnPara">' + '</div><div id="hintText">' + HINT + '</div>';
|
|
336
374
|
}
|
|
337
375
|
ocargo.Drawing.startPopup(title, leadMsg, otherMsg, true, buttons);
|
|
@@ -346,15 +384,10 @@ ocargo.Animation.prototype.performAnimation = function(animation) {
|
|
|
346
384
|
case 'trafficlight':
|
|
347
385
|
this.drawing.transitionTrafficLight(animation.id, animation.colour, duration/2);
|
|
348
386
|
break;
|
|
349
|
-
case 'cow':
|
|
350
|
-
this.numberOfCowsOnMap++;
|
|
351
|
-
var activeCow = this.drawing.renderCow(animation.id, animation.coordinate, animation.node, duration, animation.cowType);
|
|
352
|
-
this.activeCows.push(activeCow);
|
|
353
|
-
break;
|
|
354
387
|
case 'cow_leave':
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
388
|
+
this.numberOfCowsOnMap--;
|
|
389
|
+
var cow = this._extractCowAt(animation.coordinate);
|
|
390
|
+
this.drawing.removeCow(cow, duration); // remove it from drawing
|
|
358
391
|
break;
|
|
359
392
|
case 'console':
|
|
360
393
|
ocargo.pythonControl.appendToConsole(animation.text);
|
|
@@ -366,7 +399,7 @@ ocargo.Animation.prototype.performAnimation = function(animation) {
|
|
|
366
399
|
ocargo.Animation.prototype._extractCowAt = function(coordinate) {
|
|
367
400
|
for (var i = 0; i < this.activeCows.length; i++) {
|
|
368
401
|
var cow = this.activeCows[i];
|
|
369
|
-
if (cow.coordinate
|
|
402
|
+
if (coordinate.equals(cow.coordinate)) {
|
|
370
403
|
this.activeCows.splice(i, 1); // remove cow from array
|
|
371
404
|
return cow;
|
|
372
405
|
}
|
|
@@ -374,16 +407,39 @@ ocargo.Animation.prototype._extractCowAt = function(coordinate) {
|
|
|
374
407
|
};
|
|
375
408
|
|
|
376
409
|
ocargo.Animation.prototype._updateFuelIfPresent = function(animation) {
|
|
377
|
-
if (typeof animation.fuel != 'undefined') {
|
|
410
|
+
if (typeof animation.fuel != 'undefined' && animation.fuel >= 0) {
|
|
378
411
|
this._updateFuelGauge(animation.fuel);
|
|
379
412
|
}
|
|
380
413
|
};
|
|
381
414
|
|
|
382
415
|
ocargo.Animation.prototype._updateFuelGauge = function(fuelPercentage) {
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
416
|
+
if (CHARACTER_NAME == "Electric van") {
|
|
417
|
+
let gaugeCircumference = 273.18;
|
|
418
|
+
let baseRotation = 270;
|
|
419
|
+
|
|
420
|
+
let offset = gaugeCircumference * (fuelPercentage / 100);
|
|
421
|
+
let rotation = 36 * (fuelPercentage / 10) - baseRotation;
|
|
422
|
+
|
|
423
|
+
let color = (fuelPercentage > 30) ? "#4ba0dd" : ((fuelPercentage > 10) ? "#ff7300" : "#ff3131");
|
|
424
|
+
let text_x = (fuelPercentage == 100) ? 42.3 : ((fuelPercentage >= 10) ? 45 : 50);
|
|
425
|
+
|
|
426
|
+
let gauge_text = document.getElementById("Text_percentage");
|
|
427
|
+
let gauge_text_value = document.getElementById("Text_percentage_value");
|
|
428
|
+
let gauge_charge_circle = document.getElementById("f");
|
|
429
|
+
let gauge_emptying_circle = document.getElementById("emptying_circle");
|
|
430
|
+
|
|
431
|
+
gauge_text.setAttribute("transform", "translate(" + text_x + " 48.2)");
|
|
432
|
+
gauge_text.setAttribute("fill", color);
|
|
433
|
+
gauge_text_value.textContent = fuelPercentage + "%";
|
|
434
|
+
gauge_charge_circle.setAttribute("fill", color);
|
|
435
|
+
gauge_emptying_circle.setAttribute("stroke-dashoffset", offset);
|
|
436
|
+
gauge_emptying_circle.setAttribute("transform", "rotate(" + rotation + ", 59.79, 59.79)");
|
|
437
|
+
} else {
|
|
438
|
+
var degrees = ((fuelPercentage / 100) * 240) - 120;
|
|
439
|
+
var rotation = 'rotate(' + degrees + 'deg)';
|
|
440
|
+
document.getElementById('fuelGaugePointer').style.transform = rotation;
|
|
441
|
+
document.getElementById('fuelGaugePointer').style.webkitTransform = rotation;
|
|
442
|
+
}
|
|
387
443
|
};
|
|
388
444
|
|
|
389
445
|
ocargo.Animation.prototype.serializeAnimationQueue = function(blocks){
|
|
@@ -440,4 +496,4 @@ ocargo.Animation.prototype.serializeAnimationQueue = function(blocks){
|
|
|
440
496
|
ocargo.Animation.prototype.setAnimationDuration = function(duration) {
|
|
441
497
|
this.animationDuration = duration;
|
|
442
498
|
this.drawing.setCharacterManoeuvreDuration(this.animationDuration);
|
|
443
|
-
};
|
|
499
|
+
};
|
|
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
|
|
|
433
433
|
Blockly.Msg["TEXTS_HUE"] = "160";
|
|
434
434
|
Blockly.Msg["PROCEDURES_HUE"] = "290";
|
|
435
435
|
Blockly.Msg["COLOUR_HUE"] = "20";
|
|
436
|
-
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
436
|
+
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
437
|
+
|
|
438
|
+
Blockly.Msg["START_TITLE"] = "Начало";
|
|
439
|
+
Blockly.Msg["START_TOOLTIP"] = "Началото на програмата"
|
|
440
|
+
Blockly.Msg["MOVE_FORWARDS_TITLE"] = "Премести напред";
|
|
441
|
+
Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "премества камиона напред";
|
|
442
|
+
Blockly.Msg["TURN_LEFT_TITLE"] = "Завий наляво";
|
|
443
|
+
Blockly.Msg["TURN_LEFT_TOOLTIP"] = "камионът прави ляв завой";
|
|
444
|
+
Blockly.Msg["TURN_RIGHT_TITLE"] = "Завий надясно";
|
|
445
|
+
Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "камионът прави десен завой";
|
|
446
|
+
Blockly.Msg["TURN_AROUND_TITLE"] = "Завърти се наобратно";
|
|
447
|
+
Blockly.Msg["TURN_AROUND_TOOLTIP"] = "камионът ще се движи в противоположна посока";
|
|
448
|
+
|
|
449
|
+
Blockly.Msg["WAIT_TITLE"] = "Изчакай";
|
|
450
|
+
Blockly.Msg["WAIT_TOOLTIP"] = "камионът стои неподвижно";
|
|
451
|
+
Blockly.Msg["DELIVER_TITLE"] = "Достави";
|
|
452
|
+
Blockly.Msg["DELIVER_TOOLTIP"] = "доставя стоките от камиона";
|
|
453
|
+
Blockly.Msg["SOUND_HORN_TITLE"] = "Свирни";
|
|
454
|
+
Blockly.Msg["SOUND_HORN_TOOLTIP"] = "включва клаксон за да плаши кравите";
|
|
455
|
+
|
|
456
|
+
Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "Има път направо";
|
|
457
|
+
Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "Има път наляво";
|
|
458
|
+
Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "Има път надясно";
|
|
459
|
+
Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "Червен светофар";
|
|
460
|
+
Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "зелен светофар";
|
|
461
|
+
Blockly.Msg["DEAD_END_TITLE"] = "Път без изход";
|
|
462
|
+
Blockly.Msg["AT_DESTINATION_TITLE"] = "На адреса";
|
|
463
|
+
Blockly.Msg["COW_CROSSING_TITLE"] = "Крави";
|
|
464
|
+
Blockly.Msg["PIGEON_CROSSING_TITLE"] = "гълъби";
|
|
465
|
+
|
|
466
|
+
Blockly.Msg["CALL_PROC_TITLE"] = "Изпълни";
|
|
467
|
+
Blockly.Msg["CALL_PROC_TOOLTIP"] = "изпълнява процедура";
|
|
468
|
+
Blockly.Msg["DECLARE_PROC_TITLE"] = "Дефинирай";
|
|
469
|
+
Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "прави";
|
|
470
|
+
Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "декларира процедура";
|
|
471
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "Повтори докато";
|
|
472
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "прави";
|
|
473
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "докато стойността е вярна, изпълнявай действията";
|
|
474
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "Повтори докато не";
|
|
475
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "прави";
|
|
476
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "изпълнявай действията, докато стойността не е вярна";
|
|
477
|
+
|
|
478
|
+
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "променлива";
|
|
479
|
+
Blockly.Msg["VARIABLES_SET_TITLE"] = "Задай на";
|
|
480
|
+
Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "стойност";
|
|
481
|
+
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "задаване на стойност на променлива";
|
|
482
|
+
Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "задаване на числена стойност на променлива";
|
|
483
|
+
Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "Увеличи";
|
|
484
|
+
Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "с";
|
|
485
|
+
Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "увеличаване на променлива";
|
|
486
|
+
Blockly.Msg["NUMBER_TITLE"] = "Число";
|
|
487
|
+
Blockly.Msg["NUMBER_TOOLTIP"] = "число";
|
|
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
|
|
|
433
433
|
Blockly.Msg["TEXTS_HUE"] = "160";
|
|
434
434
|
Blockly.Msg["PROCEDURES_HUE"] = "290";
|
|
435
435
|
Blockly.Msg["COLOUR_HUE"] = "20";
|
|
436
|
-
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
436
|
+
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
437
|
+
|
|
438
|
+
Blockly.Msg["START_TITLE"] = "Inici";
|
|
439
|
+
Blockly.Msg["START_TOOLTIP"] = "L’inici del programa"
|
|
440
|
+
Blockly.Msg["MOVE_FORWARDS_TITLE"] = "mou endavant";
|
|
441
|
+
Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "Mou la furgoneta endavant";
|
|
442
|
+
Blockly.Msg["TURN_LEFT_TITLE"] = "gira a l’esquerra";
|
|
443
|
+
Blockly.Msg["TURN_LEFT_TOOLTIP"] = "Gira la furgoneta cap a l’esquerra";
|
|
444
|
+
Blockly.Msg["TURN_RIGHT_TITLE"] = "gira a la dreta";
|
|
445
|
+
Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "Gira la furgoneta cap a la dreta";
|
|
446
|
+
Blockly.Msg["TURN_AROUND_TITLE"] = "canvia de sentit";
|
|
447
|
+
Blockly.Msg["TURN_AROUND_TOOLTIP"] = "Canvia de sentit la furgoneta";
|
|
448
|
+
|
|
449
|
+
Blockly.Msg["WAIT_TITLE"] = "espera";
|
|
450
|
+
Blockly.Msg["WAIT_TOOLTIP"] = "Deixa la furgoneta parada";
|
|
451
|
+
Blockly.Msg["DELIVER_TITLE"] = "entrega";
|
|
452
|
+
Blockly.Msg["DELIVER_TOOLTIP"] = "Entrega les mercaderies de la furgoneta";
|
|
453
|
+
Blockly.Msg["SOUND_HORN_TITLE"] = "fes sonar el clàxon";
|
|
454
|
+
Blockly.Msg["SOUND_HORN_TOOLTIP"] = "Fes sonar el clàxon per espantar les vaques";
|
|
455
|
+
|
|
456
|
+
Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "hi ha una carretera endavant";
|
|
457
|
+
Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "hi ha una carretera a l’esquerra";
|
|
458
|
+
Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "hi ha una carretera a la dreta";
|
|
459
|
+
Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "semàfor vermell";
|
|
460
|
+
Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "semàfor verd";
|
|
461
|
+
Blockly.Msg["DEAD_END_TITLE"] = "és carrer sense sortida";
|
|
462
|
+
Blockly.Msg["AT_DESTINATION_TITLE"] = "a destí";
|
|
463
|
+
Blockly.Msg["COW_CROSSING_TITLE"] = "vaques";
|
|
464
|
+
Blockly.Msg["PIGEON_CROSSING_TITLE"] = "coloms";
|
|
465
|
+
|
|
466
|
+
Blockly.Msg["CALL_PROC_TITLE"] = "Crida";
|
|
467
|
+
Blockly.Msg["CALL_PROC_TOOLTIP"] = "Crida un procediment";
|
|
468
|
+
Blockly.Msg["DECLARE_PROC_TITLE"] = "Defineix";
|
|
469
|
+
Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "Fes";
|
|
470
|
+
Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "Declara el procediment";
|
|
471
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "repeteix mentre";
|
|
472
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "fes";
|
|
473
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "Mentre un valor és cert, executa unes instruccions";
|
|
474
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "repeteix fins que";
|
|
475
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "fes";
|
|
476
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "Fins que un valor sigui cert, executa unes instruccions";
|
|
477
|
+
|
|
478
|
+
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Una variable";
|
|
479
|
+
Blockly.Msg["VARIABLES_SET_TITLE"] = "estableix";
|
|
480
|
+
Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "a";
|
|
481
|
+
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Estableix el valor d’una variable";
|
|
482
|
+
Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "Estableix un valor numèric per a una variable";
|
|
483
|
+
Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "incrementa";
|
|
484
|
+
Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "en";
|
|
485
|
+
Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "Incrementa el valor d’una variable";
|
|
486
|
+
Blockly.Msg["NUMBER_TITLE"] = "Nombre";
|
|
487
|
+
Blockly.Msg["NUMBER_TOOLTIP"] = "Un nombre";
|
|
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
|
|
|
433
433
|
Blockly.Msg["TEXTS_HUE"] = "160";
|
|
434
434
|
Blockly.Msg["PROCEDURES_HUE"] = "290";
|
|
435
435
|
Blockly.Msg["COLOUR_HUE"] = "20";
|
|
436
|
-
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
436
|
+
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
437
|
+
|
|
438
|
+
Blockly.Msg["START_TITLE"] = "Start";
|
|
439
|
+
Blockly.Msg["START_TOOLTIP"] = "The beginning of the program"
|
|
440
|
+
Blockly.Msg["MOVE_FORWARDS_TITLE"] = "move forwards";
|
|
441
|
+
Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "Move the van forwards";
|
|
442
|
+
Blockly.Msg["TURN_LEFT_TITLE"] = "turn left";
|
|
443
|
+
Blockly.Msg["TURN_LEFT_TOOLTIP"] = "Turn the van left";
|
|
444
|
+
Blockly.Msg["TURN_RIGHT_TITLE"] = "turn right";
|
|
445
|
+
Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "Turn the van right";
|
|
446
|
+
Blockly.Msg["TURN_AROUND_TITLE"] = "turn around";
|
|
447
|
+
Blockly.Msg["TURN_AROUND_TOOLTIP"] = "Turn the van around";
|
|
448
|
+
|
|
449
|
+
Blockly.Msg["WAIT_TITLE"] = "wait";
|
|
450
|
+
Blockly.Msg["WAIT_TOOLTIP"] = "Keep the van stationary";
|
|
451
|
+
Blockly.Msg["DELIVER_TITLE"] = "deliver";
|
|
452
|
+
Blockly.Msg["DELIVER_TOOLTIP"] = "Deliver the goods from the van";
|
|
453
|
+
Blockly.Msg["SOUND_HORN_TITLE"] = "sound horn";
|
|
454
|
+
Blockly.Msg["SOUND_HORN_TOOLTIP"] = "Sound the horn to scare away the cows";
|
|
455
|
+
|
|
456
|
+
Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "road exists forward";
|
|
457
|
+
Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "road exists left";
|
|
458
|
+
Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "road exists right";
|
|
459
|
+
Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "traffic light red";
|
|
460
|
+
Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "traffic light green";
|
|
461
|
+
Blockly.Msg["DEAD_END_TITLE"] = "is dead end";
|
|
462
|
+
Blockly.Msg["AT_DESTINATION_TITLE"] = "at destination";
|
|
463
|
+
Blockly.Msg["COW_CROSSING_TITLE"] = "cows";
|
|
464
|
+
Blockly.Msg["PIGEON_CROSSING_TITLE"] = "pigeons";
|
|
465
|
+
|
|
466
|
+
Blockly.Msg["CALL_PROC_TITLE"] = "Call";
|
|
467
|
+
Blockly.Msg["CALL_PROC_TOOLTIP"] = "Calls a procedure";
|
|
468
|
+
Blockly.Msg["DECLARE_PROC_TITLE"] = "Define";
|
|
469
|
+
Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "Do";
|
|
470
|
+
Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "Declares a procedure";
|
|
471
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "repeat while";
|
|
472
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "do";
|
|
473
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "While a value is true, do some statements";
|
|
474
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "repeat until";
|
|
475
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "do";
|
|
476
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "Until a value is true, do some statements";
|
|
477
|
+
|
|
478
|
+
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "A variable";
|
|
479
|
+
Blockly.Msg["VARIABLES_SET_TITLE"] = "set";
|
|
480
|
+
Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "to";
|
|
481
|
+
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Set a variable";
|
|
482
|
+
Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "Set a variable to a number";
|
|
483
|
+
Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "increment";
|
|
484
|
+
Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "by";
|
|
485
|
+
Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "Increment a variable";
|
|
486
|
+
Blockly.Msg["NUMBER_TITLE"] = "Number";
|
|
487
|
+
Blockly.Msg["NUMBER_TOOLTIP"] = "A number";
|
|
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
|
|
|
433
433
|
Blockly.Msg["TEXTS_HUE"] = "160";
|
|
434
434
|
Blockly.Msg["PROCEDURES_HUE"] = "290";
|
|
435
435
|
Blockly.Msg["COLOUR_HUE"] = "20";
|
|
436
|
-
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
436
|
+
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
437
|
+
|
|
438
|
+
Blockly.Msg["START_TITLE"] = "Start";
|
|
439
|
+
Blockly.Msg["START_TOOLTIP"] = "The beginning of the program"
|
|
440
|
+
Blockly.Msg["MOVE_FORWARDS_TITLE"] = "move forwards";
|
|
441
|
+
Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "Move the van forwards";
|
|
442
|
+
Blockly.Msg["TURN_LEFT_TITLE"] = "turn left";
|
|
443
|
+
Blockly.Msg["TURN_LEFT_TOOLTIP"] = "Turn the van left";
|
|
444
|
+
Blockly.Msg["TURN_RIGHT_TITLE"] = "turn right";
|
|
445
|
+
Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "Turn the van right";
|
|
446
|
+
Blockly.Msg["TURN_AROUND_TITLE"] = "turn around";
|
|
447
|
+
Blockly.Msg["TURN_AROUND_TOOLTIP"] = "Turn the van around";
|
|
448
|
+
|
|
449
|
+
Blockly.Msg["WAIT_TITLE"] = "wait";
|
|
450
|
+
Blockly.Msg["WAIT_TOOLTIP"] = "Keep the van stationary";
|
|
451
|
+
Blockly.Msg["DELIVER_TITLE"] = "deliver";
|
|
452
|
+
Blockly.Msg["DELIVER_TOOLTIP"] = "Deliver the goods from the van";
|
|
453
|
+
Blockly.Msg["SOUND_HORN_TITLE"] = "sound horn";
|
|
454
|
+
Blockly.Msg["SOUND_HORN_TOOLTIP"] = "Sound the horn to scare away the cows";
|
|
455
|
+
|
|
456
|
+
Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "road exists forward";
|
|
457
|
+
Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "road exists left";
|
|
458
|
+
Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "road exists right";
|
|
459
|
+
Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "traffic light red";
|
|
460
|
+
Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "traffic light green";
|
|
461
|
+
Blockly.Msg["DEAD_END_TITLE"] = "is dead end";
|
|
462
|
+
Blockly.Msg["AT_DESTINATION_TITLE"] = "at destination";
|
|
463
|
+
Blockly.Msg["COW_CROSSING_TITLE"] = "cows";
|
|
464
|
+
Blockly.Msg["PIGEON_CROSSING_TITLE"] = "pigeons";
|
|
465
|
+
|
|
466
|
+
Blockly.Msg["CALL_PROC_TITLE"] = "Call";
|
|
467
|
+
Blockly.Msg["CALL_PROC_TOOLTIP"] = "Calls a procedure";
|
|
468
|
+
Blockly.Msg["DECLARE_PROC_TITLE"] = "Define";
|
|
469
|
+
Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "Do";
|
|
470
|
+
Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "Declares a procedure";
|
|
471
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "repeat while";
|
|
472
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "do";
|
|
473
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "While a value is true, do some statements";
|
|
474
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "repeat until";
|
|
475
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "do";
|
|
476
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "Until a value is true, do some statements";
|
|
477
|
+
|
|
478
|
+
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "A variable";
|
|
479
|
+
Blockly.Msg["VARIABLES_SET_TITLE"] = "set";
|
|
480
|
+
Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "to";
|
|
481
|
+
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Set a variable";
|
|
482
|
+
Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "Set a variable to a number";
|
|
483
|
+
Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "increment";
|
|
484
|
+
Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "by";
|
|
485
|
+
Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "Increment a variable";
|
|
486
|
+
Blockly.Msg["NUMBER_TITLE"] = "Number";
|
|
487
|
+
Blockly.Msg["NUMBER_TOOLTIP"] = "A number";
|
|
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
|
|
|
433
433
|
Blockly.Msg["TEXTS_HUE"] = "160";
|
|
434
434
|
Blockly.Msg["PROCEDURES_HUE"] = "290";
|
|
435
435
|
Blockly.Msg["COLOUR_HUE"] = "20";
|
|
436
|
-
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
436
|
+
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
437
|
+
|
|
438
|
+
Blockly.Msg["START_TITLE"] = "Comenzar";
|
|
439
|
+
Blockly.Msg["START_TOOLTIP"] = "El comienzo del programa"
|
|
440
|
+
Blockly.Msg["MOVE_FORWARDS_TITLE"] = "avanzar";
|
|
441
|
+
Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "Mover la furgoneta hacia adelante";
|
|
442
|
+
Blockly.Msg["TURN_LEFT_TITLE"] = "girar a la izquierda";
|
|
443
|
+
Blockly.Msg["TURN_LEFT_TOOLTIP"] = "Girar la furgoneta a la izquierda";
|
|
444
|
+
Blockly.Msg["TURN_RIGHT_TITLE"] = "girar a la derecha";
|
|
445
|
+
Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "Girar la furgoneta a la derecha";
|
|
446
|
+
Blockly.Msg["TURN_AROUND_TITLE"] = "dar la vuelta";
|
|
447
|
+
Blockly.Msg["TURN_AROUND_TOOLTIP"] = "Dar media vuelta con la furgoneta";
|
|
448
|
+
|
|
449
|
+
Blockly.Msg["WAIT_TITLE"] = "esperar";
|
|
450
|
+
Blockly.Msg["WAIT_TOOLTIP"] = "Mantener la furgoneta estacionaria";
|
|
451
|
+
Blockly.Msg["DELIVER_TITLE"] = "entregar";
|
|
452
|
+
Blockly.Msg["DELIVER_TOOLTIP"] = "Entregar la mercancía de la furgoneta";
|
|
453
|
+
Blockly.Msg["SOUND_HORN_TITLE"] = "tocar el claxon";
|
|
454
|
+
Blockly.Msg["SOUND_HORN_TOOLTIP"] = "Tocar el claxon para asustar a las vacas";
|
|
455
|
+
|
|
456
|
+
Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "hay una carretera hacia delante";
|
|
457
|
+
Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "hay una carretera hacia la izquierda";
|
|
458
|
+
Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "hay una carretera hacia la derecha";
|
|
459
|
+
Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "semáforo en rojo";
|
|
460
|
+
Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "semáforo en verde";
|
|
461
|
+
Blockly.Msg["DEAD_END_TITLE"] = "es un callejón sin salida";
|
|
462
|
+
Blockly.Msg["AT_DESTINATION_TITLE"] = "en destino";
|
|
463
|
+
Blockly.Msg["COW_CROSSING_TITLE"] = "vacas";
|
|
464
|
+
Blockly.Msg["PIGEON_CROSSING_TITLE"] = "palomas";
|
|
465
|
+
|
|
466
|
+
Blockly.Msg["CALL_PROC_TITLE"] = "Llamar";
|
|
467
|
+
Blockly.Msg["CALL_PROC_TOOLTIP"] = "Llamar a una función";
|
|
468
|
+
Blockly.Msg["DECLARE_PROC_TITLE"] = "Definir";
|
|
469
|
+
Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "Hacer";
|
|
470
|
+
Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "Declara una función";
|
|
471
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "repetir mientras";
|
|
472
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "hacer";
|
|
473
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "Mientras un valor sea verdadero, realizar algunas instrucciones";
|
|
474
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "repetir hasta";
|
|
475
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "hacer";
|
|
476
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "Hasta que un valor sea verdadero, realizar algunas instrucciones";
|
|
477
|
+
|
|
478
|
+
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Una variable";
|
|
479
|
+
Blockly.Msg["VARIABLES_SET_TITLE"] = "asignar";
|
|
480
|
+
Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "a";
|
|
481
|
+
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Asignar una variable";
|
|
482
|
+
Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "Asignar una variable a un número";
|
|
483
|
+
Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "incrementar";
|
|
484
|
+
Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "en";
|
|
485
|
+
Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "Incrementar una variable";
|
|
486
|
+
Blockly.Msg["NUMBER_TITLE"] = "Número";
|
|
487
|
+
Blockly.Msg["NUMBER_TOOLTIP"] = "Un número";
|
|
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
|
|
|
433
433
|
Blockly.Msg["TEXTS_HUE"] = "160";
|
|
434
434
|
Blockly.Msg["PROCEDURES_HUE"] = "290";
|
|
435
435
|
Blockly.Msg["COLOUR_HUE"] = "20";
|
|
436
|
-
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
436
|
+
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
437
|
+
|
|
438
|
+
Blockly.Msg["START_TITLE"] = "Départ";
|
|
439
|
+
Blockly.Msg["START_TOOLTIP"] = "Le début du programme"
|
|
440
|
+
Blockly.Msg["MOVE_FORWARDS_TITLE"] = "avancer";
|
|
441
|
+
Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "Faire avancer le camion";
|
|
442
|
+
Blockly.Msg["TURN_LEFT_TITLE"] = "tourner à gauche";
|
|
443
|
+
Blockly.Msg["TURN_LEFT_TOOLTIP"] = "Faire tourner le camion à gauche";
|
|
444
|
+
Blockly.Msg["TURN_RIGHT_TITLE"] = "tourner à droite";
|
|
445
|
+
Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "Faire tourner le camion à droite";
|
|
446
|
+
Blockly.Msg["TURN_AROUND_TITLE"] = "faire demi-tour";
|
|
447
|
+
Blockly.Msg["TURN_AROUND_TOOLTIP"] = "Faire demi-tour avec le camion";
|
|
448
|
+
|
|
449
|
+
Blockly.Msg["WAIT_TITLE"] = "attendre";
|
|
450
|
+
Blockly.Msg["WAIT_TOOLTIP"] = "Faire arrêter le camion pour attendre";
|
|
451
|
+
Blockly.Msg["DELIVER_TITLE"] = "livrer";
|
|
452
|
+
Blockly.Msg["DELIVER_TOOLTIP"] = "Livrer la commande du camion";
|
|
453
|
+
Blockly.Msg["SOUND_HORN_TITLE"] = "klaxonner";
|
|
454
|
+
Blockly.Msg["SOUND_HORN_TOOLTIP"] = "Klaxonner pour effrayer les vaches";
|
|
455
|
+
|
|
456
|
+
Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "la route existe en face";
|
|
457
|
+
Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "la route existe à gauche";
|
|
458
|
+
Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "la route existe à droite";
|
|
459
|
+
Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "feu rouge";
|
|
460
|
+
Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "feu vert";
|
|
461
|
+
Blockly.Msg["DEAD_END_TITLE"] = "cul-de-sac";
|
|
462
|
+
Blockly.Msg["AT_DESTINATION_TITLE"] = "arrivé à destination";
|
|
463
|
+
Blockly.Msg["COW_CROSSING_TITLE"] = "vaches";
|
|
464
|
+
Blockly.Msg["PIGEON_CROSSING_TITLE"] = "pigeons";
|
|
465
|
+
|
|
466
|
+
Blockly.Msg["CALL_PROC_TITLE"] = "Appeler";
|
|
467
|
+
Blockly.Msg["CALL_PROC_TOOLTIP"] = "Appeler une fonction";
|
|
468
|
+
Blockly.Msg["DECLARE_PROC_TITLE"] = "Définir";
|
|
469
|
+
Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "Faire";
|
|
470
|
+
Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "Déclarer une fonction";
|
|
471
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "répéter tant que";
|
|
472
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "faire";
|
|
473
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "Tant qu’une valeur est vraie, faire des instructions";
|
|
474
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "répéter jusqu’à ce que";
|
|
475
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "faire";
|
|
476
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "Jusqu’à ce qu’une valeur soit vraie, faire des instructions";
|
|
477
|
+
|
|
478
|
+
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Une variable";
|
|
479
|
+
Blockly.Msg["VARIABLES_SET_TITLE"] = "définir";
|
|
480
|
+
Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "à";
|
|
481
|
+
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Définir une variable";
|
|
482
|
+
Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "Définir une variable à un nombre";
|
|
483
|
+
Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "incrémenter";
|
|
484
|
+
Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "de";
|
|
485
|
+
Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "Incrémenter une variable";
|
|
486
|
+
Blockly.Msg["NUMBER_TITLE"] = "nombre";
|
|
487
|
+
Blockly.Msg["NUMBER_TOOLTIP"] = "Un nombre";
|
|
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
|
|
|
433
433
|
Blockly.Msg["TEXTS_HUE"] = "160";
|
|
434
434
|
Blockly.Msg["PROCEDURES_HUE"] = "290";
|
|
435
435
|
Blockly.Msg["COLOUR_HUE"] = "20";
|
|
436
|
-
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
436
|
+
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
437
|
+
|
|
438
|
+
Blockly.Msg["START_TITLE"] = "शुरू";
|
|
439
|
+
Blockly.Msg["START_TOOLTIP"] = "कार्यक्रम की शुरुआत";
|
|
440
|
+
Blockly.Msg["MOVE_FORWARDS_TITLE"] = "आगे बढ़ें";
|
|
441
|
+
Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "वैन को आगे बढ़ाएं";
|
|
442
|
+
Blockly.Msg["TURN_LEFT_TITLE"] = "बाएँ मुड़ें";
|
|
443
|
+
Blockly.Msg["TURN_LEFT_TOOLTIP"] = "वैन को बाएँ मोड़ें";
|
|
444
|
+
Blockly.Msg["TURN_RIGHT_TITLE"] = "दाएं मुड़ें";
|
|
445
|
+
Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "वैन को दाएं मोड़ें)";
|
|
446
|
+
Blockly.Msg["TURN_AROUND_TITLE"] = "मुड़ो";
|
|
447
|
+
Blockly.Msg["TURN_AROUND_TOOLTIP"] = "वैन को घुमाओ";
|
|
448
|
+
|
|
449
|
+
Blockly.Msg["WAIT_TITLE"] = "इंतज़ार";
|
|
450
|
+
Blockly.Msg["WAIT_TOOLTIP"] = "वैन को स्थिर रखें";
|
|
451
|
+
Blockly.Msg["DELIVER_TITLE"] = "बाँटना";
|
|
452
|
+
Blockly.Msg["DELIVER_TOOLTIP"] = "वैन से सामान पहुंचाएं";
|
|
453
|
+
Blockly.Msg["SOUND_HORN_TITLE"] = "हॉर्न बजाओ";
|
|
454
|
+
Blockly.Msg["SOUND_HORN_TOOLTIP"] = "गायों को डराने के लिए हॉर्न बजाएं";
|
|
455
|
+
|
|
456
|
+
Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "सड़क आगे मौजूद है";
|
|
457
|
+
Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "सड़क बाएँ मौजूद है";
|
|
458
|
+
Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "सड़क दाएँ मौजूद है";
|
|
459
|
+
Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "ट्रैफिक लाइट लाल";
|
|
460
|
+
Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "ट्रैफिक लाइट हरा";
|
|
461
|
+
Blockly.Msg["DEAD_END_TITLE"] = "आगे का रास्ता बंद है";
|
|
462
|
+
Blockly.Msg["AT_DESTINATION_TITLE"] = "मंजिल /गंतव्य पर";
|
|
463
|
+
Blockly.Msg["COW_CROSSING_TITLE"] = "गायों";
|
|
464
|
+
Blockly.Msg["PIGEON_CROSSING_TITLE"] = "कबूतरों";
|
|
465
|
+
|
|
466
|
+
Blockly.Msg["CALL_PROC_TITLE"] = "पुकारना";
|
|
467
|
+
Blockly.Msg["CALL_PROC_TOOLTIP"] = "एक प्रक्रिया बुलाना";
|
|
468
|
+
Blockly.Msg["DECLARE_PROC_TITLE"] = "परिभाषित करना";
|
|
469
|
+
Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "करो";
|
|
470
|
+
Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "प्रक्रिया की घोषणा करता है";
|
|
471
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "दोहराएँ जबकि";
|
|
472
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "करो";
|
|
473
|
+
Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "जबकि कोई मान सत्य है, कुछ कथन करें";
|
|
474
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "जब तक";
|
|
475
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "न करें तब तक दोहराएँ";
|
|
476
|
+
Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "जब तक कोई मान सत्य न हो, कुछ कथन करें";
|
|
477
|
+
|
|
478
|
+
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "एक परिवर्तनीय";
|
|
479
|
+
Blockly.Msg["VARIABLES_SET_TITLE"] = "तय करना";
|
|
480
|
+
Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "को";
|
|
481
|
+
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "एक परिवर्तनीय तय करना";
|
|
482
|
+
Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "एक परिवर्तनीय को एक संख्या पर तय करें";
|
|
483
|
+
Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "बढ़ाई";
|
|
484
|
+
Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "द्वारा";
|
|
485
|
+
Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "एक वेरिएबल बढ़ाएँ";
|
|
486
|
+
Blockly.Msg["NUMBER_TITLE"] = "संख्या";
|
|
487
|
+
Blockly.Msg["NUMBER_TOOLTIP"] = "एक संख्या";
|