From d7ebdc7b08bca61d7cc3f2c397b7fcf47501e8f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E7=AB=8B=E5=B8=AE?= <3294713004@qq.com>
Date: Mon, 15 Dec 2025 11:41:59 +0800
Subject: [PATCH] =?UTF-8?q?feat(boards):=20python=5Fmixpy=20turtle?=
=?UTF-8?q?=E4=B8=8B=E6=B7=BB=E5=8A=A0=20`tracer`=20=E5=9B=BE=E5=BD=A2?=
=?UTF-8?q?=E5=9D=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../default_src/python_mixpy/blocks/turtle.js | 20 ++++++++++++++++++-
.../python_mixpy/generators/turtle.js | 8 ++++++++
boards/default_src/python_mixpy/template.xml | 13 ++++++++++++
common/msg/blockly/en.js | 6 +++++-
common/msg/blockly/zh-hans.js | 5 ++++-
common/msg/blockly/zh-hant.js | 6 +++++-
6 files changed, 54 insertions(+), 4 deletions(-)
diff --git a/boards/default_src/python_mixpy/blocks/turtle.js b/boards/default_src/python_mixpy/blocks/turtle.js
index 4766a487..bd562069 100644
--- a/boards/default_src/python_mixpy/blocks/turtle.js
+++ b/boards/default_src/python_mixpy/blocks/turtle.js
@@ -424,7 +424,6 @@ export const turtle_visible = {
}
};
-
export const turtle_bgcolor = {
init: function () {
@@ -438,6 +437,25 @@ export const turtle_bgcolor = {
}
};
+export const turtle_tracer = {
+ init: function () {
+ this.setColour(TURTLE_HUE);
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.MIXLY_TURTLE_TRACER);
+ this.appendValueInput('STEP')
+ .setCheck(null)
+ .setAlign(Blockly.inputs.Align.RIGHT)
+ .appendField(Blockly.Msg.MIXLY_TURTLE_TRACER_STEP);
+ this.appendValueInput('DELAY')
+ .setCheck(null)
+ .setAlign(Blockly.inputs.Align.RIGHT)
+ .appendField(Blockly.Msg.MIXLY_TURTLE_TRACER_DELAY_MS);
+ this.setInputsInline(true);
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ }
+};
+
export const turtle_pencolor = {
init: function () {
this.appendValueInput('TUR')
diff --git a/boards/default_src/python_mixpy/generators/turtle.js b/boards/default_src/python_mixpy/generators/turtle.js
index 80002b68..61750603 100644
--- a/boards/default_src/python_mixpy/generators/turtle.js
+++ b/boards/default_src/python_mixpy/generators/turtle.js
@@ -173,6 +173,14 @@ export const turtle_bgcolor = function (_, generator) {
return code;
}
+export const turtle_tracer = function (_, generator) {
+ generator.definitions_.import_turtle = "import turtle";
+ const STEP = generator.valueToCode(this, 'STEP', generator.ORDER_ASSIGNMENT) || '1';
+ const DELAY = generator.valueToCode(this, 'DELAY', generator.ORDER_ASSIGNMENT) || 'None';
+ var code = `turtle.tracer(${STEP}, delay=${DELAY})\n`;
+ return code;
+}
+
export const turtle_pencolor = function (_, generator) {
generator.definitions_.import_turtle = "import turtle";
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
diff --git a/boards/default_src/python_mixpy/template.xml b/boards/default_src/python_mixpy/template.xml
index a70b5b49..811fe224 100644
--- a/boards/default_src/python_mixpy/template.xml
+++ b/boards/default_src/python_mixpy/template.xml
@@ -1921,6 +1921,19 @@
+
+
+
+ 1
+
+
+
+
+ 1000
+
+
+
+
diff --git a/common/msg/blockly/en.js b/common/msg/blockly/en.js
index 70499081..d5a3fefb 100644
--- a/common/msg/blockly/en.js
+++ b/common/msg/blockly/en.js
@@ -4108,5 +4108,9 @@ En.MIXLY_SOUND_VOLUME_SET_TOOLTIP='Set volume';
En.MIXLY_SOUND_VOLUME_ADD_TOOLTIP='Change volume';
En.MIXLY_SOUND_EFFECT_SET_TOOLTIP='Set sound effect';
En.MIXLY_SOUND_EFFECT_CLEAR_TOOLTIP='Clear sound effects';
-En.MIXLY_SOUND_EFFECT_ADD_TOOLTIP='Change sound effect';
+En.MIXLY_SOUND_EFFECT_ADD_TOOLTIP='Change sound effect';
+En.MIXLY_TURTLE_TRACER = 'Set the drawing refresh rate';
+En.MIXLY_TURTLE_TRACER_STEP = 'Number of steps';
+En.MIXLY_TURTLE_TRACER_DELAY_MS = 'Delay (milliseconds)';
+
})();
diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js
index 50af2e11..eb809bf5 100644
--- a/common/msg/blockly/zh-hans.js
+++ b/common/msg/blockly/zh-hans.js
@@ -4291,6 +4291,9 @@ ZhHans.MIXLY_SOUND_VOLUME_SET_TOOLTIP='设置音量';
ZhHans.MIXLY_SOUND_VOLUME_ADD_TOOLTIP='增加音量';
ZhHans.MIXLY_SOUND_EFFECT_SET_TOOLTIP='将音效设为';
ZhHans.MIXLY_SOUND_EFFECT_CLEAR_TOOLTIP='清除音效';
-ZhHans.MIXLY_SOUND_EFFECT_ADD_TOOLTIP='将音效增加';
+ZhHans.MIXLY_SOUND_EFFECT_ADD_TOOLTIP='将音效增加';
+ZhHans.MIXLY_TURTLE_TRACER = '设置绘图刷新频率';
+ZhHans.MIXLY_TURTLE_TRACER_STEP = '步数';
+ZhHans.MIXLY_TURTLE_TRACER_DELAY_MS = '延迟 (毫秒)';
})();
\ No newline at end of file
diff --git a/common/msg/blockly/zh-hant.js b/common/msg/blockly/zh-hant.js
index 0578dbe5..d83b107e 100644
--- a/common/msg/blockly/zh-hant.js
+++ b/common/msg/blockly/zh-hant.js
@@ -4261,5 +4261,9 @@ ZhHant.MIXLY_SOUND_VOLUME_SET_TOOLTIP='設置音量';
ZhHant.MIXLY_SOUND_VOLUME_ADD_TOOLTIP='增加音量';
ZhHant.MIXLY_SOUND_EFFECT_SET_TOOLTIP='將音效設為';
ZhHant.MIXLY_SOUND_EFFECT_CLEAR_TOOLTIP='清除音效';
-ZhHant.MIXLY_SOUND_EFFECT_ADD_TOOLTIP='將音效增加';
+ZhHant.MIXLY_SOUND_EFFECT_ADD_TOOLTIP='將音效增加';
+ZhHant.MIXLY_TURTLE_TRACER = '設定繪圖刷新頻率';
+ZhHant.MIXLY_TURTLE_TRACER_STEP = '步數';
+ZhHant.MIXLY_TURTLE_TRACER_DELAY_MS = '延遲 (毫秒)';
+
})();