422 lines
19 KiB
JavaScript
422 lines
19 KiB
JavaScript
import * as Blockly from 'blockly/core';
|
|
|
|
export const turtle_create = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),
|
|
Blockly.Variables.NAME_TYPE);
|
|
//var size=window.parseFloat(this.getFieldValue('SIZE'));
|
|
|
|
//generator.definitions_['var_declare'+varName] = varName+'= '+ 'turtle.Turtle()\n';
|
|
var code = varName + ' = ' + 'turtle.Turtle()\n';
|
|
return code;
|
|
// return '';
|
|
}
|
|
|
|
export const turtle_done = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var code = 'turtle.done()\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_exitonclick = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var code = 'turtle.exitonclick()\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_move = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var direction = this.getFieldValue('DIR');
|
|
var num = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
var code = varName + "." + direction + "(" + num + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_rotate = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var direction = this.getFieldValue('DIR');
|
|
var num = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
var code = varName + "." + direction + "(" + num + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_setheading = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var argument = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = varName + '.setheading(' + argument + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_screen_delay = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var argument = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = varName + '.screen.delay(' + argument + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_goto = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var xnum = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';
|
|
var ynum = generator.valueToCode(this, 'val', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = varName + '.goto(' + xnum + ',' + ynum + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_pos_shape = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var get = this.getFieldValue('DIR');
|
|
var code = varName + '.' + get + '()';
|
|
return [code, generator.ORDER_ATOMIC];
|
|
}
|
|
|
|
export const turtle_stamp = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = varName + '.stamp()\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_clear = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var clear = this.getFieldValue('DIR');
|
|
var code = varName + "." + clear + "(" + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_penup = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var penup = this.getFieldValue('DIR');
|
|
var code = varName + "." + penup + "(" + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_fill = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var penup = this.getFieldValue('DIR');
|
|
var code = varName + "." + penup + "_fill(" + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_size_speed = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = this.getFieldValue('TUR');
|
|
var size = this.getFieldValue('DIR');
|
|
var num = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
var code = varName + "." + size + "(" + num + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_size = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var argument = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = varName + '.pensize(' + argument + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_speed = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var argument = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = varName + '.speed(' + argument + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_circle = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var circle = this.getFieldValue('DIR');
|
|
var num = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
var code = varName + "." + circle + "(" + num + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_setxy = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var xy = this.getFieldValue('DIR');
|
|
var num = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
var code = varName + ".set" + xy + "(" + num + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_circle_advanced = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var argument = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';
|
|
var num = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
var code = varName + ".circle (" + num + ',' + argument + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_visible = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var visible = this.getFieldValue('DIR');
|
|
var code = varName + "." + visible + "(" + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_bgcolor = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var color = this.getFieldValue('FIELDNAME');
|
|
var code = "turtle." + 'bgcolor' + '("' + color + '")\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_title = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
const TITLE = generator.valueToCode(this, 'TITLE', generator.ORDER_ASSIGNMENT) || 'Mixly';
|
|
var code = `turtle.title(${TITLE})\n`;
|
|
return code;
|
|
}
|
|
|
|
export const turtle_setup = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
const WIDTH = generator.valueToCode(this, 'WIDTH', generator.ORDER_ASSIGNMENT) || '1';
|
|
const HEIGHT = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ASSIGNMENT) || 'None';
|
|
var code = `turtle.setup(width=${WIDTH}, height=${HEIGHT})\n`;
|
|
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';
|
|
var color = this.getFieldValue('FIELDNAME');
|
|
var code = varName + "." + 'pencolor' + '("' + color + '")\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_fillcolor = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var color = this.getFieldValue('FIELDNAME');
|
|
var code = varName + "." + 'fillcolor' + '("' + color + '")\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_clone = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = varName + '.clone()';
|
|
return [code, generator.ORDER_ATOMIC];
|
|
}
|
|
|
|
export const turtle_bgcolor_hex = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
var code = "turtle." + 'bgcolor' + '(' + color + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_pencolor_hex = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
//var color = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = varName + "." + 'pencolor' + '(' + color + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_fillcolor_hex = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
var code = varName + "." + 'fillcolor' + '(' + color + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_bgcolor_hex_new = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
var code = "turtle." + 'bgcolor' + '(' + color + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_pencolor_hex_new = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
//var color = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = varName + "." + 'pencolor' + '(' + color + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_fillcolor_hex_new = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
var code = varName + "." + 'fillcolor' + '(' + color + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_color_hex = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var color1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC);
|
|
var color2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC);
|
|
var code = varName + "." + 'color' + '(' + color1 + ',' + color2 + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_color = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var color1 = this.getFieldValue('FIELDNAME');
|
|
var color2 = this.getFieldValue('FIELDNAME2');
|
|
var code = varName + "." + 'color' + '("' + color1 + '","' + color2 + '")\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_shape = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var direction = this.getFieldValue('DIR');
|
|
|
|
var code = varName + ".shape('" + direction + "')\n";
|
|
return code;
|
|
}
|
|
|
|
export const turtle_shapesize = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var argument1 = generator.valueToCode(this, 'WID', generator.ORDER_ASSIGNMENT) || '0';
|
|
var argument2 = generator.valueToCode(this, 'LEN', generator.ORDER_ASSIGNMENT) || '0';
|
|
var argument3 = generator.valueToCode(this, 'OUTLINE', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = varName + ".shapesize(" + argument1 + ',' + argument2 + ',' + argument3 + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_textinput = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var title = generator.valueToCode(this, 'TITLE', generator.ORDER_ATOMIC);
|
|
var prompt = generator.valueToCode(this, 'PROMPT', generator.ORDER_ATOMIC);
|
|
var code = "turtle.textinput" + '(' + title + ',' + prompt + ')';
|
|
return [code, generator.ORDER_ATOMIC];
|
|
}
|
|
|
|
export const turtle_numinput = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var title = generator.valueToCode(this, 'TITLE', generator.ORDER_ATOMIC);
|
|
var prompt = generator.valueToCode(this, 'PROMPT', generator.ORDER_ATOMIC);
|
|
var data = generator.valueToCode(this, 'DEFAULT', generator.ORDER_ATOMIC);
|
|
var min = generator.valueToCode(this, 'MIN', generator.ORDER_ATOMIC);
|
|
var max = generator.valueToCode(this, 'MAX', generator.ORDER_ATOMIC);
|
|
var code = "turtle.numinput" + '(' + title + ',' + prompt + "," + data + ',minval = ' + min + ',maxval = ' + max + ')';
|
|
return [code, generator.ORDER_ATOMIC];
|
|
}
|
|
|
|
export const turtle_write = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var write = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
//var color = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = varName + "." + 'write' + '(' + write + ')\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_write_format = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var move = this.getFieldValue('MOVE');
|
|
var align = this.getFieldValue('ALIGN');
|
|
var fontname = generator.valueToCode(this, 'FONTNAME', generator.ORDER_ATOMIC);
|
|
var fontnum = generator.valueToCode(this, 'FONTNUM', generator.ORDER_ASSIGNMENT) || '0';
|
|
var fonttype = this.getFieldValue('FONTTYPE');
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var write = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
var code = varName + "." + 'write' + '(' + write + ',' + move + ',align="' + align + '",font=(' + fontname + ',' + fontnum + ',"' + fonttype + '"))\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_write_format_skulpt = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var move = this.getFieldValue('MOVE');
|
|
var align = this.getFieldValue('ALIGN');
|
|
var fontname = generator.valueToCode(this, 'FONTNAME', generator.ORDER_ATOMIC);
|
|
var fontnum = generator.valueToCode(this, 'FONTNUM', generator.ORDER_ASSIGNMENT) || '0';
|
|
var fonttype = this.getFieldValue('FONTTYPE');
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var write = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
|
var code = varName + "." + 'write' + '(' + write + ',' + move + ',align="' + align + '",font=(' + fontname + ',' + fontnum + ',"' + fonttype + '"))\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_color_seclet = function (_, generator) {
|
|
var colour = this.getFieldValue('COLOR');
|
|
var code = '"' + colour + '"'
|
|
return [code, generator.ORDER_ATOMIC];
|
|
}
|
|
|
|
export const turtle_getscreen = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var turName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),
|
|
Blockly.Variables.NAME_TYPE);
|
|
var code = varName + ' = ' + turName + '.getscreen()\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_update = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = `${varName}.update()\n`;
|
|
return code;
|
|
}
|
|
|
|
export const turtle_onkey = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var v = generator.valueToCode(this, "VAR", generator.ORDER_NONE) || "None";
|
|
var callback = generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None";
|
|
var code = varName + ".onkey(" + callback + ", " + v + ")\n";
|
|
return code;
|
|
}
|
|
|
|
export const turtle_onclick = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var callback = generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None";
|
|
var code = varName + ".onclick(" + callback + ")\n";
|
|
return code;
|
|
}
|
|
|
|
export const turtle_ontimer = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var v = generator.valueToCode(this, "VAR", generator.ORDER_NONE) || "None";
|
|
var callback = generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None";
|
|
var code = varName + ".ontimer(" + callback + ", " + v + ")\n";
|
|
return code;
|
|
}
|
|
|
|
export const turtle_listen = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var code = varName + '.listen()\n';
|
|
return code;
|
|
}
|
|
|
|
export const turtle_screen_savefig = function (_, generator) {
|
|
generator.definitions_.import_turtle = "import turtle";
|
|
var varName = generator.valueToCode(this, 'TUR', generator.ORDER_ASSIGNMENT) || '0';
|
|
var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);
|
|
var code = varName + ".getcanvas().postscript(file=" + file + ")\n";
|
|
return code;
|
|
} |