Files
mixly3/boards/default_src/python_mixpy/blocks/turtle.js
王立帮 7d0a87fc09 feat(boards): python_mixpy下更新Turtle模块
增加screen.update、turtle.title和turtle.setup接口对应图形块
2026-01-04 04:08:41 +08:00

945 lines
32 KiB
JavaScript

import * as Blockly from 'blockly/core';
const TURTLE_HUE = 180;
export const turtle_create = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.blockpy_turtle_create)
.appendField(new Blockly.FieldTextInput('tina'), 'VAR')
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.blockpy_turtle_create_TOOLTIP);
},
getVars: function () {
return [this.getFieldValue('VAR')];
},
renameVar: function (oldName, newName) {
if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {
this.setTitleValue(newName, 'VAR');
}
}
};
export const turtle_done = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.blockpy_TURTLE_DONE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_exitonclick = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_PYTHON_TURTLE_EXITONCLICK);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_move = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
var front_back =
[[Blockly.Msg.blockpy_forward, 'forward'], [Blockly.Msg.blockpy_backward, 'backward']];
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
// .setCheck(String)
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MOVE_BY)
.appendField(new Blockly.FieldDropdown(front_back), 'DIR')
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MOVE_BY_num);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
var thisBlock = this;
this.setTooltip(function () {
var mode = thisBlock.getFieldValue('DIR');
var TOOLTIPS = {
'forward': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_FORWARD,
'backward': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_BACKWARD
};
return TOOLTIPS[mode];
});
}
};
export const turtle_rotate = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
var front_back =
[[Blockly.Msg.blockpy_left, 'left'], [Blockly.Msg.blockpy_right, 'right']];
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
// .setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_rotate)
.appendField(new Blockly.FieldDropdown(front_back), 'DIR')
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
var thisBlock = this;
this.setTooltip(function () {
var mode = thisBlock.getFieldValue('DIR');
var TOOLTIPS = {
'left': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_LEFT,
'right': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_RIGHT
};
return TOOLTIPS[mode];
});
}
};
export const turtle_setheading = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
.setCheck('Turtle')
this.appendValueInput('data')
.setCheck(Number)
.appendField(Blockly.Msg.blockpy_setheading);
this.appendDummyInput()
.appendField(Blockly.Msg.blockpy_setheading_degree);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_screen_delay = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
.setCheck('Turtle')
this.appendValueInput('data')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_TURTLE_SCREEN_DELAY);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_MILLIS);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SCREEN_DELAY);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_goto = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
.setCheck('Turtle')
this.appendValueInput('data')
.setCheck(Number)
.appendField(Blockly.Msg.blockpy_turtle_goto);
this.appendValueInput('val')
.setCheck(Number)
.appendField(Blockly.Msg.blockpy_turtle_goto_y);
this.appendDummyInput()
.appendField(Blockly.Msg.blockpy_turtle_goto_position);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_setxy = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
var set_xy =
[[Blockly.Msg.PYLAB_LABEL_X, 'x'], [Blockly.Msg.PYLAB_LABEL_Y, 'y']];
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
.appendField(new Blockly.FieldDropdown(set_xy), 'DIR')
.appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_SETXY);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_MIXPY_TURTLE_SETXY_TOOLTIP);
}
};
export const turtle_pos_shape = {
init: function () {
this.setColour(TURTLE_HUE);
var pos_shape =
[[Blockly.Msg.TURTLE_POS, 'pos'], [Blockly.Msg.TURTLE_SHAPE, 'shape'], [Blockly.Msg.TURTLE_HEADING, 'heading'], [Blockly.Msg.MIXLY_MIXPY_TURTLE_WIDTH, 'width'], [Blockly.Msg.MIXLY_TURTEL_GET_SHAPESIZE, 'shapesize'], [Blockly.Msg.MIXLY_SPEED, 'speed']];
this.appendValueInput('TUR')
.setCheck('Turtle')
this.appendDummyInput("")
.appendField(Blockly.Msg.TURTLE_POS_SHAPE)
.appendField(new Blockly.FieldDropdown(pos_shape), 'DIR')
var thisBlock = this;
this.setTooltip(function () {
var mode = thisBlock.getFieldValue('DIR');
var TOOLTIPS = {
'pos': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_POS,
'shape': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SHAPE,
'heading': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_HEADING,
'width': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_WIDTH,
'speed': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_GET_SPEED,
'shapesize': Blockly.Msg.MIXLY_TURTEL_GET_SHAPESIZE_TOOLTIP
};
return TOOLTIPS[mode];
});
this.setOutput(true);
this.setInputsInline(true);
}
};
export const turtle_stamp = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
.setCheck('Turtle')
this.appendDummyInput()
.appendField(Blockly.Msg.TURTLE_STAMP);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_clear = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
var clear_reset =
[[Blockly.Msg.MIXLY_LCD_STAT_CLEAR, 'clear'], [Blockly.Msg.blockpy_turtle_reset, 'reset']
, [Blockly.Msg.blockpy_turtle_home, 'home']];
this.setColour(TURTLE_HUE);
this.appendDummyInput("")
.appendField(new Blockly.FieldDropdown(clear_reset), 'DIR')
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
var thisBlock = this;
this.setTooltip(function () {
var mode = thisBlock.getFieldValue('DIR');
var TOOLTIPS = {
'clear': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_CLEAR,
'reset': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_RESET,
'home': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_HOME
};
return TOOLTIPS[mode];
});
}
};
export const turtle_penup = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
var penup_down =
[[Blockly.Msg.blockpy_turtle_penup, 'penup'], [Blockly.Msg.blockpy_turtle_pendown, 'pendown']];
this.setColour(TURTLE_HUE);
this.appendDummyInput("")
.appendField(new Blockly.FieldDropdown(penup_down), 'DIR')
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
var thisBlock = this;
this.setTooltip(function () {
var mode = thisBlock.getFieldValue('DIR');
var TOOLTIPS = {
'penup': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_PENUP,
'pendown': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_PENDOWN
};
return TOOLTIPS[mode];
});
}
};
export const turtle_fill = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
var fill =
[[Blockly.Msg.blockpy_turtle_beginfill, 'begin'], [Blockly.Msg.blockpy_turtle_endfill, 'end']];
this.setColour(TURTLE_HUE);
this.appendDummyInput("")
.appendField(new Blockly.FieldDropdown(fill), 'DIR')
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
var thisBlock = this;
this.setTooltip(function () {
var mode = thisBlock.getFieldValue('DIR');
var TOOLTIPS = {
'begin': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_BEGINFILL,
'end': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_ENDFILL
};
return TOOLTIPS[mode];
});
}
};
export const turtle_size_speed = {
init: function () {
this.appendDummyInput("")
.appendField(new Blockly.FieldTextInput('tina'), 'TUR')
var size_speed =
[[Blockly.Msg.blockpy_turtle_size, 'pensize'], [Blockly.Msg.MIXLY_SPEED, 'speed']];
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
// .setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_set)
.appendField(new Blockly.FieldDropdown(size_speed), 'DIR')
.appendField(Blockly.Msg.blockpy_turtle_set_num);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
var thisBlock = this;
this.setTooltip(function () {
var mode = thisBlock.getFieldValue('DIR');
var TOOLTIPS = {
'pensize': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SIZE,
'speed': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SPEED
};
return TOOLTIPS[mode];
});
}
};
export const turtle_size = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
.setCheck('Turtle')
this.appendValueInput('data')
.setCheck(Number)
.appendField(Blockly.Msg.blockpy_turtle_set_size);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SIZE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_speed = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
.setCheck('Turtle')
this.appendValueInput('data')
.setCheck(Number)
.appendField(Blockly.Msg.blockpy_turtle_set_speed);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SPEED);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_circle = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
var circle_dot =
[[Blockly.Msg.blockpy_turtle_circle, 'circle'], [Blockly.Msg.blockpy_turtle_dot, 'dot']];
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
// .setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_draw)
.appendField(new Blockly.FieldDropdown(circle_dot), 'DIR')
.appendField(Blockly.Msg.blockpy_turtle_radius);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
var thisBlock = this;
this.setTooltip(function () {
var mode = thisBlock.getFieldValue('DIR');
var TOOLTIPS = {
'circle': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_CIRCLE,
'dot': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_DOT
};
return TOOLTIPS[mode];
});
}
};
export const turtle_circle_advanced = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
// .setCheck(String)
.appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_DRAW_CIRCLE)
.appendField(Blockly.Msg.blockpy_turtle_radius);
this.appendValueInput('data')
.setCheck(Number)
.appendField(Blockly.Msg.blockpy_turtle_angle);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TURTEL_CIRCLE);
}
};
export const turtle_visible = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
var visible =
[[Blockly.Msg.blockpy_turtle_hide, 'hideturtle'], [Blockly.Msg.blockpy_turtle_show, 'showturtle']];
this.setColour(TURTLE_HUE);
this.appendDummyInput("")
.appendField(new Blockly.FieldDropdown(visible), 'DIR')
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
var thisBlock = this;
this.setTooltip(function () {
var mode = thisBlock.getFieldValue('DIR');
var TOOLTIPS = {
'hideturtle': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_HIDE,
'showturtle': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_SHOW
};
return TOOLTIPS[mode];
});
}
};
export const turtle_bgcolor = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.blockpy_turtle_bgcolor)
.appendField(new Blockly.FieldColour('#ff0000'), 'FIELDNAME');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_title = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TITLE')
.setCheck(null)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_TURTLE_TITLE_SET);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_setup = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_TURTLE_SETUP_SET);
this.appendValueInput('WIDTH')
.setCheck(null)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_WIDTH);
this.appendValueInput('HEIGHT')
.setCheck(null)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_HEIGHT);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
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')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.blockpy_turtle_pencolor)
.appendField(new Blockly.FieldColour('#ff0000'), 'FIELDNAME');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_fillcolor = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.blockpy_turtle_fillcolor)
.appendField(new Blockly.FieldColour('#ff0000'), 'FIELDNAME');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_clone = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
.setCheck('Turtle')
this.appendDummyInput("")
.appendField(Blockly.Msg.TURTLE_CLONE);
this.setTooltip(Blockly.Msg.TURTLE_CLONE_TOOLTIP);
this.setOutput(true);
}
};
export const turtle_bgcolor_hex_new = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_bgcolor);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_pencolor_hex_new = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_pencolor);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_fillcolor_hex_new = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_fillcolor);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_color = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.blockpy_turtle_pencolor)
.appendField(new Blockly.FieldColour('#ff0000'), 'FIELDNAME');
this.appendDummyInput()
.appendField(Blockly.Msg.blockpy_turtle_fillcolor)
.appendField(new Blockly.FieldColour('#ff0000'), 'FIELDNAME2');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_color_hex = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR1')
.setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_pencolor);
this.appendValueInput('VAR2')
.setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_fillcolor);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_bgcolor_hex = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_bgcolor_hex);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_pencolor_hex = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_pencolor_hex);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_fillcolor_hex = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_fillcolor_hex);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_shape = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
var shape = [
[Blockly.Msg.blockpy_turtle_shape_arrow, 'arrow'], [Blockly.Msg.blockpy_turtle_shape_turtle, 'turtle'],
[Blockly.Msg.blockpy_turtle_shape_circle, 'circle'], [Blockly.Msg.blockpy_turtle_shape_square, 'square'],
[Blockly.Msg.blockpy_turtle_shape_triangle, 'triangle'], [Blockly.Msg.blockpy_turtle_shape_classic, 'classic']
];
this.setColour(TURTLE_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.blockpy_turtle_shape)
.appendField(new Blockly.FieldDropdown(shape), 'DIR');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.TURTLE_SHAPE_TOOLTIP);
}
};
export const turtle_shapesize = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_TURTEL_SHAPESIZE);
this.appendValueInput('WID')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_TURTEL_SHAPESIZE_WID);
this.appendValueInput('LEN')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_TURTEL_SHAPESIZE_LEN);
this.appendValueInput('OUTLINE')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_TURTEL_SHAPESIZE_OUTLINE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_SHAPESIZE);
}
};
export const turtle_numinput = {
init: function () {
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_NUMINPUT)
this.setColour(TURTLE_HUE);
this.appendValueInput('TITLE')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_TEXTINPUT_TITLE);
this.appendValueInput('PROMPT')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_TEXTINPUT_PROMPT);
this.appendValueInput('DEFAULT')
.setCheck(Number)
.appendField(Blockly.Msg.DICTS_DEFAULT_VALUE);
this.appendValueInput('MIN')
.setCheck(Number)
.appendField(Blockly.Msg.MATH_ONLIST_OPERATOR_MIN);
this.appendValueInput('MAX')
.setCheck(Number)
.appendField(Blockly.Msg.MATH_ONLIST_OPERATOR_MAX);
this.setInputsInline(true);
this.setOutput(true, Number);
this.setTooltip(Blockly.Msg.TURTLE_NUMINPUT_TOOLTIP);
}
};
export const turtle_textinput = {
init: function () {
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_TEXTINPUT)
this.setColour(TURTLE_HUE);
this.appendValueInput('TITLE')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_TEXTINPUT_TITLE);
this.appendValueInput('PROMPT')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_TEXTINPUT_PROMPT);
this.setInputsInline(true);
this.setOutput(true, String);
this.setTooltip(Blockly.Msg.TURTLE_TEXTINPUT_TOOLTIP);
}
};
export const turtle_write = {
init: function () {
this.appendValueInput('TUR')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_write);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.TURTLE_WRITE_TOOLTIP);
}
};
export const turtle_write_format = {
init: function () {
var move =
[[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, 'False'], [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, 'True']];
var align =
[[Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN_LEFT, 'left'], [Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN_CENTER, 'center'], [Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN_RIGHT, 'right']];
var fonttype =
[[Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_NORMAL, 'normal'], [Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_BOLD, 'bold'], [Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_ITALIC, 'italic'], [Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_BOLD_ITALIC, 'bold","italic']];
this.appendValueInput('TUR')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_write);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE)
.appendField(new Blockly.FieldDropdown(move), 'MOVE');
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN)
.appendField(new Blockly.FieldDropdown(align), 'ALIGN');
this.appendValueInput('FONTNAME')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NAME);
this.appendValueInput('FONTNUM')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE)
.appendField(new Blockly.FieldDropdown(fonttype), 'FONTTYPE');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.TURTLE_WRITE_TOOLTIP);
}
};
export const turtle_write_format_skulpt = {
init: function () {
var move =
[[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, 'False'], [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, 'True']];
var align =
[[Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN_LEFT, 'left'], [Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN_CENTER, 'center'], [Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN_RIGHT, 'right']];
var fonttype =
[[Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_NORMAL, 'normal'], [Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_BOLD, 'bold'], [Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE_ITALIC, 'italic']];
this.appendValueInput('TUR')
.setCheck('Turtle')
this.setColour(TURTLE_HUE);
this.appendValueInput('VAR')
.setCheck(String)
.appendField(Blockly.Msg.blockpy_turtle_write);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE)
.appendField(new Blockly.FieldDropdown(move), 'MOVE');
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_ALIGN)
.appendField(new Blockly.FieldDropdown(align), 'ALIGN');
this.appendValueInput('FONTNAME')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NAME);
this.appendValueInput('FONTNUM')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_TYPE)
.appendField(new Blockly.FieldDropdown(fonttype), 'FONTTYPE');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.TURTLE_WRITE_TOOLTIP);
}
};
export const turtle_color_seclet = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(new Blockly.FieldColour("ff0000"), "COLOR");
this.setInputsInline(true);
this.setOutput(true, String);
}
};
export const turtle_getscreen = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
.setCheck('Turtle')
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_TURTEL_GETSCREEN)
.appendField(new Blockly.FieldTextInput('screen'), 'VAR')
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_TURTEL_GETSCREEN_TOOLTIP);
},
getVars: function () {
return [this.getFieldValue('VAR')];
},
renameVar: function (oldName, newName) {
if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {
this.setTitleValue(newName, 'VAR');
}
}
}
export const turtle_update = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR');
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_TURTLE_UPDATE);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_TURTEL_EVENT_ONKEY_TOOLTIP);
}
};
export const turtle_onkey = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
this.appendValueInput('VAR')
.appendField(Blockly.Msg.MIXLY_TURTEL_EVENT_ONKEY);
this.appendValueInput('callback')
.appendField(Blockly.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE)
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_TURTEL_EVENT_ONKEY_TOOLTIP);
}
};
export const turtle_onclick = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_TURTEL_EVENT_ONCLICK);
this.appendValueInput('callback')
.appendField(Blockly.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE)
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_TURTEL_EVENT_ONCLICK_TOOLTIP);
}
};
export const turtle_ontimer = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
this.appendValueInput('VAR')
.appendField(Blockly.Msg.MIXLY_TURTEL_EVENT_ONTIMER);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_mSecond);
this.appendValueInput('callback')
.appendField(Blockly.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE)
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_TURTEL_EVENT_ONTIMER_TOOLTIP);
}
};
export const turtle_listen = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_TURTEL_SCREEN_LISTEN);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const turtle_screen_savefig = {
init: function () {
this.setColour(TURTLE_HUE);
this.appendValueInput('TUR')
this.appendValueInput("FILE")
.setCheck(String)
.appendField(Blockly.Msg.mixpy_PL_SAVEFIG);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setOutput(false);
this.setTooltip(Blockly.Msg.mixpy_TURTLE_SAVEFIG_TOOLTIP);
}
};