feat: sync all remaining python source board configurations
This commit is contained in:
163
mixly/boards/default_src/python_mixpy/generators/ai.js
Normal file
163
mixly/boards/default_src/python_mixpy/generators/ai.js
Normal file
@@ -0,0 +1,163 @@
|
||||
export const AI_ChooseAndGet = function (_, generator) {
|
||||
var type = this.getFieldValue('TYPE');
|
||||
generator.definitions_['import_FileDialog'] = 'import FileDialog';
|
||||
var code = 'FileDialog.' + type + '()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_client = function (_, generator) {
|
||||
var ctype = this.getFieldValue('CTYPE');
|
||||
generator.definitions_['import_aip'] = 'import aip';
|
||||
//generator.definitions_['import_aip_' + ctype] = 'from aip import '+ ctype;
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var api_key = generator.valueToCode(this, 'API_KEY', generator.ORDER_ATOMIC);
|
||||
var secret_key = generator.valueToCode(this, 'SECRET_KEY', generator.ORDER_ATOMIC);
|
||||
var code = v + ' = ' + 'aip.' + ctype + '(' + api_key + ', ' + secret_key + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const AI_Speech_synthesis = function (_, generator) {
|
||||
generator.definitions_['import_aip'] = 'import aip';
|
||||
//generator.definitions_['import_aip_AipSpeech'] = 'from aip import AipSpeech';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var s = generator.valueToCode(this, 'STR', generator.ORDER_ATOMIC);
|
||||
var attr = generator.valueToCode(this, 'ATTR', generator.ORDER_ATOMIC) || '{}';
|
||||
var code = v + '.synthesis(' + s + ', options=' + attr + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_Speech_asr = function (_, generator) {
|
||||
generator.definitions_['import_aip'] = 'import aip';
|
||||
//generator.definitions_['import_aip_AipSpeech'] = 'from aip import AipSpeech';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
//var f = generator.valueToCode(this, 'FUNC', generator.ORDER_ATOMIC);
|
||||
var fn = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC) || '""';
|
||||
var attr = generator.valueToCode(this, 'ATTR', generator.ORDER_ATOMIC) || '{}';
|
||||
//var code = v + '.'+ f +'(' + fn + ', options=' + attr + ')';
|
||||
var code = v + '.asr(' + fn + ', options=' + attr + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_ImageClassify = function (_, generator) {
|
||||
generator.definitions_['import_aip'] = 'import aip';
|
||||
//generator.definitions_['import_aip_AipImageClassify'] = 'from aip import AipImageClassify';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var addr = generator.valueToCode(this, 'ADDR', generator.ORDER_ATOMIC);
|
||||
var f = generator.valueToCode(this, 'FUNC', generator.ORDER_ATOMIC);
|
||||
var attr = generator.valueToCode(this, 'ATTR', generator.ORDER_ATOMIC) || '{}';
|
||||
var code = v + '.' + f + '(' + addr + ', options=' + attr + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_Face_match = function (_, generator) {
|
||||
generator.definitions_['import_aip'] = 'import aip';
|
||||
//generator.definitions_['import_aip_AipSpeech'] = 'from aip import AipSpeech';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var s = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var s2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC);
|
||||
var attr = generator.valueToCode(this, 'ATTR', generator.ORDER_ATOMIC) || '{}';
|
||||
var code = v + '.match(' + s + ',' + s2 + ', options=' + attr + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_Ocr = function (_, generator) {
|
||||
generator.definitions_['import_aip'] = 'import aip';
|
||||
//generator.definitions_['import_aip_Ocr'] = 'from aip import Ocr';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var addr = generator.valueToCode(this, 'ADDR', generator.ORDER_ATOMIC);
|
||||
var f = generator.valueToCode(this, 'FUNC', generator.ORDER_ATOMIC);
|
||||
var attr = generator.valueToCode(this, 'ATTR', generator.ORDER_ATOMIC) || '{}';
|
||||
var code = v + '.' + f + '(' + addr + ', options=' + attr + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_Nlp = function (_, generator) {
|
||||
generator.definitions_['import_aip'] = 'import aip';
|
||||
//generator.definitions_['import_aip_Nlp'] = 'from aip import Nlp';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var s = generator.valueToCode(this, 'STR', generator.ORDER_ATOMIC);
|
||||
var f = generator.valueToCode(this, 'FUNC', generator.ORDER_ATOMIC);
|
||||
var attr = generator.valueToCode(this, 'ATTR', generator.ORDER_ATOMIC) || '{}';
|
||||
var code = v + '.' + f + '(' + s + ', options=' + attr + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_Nlp_Sim = function (_, generator) {
|
||||
generator.definitions_['import_aip'] = 'import aip';
|
||||
//generator.definitions_['import_aip_Nlp'] = 'from aip import Nlp';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var s1 = generator.valueToCode(this, 'STR1', generator.ORDER_ATOMIC);
|
||||
var s2 = generator.valueToCode(this, 'STR2', generator.ORDER_ATOMIC);
|
||||
var f = generator.valueToCode(this, 'FUNC', generator.ORDER_ATOMIC);
|
||||
var attr = generator.valueToCode(this, 'ATTR', generator.ORDER_ATOMIC) || '{}';
|
||||
var code = v + '.' + f + '(' + s1 + ',' + s2 + ', options=' + attr + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_Nlp_Topic = function (_, generator) {
|
||||
generator.definitions_['import_aip'] = 'import aip';
|
||||
//generator.definitions_['import_aip_Nlp'] = 'from aip import Nlp';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var s1 = generator.valueToCode(this, 'STR1', generator.ORDER_ATOMIC);
|
||||
var s2 = generator.valueToCode(this, 'STR2', generator.ORDER_ATOMIC);
|
||||
var code = v + '.topic(' + s1 + ',' + s2 + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_Nlp_newsSummary = function (_, generator) {
|
||||
generator.definitions_['import_aip'] = 'import aip';
|
||||
//generator.definitions_['import_aip_Nlp'] = 'from aip import Nlp';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var s = generator.valueToCode(this, 'STR', generator.ORDER_ATOMIC);
|
||||
var n = generator.valueToCode(this, 'LEN', generator.ORDER_ATOMIC);
|
||||
var attr = generator.valueToCode(this, 'ATTR', generator.ORDER_ATOMIC) || '{}';
|
||||
var code = v + '.newsSummary(' + s + ',' + n + ', options=' + attr + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_ImageClassify_Func = function (_, generator) {
|
||||
var code = this.getFieldValue('TYPE');
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_Ocr_Func = function (_, generator) {
|
||||
var code = this.getFieldValue('TYPE');
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_Nlp_Func = function (_, generator) {
|
||||
var code = this.getFieldValue('TYPE');
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_Nlp_Func_sim = function (_, generator) {
|
||||
var code = this.getFieldValue('TYPE');
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const AI_audio = function (_, generator) {
|
||||
generator.definitions_['import_audio'] = 'import audio';
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
|
||||
var num = generator.valueToCode(this, 'TIME', generator.ORDER_ATOMIC) || '0';
|
||||
var code = "audio.audio_record(" + str + ',' + num + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const AI_photo = function (_, generator) {
|
||||
generator.definitions_['import_audio'] = 'import cam';
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
|
||||
var button = generator.valueToCode(this, 'BUT', generator.ORDER_ATOMIC) || '""';
|
||||
var code = "cam.photo_capture(" + str + ',' + button + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const AI_result = function (_, generator) {
|
||||
var varName = generator.valueToCode(this, 'AI', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var ctype = this.getFieldValue('CTYPE');
|
||||
if (ctype == 'Image') { var code = varName + '["result"][0]["keyword"]' }
|
||||
if (ctype == 'Speech') { var code = varName + '["result"][0]' }
|
||||
if (ctype == 'Face' || ctype == 'OcrSimilarity') { var code = varName + '["score"]' }
|
||||
if (ctype == 'Ocr') { var code = varName + '["words_result"]' }
|
||||
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
936
mixly/boards/default_src/python_mixpy/generators/algorithm.js
Normal file
936
mixly/boards/default_src/python_mixpy/generators/algorithm.js
Normal file
@@ -0,0 +1,936 @@
|
||||
// sub_algorithm_1
|
||||
export const algorithm_prepare = function (_, generator) {
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var line1 = 'g = [[0,0,0,0,0,0,0,0,0,0], [0,0,0,1,0,0,0,0,0,0], [0,0,0,1,0,0,1,0,0,0], [0,1,1,0,1,1,0,0,0,0], [0,0,0,1,0,0,0,1,0,0], [0,0,0,1,0,0,1,1,0,0], [0,0,1,0,0,1,0,1,0,0], [0,0,0,0,1,1,1,0,0,0]]\n';
|
||||
var line2 = 'mark = [[0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0]]\n';
|
||||
var code = line1 + line2 + "vis = [0,1,0,0,0,0,0,0,0]\n";
|
||||
code += `position = [[0, 0], [200, 200], [250, 60], [320, 200], [280, 380], [470, 250], [670, 90], [650, 340]]
|
||||
sprite.clearAllSprites()
|
||||
sprite.createBackground('ditu')
|
||||
mask = sprite.Sprite('white', 96, 354)
|
||||
mask.hide()
|
||||
house = [
|
||||
sprite.Sprite('mark', 150, 380),
|
||||
sprite.Sprite('xtxn', 96, 170),
|
||||
sprite.Sprite('xnvijx', 270, 45),
|
||||
sprite.Sprite('xnxbjx', 310, 182),
|
||||
sprite.Sprite('xnsijx', 300, 370),
|
||||
sprite.Sprite('xnkejx', 495, 220),
|
||||
sprite.Sprite('bwbwjx', 716, 85),
|
||||
sprite.Sprite('lelejx', 686, 314)
|
||||
]
|
||||
for i in house:
|
||||
i.filterBrighter()
|
||||
i.hide()\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_add_school = function () {
|
||||
// var code = "path = [1]\n"
|
||||
// + "list1 = [0,1,2,3,4,5,6]\n"
|
||||
// + "list2 = [3,1,0,4,5,6,2]\n";
|
||||
var code = `path = [1]
|
||||
mask.show()
|
||||
car = sprite.Sprite('xnie', position[1][0], position[1][1])\nhouse[1].show()
|
||||
car.nowPos = 1
|
||||
def drive(n):
|
||||
if g[car.nowPos][n]==1:
|
||||
car.slideTo(position[n][0], position[n][1], 1)
|
||||
car.nowPos = n
|
||||
else:
|
||||
print('移动失败!程序有误!')
|
||||
exit()\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_find_path = function (_, generator) {
|
||||
generator.definitions_.import_random = "import random";
|
||||
// var line1 = 'if random.choice([0,1]) == 0:\n'
|
||||
// + ' list = list1\n'
|
||||
// + 'else:\n'
|
||||
// + ' list = list2\n'
|
||||
// + 'f = path[(len(path) - 1)]\n'
|
||||
// + 'flag = 0\n'
|
||||
// + 'for _my_variable in range(7):\n'
|
||||
// + ' if vis[_my_variable+1] == 0 and g[f][_my_variable+1] == 1:\n'
|
||||
// + ' if mark[f][_my_variable+1] == 0:\n'
|
||||
// + ' flag = 1\n'
|
||||
// + ' break\n';
|
||||
var line1 = 'f = path[(len(path) - 1)]\n'
|
||||
+ 'flag = 0\n'
|
||||
+ 'for _my_variable in [6,5,4,3,2,1,0]:\n'
|
||||
+ ' if vis[_my_variable+1] == 0 and g[f][_my_variable+1] == 1:\n'
|
||||
+ ' if mark[f][_my_variable+1] == 0:\n'
|
||||
+ ' flag = 1\n'
|
||||
+ ' break\n';
|
||||
var code = line1;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_new_path = function (_, generator) {
|
||||
var code = "flag == 1";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const algorithm_set_path = function () {
|
||||
var code = "mark[f][_my_variable+1] = 1\nvis[_my_variable+1] = 1\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_add_path = function () {
|
||||
var code = "path.append(_my_variable+1)\n";
|
||||
code += `drive(path[len(path) - 1])\nhouse[_my_variable+1].show()\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_del_path = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
var code = "del path[len(path) - 1]\n";
|
||||
code += `house[0].show()\ntime.sleep(0.5)\nhouse[0].hide()\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_return_path = function () {
|
||||
var code = 'for i in range(7):\n' + ' mark[f][i+1] = 0\n' + ' vis[f] = 0\n';
|
||||
code = `house[f].hide()\ndrive(path[len(path) - 1])\n` + code;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_no_left = function (_, generator) {
|
||||
var code = "len(path) == 7";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const algorithm_print_path = function () {
|
||||
var code = 'name = ["","学校","小智家","小欣家","小思家","小科家","贝贝家","乐乐家"]\nres = ""\nfor i in path:\n res = res + name[i] + "-"\nprint(res[:-1])\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// sub_algorithm_2
|
||||
|
||||
export const algorithm_prepare2 = function (_, generator) {
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var line1 = 'g = [[0,0,0,0,0,0,0,0,0,0], [0,0,0,1,0,0,0,0,0,0], [0,0,0,1,0,0,1,0,0,0], [0,1,1,0,1,0,0,0,0,0], [0,0,0,1,0,0,0,1,0,0], [0,0,0,1,0,0,0,1,0,0], [0,0,1,0,0,0,0,1,0,0], [0,0,0,0,1,1,1,0,0,0]]\n';
|
||||
var line2 = 'mark = [[0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0]]\n';
|
||||
var code = line1 + line2 + "vis = [0,1,0,0,0,0,0,0,0]\n";
|
||||
code += `position = [[0, 0], [200, 200], [250, 60], [320, 200], [280, 380], [470, 250], [670, 90], [650, 340]]
|
||||
sprite.clearAllSprites()
|
||||
sprite.createBackground('ditu')
|
||||
mask = sprite.Sprite('white', 96, 354)
|
||||
mask.hide()
|
||||
house = [
|
||||
sprite.Sprite('mark', 150, 380),
|
||||
sprite.Sprite('xtxn', 96, 170),
|
||||
sprite.Sprite('xnvijx', 270, 45),
|
||||
sprite.Sprite('xnxbjx', 310, 182),
|
||||
sprite.Sprite('xnsijx', 300, 370),
|
||||
sprite.Sprite('xnkejx', 495, 220),
|
||||
sprite.Sprite('bwbwjx', 716, 85),
|
||||
sprite.Sprite('lelejx', 686, 314)
|
||||
]
|
||||
barricade = sprite.Sprite('barricade', 610, 170)
|
||||
barricade.enlargeTo(100)
|
||||
for i in house:
|
||||
i.filterBrighter()
|
||||
i.hide()\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_current_school = function (_, generator) {
|
||||
var code = "f == 1";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const algorithm_no_path = function () {
|
||||
var code = "print('没有符合条件的路线')\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
// sub_algorithm_3
|
||||
|
||||
export const algorithm_prepare_2_1 = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var line1 = 'g = [[10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000],[10000,10000,500,300,10000,10000,10000,10000,10000,10000,10000],[10000,500,10000,10000,100,10000,10000,10000,10000,10000,10000],[10000,300,10000,10000,400,300,10000,10000,10000,10000,10000],[10000,10000,100,400,10000,10000,200,10000,10000,10000,10000],[10000,10000,10000,300,10000,10000,100,200,10000,10000,10000],[10000,10000,10000,10000,200,100,10000,10000,100,10000,10000],[10000,10000,10000,10000,10000,200,10000,10000,100,10000,10000],[10000,10000,10000,10000,10000,10000,100,100,10000,10000,10000]]\n';
|
||||
var line2 = 'now=1\n';
|
||||
var code = line1 + line2 + "last=1\npath=[]\npath.append(1)\n";
|
||||
code += `name = ["","小思家","银行","邮局","餐厅","书店","医院","超市","小科家"]
|
||||
position = [[0, 0], [60, 320], [510, 390], [240, 200], [750, 330], [410, 90], [540, 190], [550, 30], [720, 120]]
|
||||
sprite.clearAllSprites()
|
||||
sprite.createBackground('map_si_ke')
|
||||
stu = sprite.Sprite('girl', 60, 320)
|
||||
stu.enlargeTo(100)
|
||||
time.sleep(1)\n
|
||||
`
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_prepare_2_2 = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var line1 = 'g =[[10000,10000,10000,10000,10000,10000,10000],[10000,10000,300,500,10000,10000,10000],[10000,300,10000,10000,300,700,10000],[10000,500,10000,10000,10000,100,10000],[10000,10000,300,10000,10000,10000,200],[10000,10000,700,100,10000,10000,100],[10000,10000,10000,10000,200,100,10000]]\n';
|
||||
var line2 = 'now=1\n';
|
||||
var code = line1 + line2 + "last=1\npath=[]\npath.append(1)\n";
|
||||
code += `name = ["","小智家","邮局","银行","书店","餐厅","学校"]
|
||||
position = [[0, 0], [70, 340], [70, 90], [550, 310], [420, 70], [730, 250], [650, 130]]
|
||||
sprite.clearAllSprites()
|
||||
sprite.createBackground('map_zhi_xue')
|
||||
stu = sprite.Sprite('boy', 70, 340)
|
||||
stu.enlargeTo(100)
|
||||
time.sleep(1)\n
|
||||
`
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_move_recent = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var line1 = 'tmp=10000\nfor i in range(0, len(g), 1):\n' + ' if g[now][i]<tmp and i!=last:\n' + ' next=i\n' + ' tmp=g[now][i]\n'
|
||||
+ 'stu.slideTo(position[next][0], position[next][1], 1)\ntime.sleep(0.5)\n'
|
||||
+ 'path.append(next)\n' + 'last=now\n' + 'now=next\n'
|
||||
+ 'if len(path)>6:\n print("路线错乱!程序有误!")\n exit()\n';
|
||||
var code = line1;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_not_home = function (_, generator) {
|
||||
var code = "name[now] != '小科家'";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const algorithm_not_school = function (_, generator) {
|
||||
var code = "name[now] != '学校'";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const algorithm_print_path2 = function () {
|
||||
var code = `res = ""
|
||||
for i in path:
|
||||
res = res + name[i] + "→"
|
||||
print(res[:-1])\n`;
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
// sub_algorithm_4 hanoi
|
||||
|
||||
export const hanoi_init = function (_, generator) {
|
||||
// generator.definitions_.import_turtle = "import turtle";
|
||||
// generator.definitions_.import_time = "import time";
|
||||
// generator.definitions_.import_math = "import math";
|
||||
// function randomHexColor() {
|
||||
// //随机生成十六进制颜色
|
||||
// var hex = Math.floor(Math.random() * 16777216).toString(16);
|
||||
// //生成ffffff以内16进制数
|
||||
// while (hex.length < 6) {
|
||||
// //while循环判断hex位数,少于6位前面加0凑够6位
|
||||
// hex = '0' + hex;
|
||||
// }
|
||||
// return '#' + hex; //返回‘#'开头16进制颜色
|
||||
// }
|
||||
// var num = this.getFieldValue('NUM');
|
||||
// let colorList = [];
|
||||
// let i = 0;
|
||||
// while (i < num) {
|
||||
// i++;
|
||||
// colorList.push('"' + randomHexColor() + '"');
|
||||
// }
|
||||
// generator.setups_['init_Hanoi'] = `
|
||||
// def init_Hanoi():
|
||||
// pen = turtle.Turtle()
|
||||
// pen.hideturtle()
|
||||
// pen.speed(0)
|
||||
// for i in range(0, 3, 1):
|
||||
// pen.penup()
|
||||
// pen.setheading(0)
|
||||
// pen.goto(150 * i - 200,-100)
|
||||
// pen.pendown()
|
||||
// pen.pensize(5)
|
||||
// pen.forward(100)
|
||||
// pen.goto(150 * i - 150,-100)
|
||||
// pen.setheading(90)
|
||||
// pen.forward(200)`;
|
||||
// generator.setups_['begin'] = `
|
||||
// def begin():
|
||||
// s = turtle.Turtle()
|
||||
// s.hideturtle()
|
||||
// s.penup()
|
||||
// s.speed(0)
|
||||
// s.goto(0,-150)
|
||||
// s.write('3')
|
||||
// time.sleep(1)
|
||||
// s.clear()
|
||||
// s.write('2')
|
||||
// time.sleep(1)
|
||||
// s.clear()
|
||||
// s.write('1')
|
||||
// time.sleep(1)
|
||||
// s.clear()
|
||||
// s.write('Start!')
|
||||
// time.sleep(1)
|
||||
// s.clear()\n`;
|
||||
// generator.setups_['move'] = `
|
||||
// def move(x, y):
|
||||
// try:
|
||||
// t = tower[x].pop(-1)
|
||||
// a = tower_num[x].pop(-1)
|
||||
// if tower_num[y]!=[]:
|
||||
// b = tower_num[y][-1]
|
||||
// if a<b:
|
||||
// print('非法移动,不能将大盘放置在小盘上')
|
||||
// exit()
|
||||
// t.goto(150 * y - 150,20 * len(tower[y]) - 90)
|
||||
// tower[y].append(t)
|
||||
// tower_num[y].append(a)
|
||||
// except IndexError:
|
||||
// print('非法移动,未找到可移动的圆盘')
|
||||
// exit()\n`;
|
||||
// var code = `num = ${num}
|
||||
// tower = [[], [], []]
|
||||
// tower_num = [[], [], []]
|
||||
// A,B,C=0,1,2
|
||||
// total_num=[0]
|
||||
// color= (${colorList.join(', ')})
|
||||
// init_Hanoi()
|
||||
// for i in range(0, num, 1):
|
||||
// tina = turtle.Turtle()
|
||||
// tina.penup()
|
||||
// tina.shape('square')
|
||||
// tina.color("#000000",color[i])
|
||||
// tina.goto(-150,20 * i - 90)
|
||||
// tower[0].append(tina)
|
||||
// tower_num[0].append(i)
|
||||
// count_turtle=turtle.Turtle()
|
||||
// count_turtle.hideturtle()
|
||||
// count_turtle.penup()
|
||||
// count_turtle.goto(0,150)
|
||||
// count_turtle.write('总步数:0')
|
||||
// begin()\n`;
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var num = this.getFieldValue('NUM');
|
||||
if (num >= 7) var code = `print('层数过高!不得高于6层!')\nexit()\n`;
|
||||
else {
|
||||
var code = `sprite.clearAllSprites()
|
||||
_Hanoicolor = ['blue', 'red', 'yellow', 'green', 'purple', 'black']
|
||||
_Hanoi = [[], [], []]
|
||||
A = 0
|
||||
B = 1
|
||||
C = 2
|
||||
_n = `+ num + `
|
||||
_HanoiColumn = [
|
||||
sprite.Sprite('HanoiColumn', 200, 320),
|
||||
sprite.Sprite('HanoiColumn', 400, 320),
|
||||
sprite.Sprite('HanoiColumn', 600, 320)
|
||||
]
|
||||
_HanoiColumnNumber = [
|
||||
sprite.Text('A', 190, 120),
|
||||
sprite.Text('B', 390, 120),
|
||||
sprite.Text('C', 590, 120)
|
||||
]
|
||||
_HanoiBlock = []
|
||||
for i in range(0, _n, 1):
|
||||
_HanoiBlock.append(sprite.Sprite(_Hanoicolor[i], 200, 400-(_n-i-1)*27))
|
||||
_HanoiBlock[i].setScale(25, 30*i+30)
|
||||
_Hanoi[0].insert(0, _HanoiBlock[i])
|
||||
_steptext = sprite.Text('步数:0', 30, 30)
|
||||
_steps = {'steps' : 0}
|
||||
time.sleep(1)\n`
|
||||
}
|
||||
return code;
|
||||
}
|
||||
|
||||
export const hanoi_move = function (_, generator) {
|
||||
var fromNum = generator.valueToCode(this, 'FROM_NUM', generator.ORDER_ATOMIC) || '0';
|
||||
var toNum = generator.valueToCode(this, 'TO_NUM', generator.ORDER_ATOMIC) || '0';
|
||||
// var code = `move(${fromNum}, ${toNum})\ntotal_num[0]+=1\ncount_turtle.clear()\ncount_turtle.write('总步数:'+str(total_num[0]))\n`;
|
||||
var code = `if len(_Hanoi[${fromNum}])>0 :
|
||||
_HanoiBlockMoved = _Hanoi[${fromNum}].pop()
|
||||
if len(_Hanoi[${toNum}]) > 0 :
|
||||
_HanoiBlockSuppressed = _Hanoi[${toNum}].pop()
|
||||
if _HanoiBlock.index(_HanoiBlockMoved) > _HanoiBlock.index(_HanoiBlockSuppressed):
|
||||
print('非法移动!程序有误!')
|
||||
exit()
|
||||
else:
|
||||
_Hanoi[${toNum}].append(_HanoiBlockSuppressed)
|
||||
_HanoiBlockMoved.slideTo(${fromNum}*200+200, 180, 0.2)
|
||||
_HanoiBlockMoved.slideTo(${toNum}*200+200, 180, 0.5)
|
||||
_HanoiBlockMoved.slideTo(${toNum}*200+200, 400-len(_Hanoi[${toNum}])*27, 0.2)
|
||||
_Hanoi[${toNum}].append(_HanoiBlockMoved)
|
||||
_steps['steps'] += 1
|
||||
_steptext.changeText('步数:'+str(_steps['steps']))
|
||||
else :
|
||||
print('非法移动!程序有误!')
|
||||
exit()
|
||||
`
|
||||
return code;
|
||||
}
|
||||
|
||||
// sub_algorithm_5
|
||||
|
||||
export const algorithm_all_books_sequence = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = `if 'mode' not in globals() or mode == 0:
|
||||
sprite.clearAllSprites()
|
||||
ring=[0,0,0,0,0,0,0,0,0,0]
|
||||
mode=1
|
||||
n=5
|
||||
ring[5]=1
|
||||
name=['小王子','海底两万里','荷花镇的早市','孔子的故事','夏洛的网','草房子','月下看猫头鹰','会唱歌的咖啡磨','父与子','城南旧事']
|
||||
Books = []
|
||||
for i in range(1, 11, 1):
|
||||
Books.append(sprite.Sprite('books/book'+str(i), (130*i-650) if i>5 else 130*i, 320 if i>5 else 120))
|
||||
else:
|
||||
mode=2
|
||||
n=len(ring)-1\nring[n]=1
|
||||
time.sleep(1)\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_all_books = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = `if 'mode' not in globals() or mode == 0:
|
||||
sprite.clearAllSprites()
|
||||
ring=[0,0,0,0,0,0,0,0,0,0]
|
||||
mode=2
|
||||
n=5
|
||||
name=['小王子','海底两万里','荷花镇的早市','孔子的故事','夏洛的网','草房子','月下看猫头鹰','会唱歌的咖啡磨','父与子','城南旧事']
|
||||
Books = []
|
||||
for i in range(1, 11, 1):
|
||||
Books.append(sprite.Sprite('books/book'+str(i), (130*i-650) if i>5 else 130*i, 320 if i>5 else 120))
|
||||
else:
|
||||
mode=1
|
||||
n=len(ring)-1
|
||||
ring[n]=n
|
||||
list=ring
|
||||
temp=Books
|
||||
time.sleep(1)\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_first_book = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var line1 = 'res=0\n';
|
||||
var code = line1 + "flag=ring[res]\n";
|
||||
code += `Books[res].filterBrighter()\ntime.sleep(0.1)\nBooks[res].filterOrigin()\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
// export const algorithm_no_ring = function() {
|
||||
// var code = "ring[i]==0";
|
||||
// return [code, generator.ORDER_ATOMIC];
|
||||
// };
|
||||
|
||||
export const algorithm_no_ring2 = function (_, generator) {
|
||||
var code = "(('mode' not in globals())or(mode==1 and flag==0)or(mode==2 and not any(value > 0 for value in qian))or(mode==0))";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const algorithm_yes_ring2 = function (_, generator) {
|
||||
var code = "(('mode' in globals())and((mode==1 and flag!=0)or(mode==2 and any(value > 0 for value in qian))))";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const algorithm_next_book = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = "res+=1\nflag=ring[res]\n";
|
||||
code += `Books[res].filterBrighter()\ntime.sleep(0.1)\nBooks[res].filterOrigin()\n`;
|
||||
code = `Books[res].filterGray()\ntime.sleep(0.3)\n` + code;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_two_left = function (_, generator) {
|
||||
var code = "len(list)>=2";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const algorithm_divide_books = function () {
|
||||
var code = `mid = int(len(list)/2)
|
||||
qian = list[0:mid]
|
||||
hou = list[mid:]
|
||||
qiantemp = temp[0:mid]
|
||||
houtemp = temp[mid:]\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_get_half_books = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = `quchu = qian
|
||||
list = hou
|
||||
quchutemp = qiantemp
|
||||
temp = houtemp
|
||||
for i in qiantemp:
|
||||
i.filterBrighter()
|
||||
time.sleep(0.5)
|
||||
for i in qiantemp:
|
||||
i.filterGray()
|
||||
time.sleep(0.5)\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
// export const algorithm_check_half_books = function() {
|
||||
// var code = "while ring[i]==0:\n if i==mid:\n flag=0\n break\n i+=1\n";
|
||||
// return code;
|
||||
// };
|
||||
|
||||
export const algorithm_delete_book = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = `list = quchu
|
||||
temp = quchutemp
|
||||
for i in qiantemp:
|
||||
i.filterBrighter()
|
||||
time.sleep(0.5)
|
||||
for i in qiantemp:
|
||||
i.filterOrigin()
|
||||
for i in houtemp:
|
||||
i.filterBrighter()
|
||||
time.sleep(0.5)
|
||||
for i in houtemp:
|
||||
i.filterGray()
|
||||
time.sleep(0.5)\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
// export const algorithm_print_book = function() {
|
||||
// var code = "print(i)\n";
|
||||
// return code;
|
||||
// };
|
||||
|
||||
export const algorithm_print_book2 = function () {
|
||||
var code = `if 'list' in globals():
|
||||
res = list[0]
|
||||
Books[res].filterBrighter()
|
||||
print('未消磁的书籍是第'+str(res+1)+'本《'+name[res%10]+'》。')
|
||||
if res!=n:
|
||||
print('答案错误!请检查程序!')
|
||||
mode=0\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
// sub_algorithm_6
|
||||
|
||||
export const algorithm_book_scale = function (_, generator) {
|
||||
var FIELD_NUM = this.getFieldValue("NUM");
|
||||
const pos = {
|
||||
5: '130*i, 120',
|
||||
10: '(130*i-650) if i>5 else 130*i, 320 if i>5 else 120',
|
||||
20: '(65*i-650)+30 if i>10 else 65*i+30, 320 if i>10 else 120',
|
||||
50: '(26*i-650)+50 if i>25 else 26*i+50, 320 if i>25 else 120'
|
||||
}
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = `sprite.clearAllSprites()
|
||||
ring = []
|
||||
name = ['小王子','海底两万里','荷花镇的早市','孔子的故事','夏洛的网','草房子','月下看猫头鹰','会唱歌的咖啡磨','父与子','城南旧事']
|
||||
Books = []
|
||||
for i in range(${FIELD_NUM}):
|
||||
ring.append(0)
|
||||
for i in range(1, ${FIELD_NUM}+1, 1):
|
||||
Books.append(sprite.Sprite('books/book'+str(i%10 if i%10!=0 else 10), ${pos[FIELD_NUM]}))
|
||||
time.sleep(1)
|
||||
mode=3
|
||||
`
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_number_zero = function (_, generator) {
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = "cnt=0\n";
|
||||
code += `cntText = sprite.Text('计数器:0', 30, 200)\n`
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_number_add = function (_, generator) {
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = "cnt+=1\n";
|
||||
code += `cntText.changeText('计数器:'+str(cnt))\n`
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_print_number = function (_, generator) {
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = "print('计数器大小:'+str(cnt))\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
// export const algorithm_get_book_num = function() {
|
||||
// var code = 'n='+this.getFieldValue('NUM')+'\n';
|
||||
// return code;
|
||||
// };
|
||||
|
||||
// export const algorithm_print_sequence = function() {
|
||||
// var code = 'print("顺序法查找次数为:",cnt)';
|
||||
// return code;
|
||||
// };
|
||||
|
||||
// export const algorithm_print_divide = function() {
|
||||
// var code = 'print("二分法查找次数为:",cnt)';
|
||||
// return code;
|
||||
// };
|
||||
|
||||
// sub_algorithm_7
|
||||
|
||||
export const algorithm_init_jttl = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = `sprite.clearAllSprites()
|
||||
_head = 10
|
||||
_foot = 32
|
||||
_footText = sprite.Text('脚的数量:', 20, 10)
|
||||
_sprite = []\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_rabbit_zero = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = `_rabbit = 0\n`;
|
||||
// code += `_sprite.append(sprite.Sprite('jttl/rabbit', len(_sprite)*130+130 if len(_sprite)<5 else len(_sprite)*130+130-650, 120 if len(_sprite)<5 else 320))\n`;
|
||||
code += `time.sleep(1)\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_rabbit_number_in_range = function (_, generator) {
|
||||
var code = `_rabbit < _head`;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const algorithm_chick_calculate = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = `_chick = _head - _rabbit\n`;
|
||||
code += `for i in range(0, _chick, 1):
|
||||
_sprite.append(sprite.Sprite('jttl/chick', len(_sprite)*130+130 if len(_sprite)<5 else len(_sprite)*130+130-650, 120 if len(_sprite)<5 else 320))\n
|
||||
time.sleep(0.5)
|
||||
_footText.changeText('脚的数量:'+str(_rabbit*4 + _chick*2))
|
||||
time.sleep(1)\n`
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_check_feet = function (_, generator) {
|
||||
var code = `_rabbit*4 + _chick*2 == _foot`;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const algorithm_print_jttl_answer = function (_, generator) {
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = `print('鸡的数量:'+str(_chick)+'只;\\n兔的数量:'+str(_rabbit)+'只。')\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_rabbit_add = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = `_rabbit += 1\n`;
|
||||
code += `sprite.clearAllSprites()
|
||||
_sprite = []
|
||||
_footText = sprite.Text('脚的数量:', 20, 10)
|
||||
for i in range(0, _rabbit, 1):
|
||||
_sprite.append(sprite.Sprite('jttl/rabbit', len(_sprite)*130+130 if len(_sprite)<5 else len(_sprite)*130+130-650, 120 if len(_sprite)<5 else 320))\n`
|
||||
code += `time.sleep(0.5)\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
// sub_algorithm_8
|
||||
|
||||
export const algorithm_init_fzsf = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = ``;
|
||||
code += `sprite.clearAllSprites()
|
||||
sprite.createBackground('/fzsf/map_ck_xxjsjs')
|
||||
_S1 = sprite.Sprite('/fzsf/S1',400,225,'S1')
|
||||
_S2 = sprite.Sprite('/fzsf/S2',400,225,'S2')
|
||||
_S3 = sprite.Sprite('/fzsf/S3',400,225,'S3')
|
||||
_S4 = sprite.Sprite('/fzsf/S4',400,225,'S4')
|
||||
_S1.hide()
|
||||
_S2.hide()
|
||||
_S3.hide()
|
||||
_S4.hide()
|
||||
_text_1 = sprite.Text('S1:',0,0,'text')
|
||||
_text_2 = sprite.Text('S2:',0,30,'text2')
|
||||
_text_3 = sprite.Text('S3:',0,60,'text3')
|
||||
_text_4 = sprite.Text('S4:',0,90,'text4')
|
||||
_position = [[60, 270], [240, 50], [260, 380], [440, 190], [730, 60], [700, 400]]
|
||||
_Llen = [0, 170, 230, 100, 150, 10, 30, 50]
|
||||
_Slen = [0, 0, 0, 0, 0]
|
||||
_tag = [0, [0, 1, 3], [0, 2, 3], [3, 4, 5], [3, 5]]
|
||||
bear = sprite.Sprite('mixbear',60,270,'bear')
|
||||
bear.enlargeTo(80)
|
||||
_pos = 0
|
||||
time.sleep(1)\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_fz_calc = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var FIELD_PATHNAME = this.getFieldValue("PATHNAME");
|
||||
const calc = [0, [1, 3], [2, 4], [5, 7], [6]]
|
||||
var code = ``;
|
||||
code += `_S${FIELD_PATHNAME}.show()
|
||||
time.sleep(1)\n`;
|
||||
if (FIELD_PATHNAME != 4) {
|
||||
code += `_Slen[${FIELD_PATHNAME}] = _Llen[${calc[FIELD_PATHNAME][0]}] + _Llen[${calc[FIELD_PATHNAME][1]}]
|
||||
_text_${FIELD_PATHNAME}.changeText('S${FIELD_PATHNAME}:'+str(_Slen[${FIELD_PATHNAME}])+'m')
|
||||
time.sleep(1)
|
||||
_S${FIELD_PATHNAME}.hide()
|
||||
time.sleep(1)\n`;
|
||||
} else {
|
||||
code += `_Slen[4] = _Llen[6]
|
||||
_text_4.changeText('S4:'+str(_Slen[4])+'m')
|
||||
time.sleep(1)
|
||||
_S4.hide()
|
||||
time.sleep(1)\n`;
|
||||
}
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_fz_compare = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var FIELD_PATHNAME = this.getFieldValue("PATHNAME");
|
||||
var FIELD_PATHNAME2 = this.getFieldValue("PATHNAME2");
|
||||
var code = ``;
|
||||
code += `_Slen[${FIELD_PATHNAME}] < _Slen[${FIELD_PATHNAME2}]`;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
// `if(_Slen[${FIELD_PATHNAME}]==0 or _Slen[${FIELD_PATHNAME2}]==0):
|
||||
// print('请先计算出长度再比较!程序有误!')
|
||||
// exit()
|
||||
// _S${FIELD_PATHNAME}.show()
|
||||
// time.sleep(0.5)
|
||||
// _S${FIELD_PATHNAME}.hide()
|
||||
// time.sleep(0.5)
|
||||
// _S${FIELD_PATHNAME}.show()
|
||||
// time.sleep(0.5)
|
||||
// _S${FIELD_PATHNAME2}.show()
|
||||
// time.sleep(0.5)
|
||||
// _S${FIELD_PATHNAME2}.hide()
|
||||
// time.sleep(0.5)
|
||||
// _S${FIELD_PATHNAME2}.show()
|
||||
// time.sleep(0.5)
|
||||
// if(_Slen[${FIELD_PATHNAME}] < _Slen[${FIELD_PATHNAME2}]):
|
||||
// _S${FIELD_PATHNAME2}.hide()
|
||||
// _S${FIELD_PATHNAME}.show()
|
||||
// else :
|
||||
// _S${FIELD_PATHNAME}.hide()
|
||||
// _S${FIELD_PATHNAME2}.show()
|
||||
// time.sleep(1)
|
||||
// _S${FIELD_PATHNAME}.hide()
|
||||
// _S${FIELD_PATHNAME2}.hide()\n`;
|
||||
// return code;
|
||||
}
|
||||
|
||||
export const algorithm_fz_set_min = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var FIELD_PATHNAME = this.getFieldValue("PATHNAME");
|
||||
var code = ``;
|
||||
code += `
|
||||
_S1.hide()
|
||||
_S2.hide()
|
||||
_S3.hide()
|
||||
_S4.hide()
|
||||
_Smin = ${FIELD_PATHNAME}
|
||||
_S${FIELD_PATHNAME}.show()
|
||||
time.sleep(0.5)
|
||||
_S${FIELD_PATHNAME}.hide()
|
||||
time.sleep(0.5)
|
||||
_S${FIELD_PATHNAME}.show()
|
||||
time.sleep(1)\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_fz_move = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = ``;
|
||||
code += `if(_pos == _tag[_Smin][0]):
|
||||
for i in range(1, len(_tag[_Smin]), 1):
|
||||
bear.slideTo(_position[_tag[_Smin][i]][0], _position[_tag[_Smin][i]][1], 1)
|
||||
_pos = _tag[_Smin][len(_tag[_Smin])-1]
|
||||
else:
|
||||
print('移动错误!程序有误!')
|
||||
exit()
|
||||
_S1.hide()
|
||||
_S2.hide()
|
||||
_S3.hide()
|
||||
_S4.hide()
|
||||
if(_pos == 5):
|
||||
print('成功抵达信息科技教室!')\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
// sub_algorithm_9
|
||||
|
||||
export const algorithm_init_hxdb = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = ``;
|
||||
code += `sprite.clearAllSprites()
|
||||
sprite.createBackground('/hxdb/hxdbbg')
|
||||
_soldier = []
|
||||
_num = sprite.Text('目前士兵数量:0',0,0,'num')
|
||||
_last = sprite.Text('剩余:0',500,0,'last')
|
||||
_line = 3\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_hxdb_init_soldier = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var FIELD_NUM = this.getFieldValue("NUM");
|
||||
var code = ``;
|
||||
code += `for i in range(0, ${FIELD_NUM}, 1):
|
||||
_soldier.append(sprite.Sprite('/hxdb/soldier', 30 + (len(_soldier)%_line)*50 + (len(_soldier)//(4*_line))*(_line+1)*50 +(len(_soldier)%3-2), 80+(len(_soldier)//_line)*100-(len(_soldier)//(4*_line))*4*100+(len(_soldier)%2)))
|
||||
_num.changeText('目前士兵数量:'+str(len(_soldier)))\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_hxdb_stand_in_line = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var FIELD_NAME = this.getFieldValue("NUM");
|
||||
var code = `for i in range(0, len(_soldier), 1):
|
||||
_soldier[i].slideTo(30 + (i%${FIELD_NAME})*50 + (i//(4*${FIELD_NAME}))*(${FIELD_NAME}+1)*50 +(i%3-2), 80+(i//${FIELD_NAME})*100-(i//(4*${FIELD_NAME}))*4*100+(i%2), 0.05)
|
||||
_line = ${FIELD_NAME}
|
||||
_last.changeText('剩余:'+str(len(_soldier)%_line))
|
||||
time.sleep(2)\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_hxdb_last_line = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var FIELD_NAME = this.getFieldValue("NUM");
|
||||
var code = `len(_soldier)%_line == ${FIELD_NAME}`;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const algorithm_hxdb_add = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = `_num.changeText('目前士兵数量:'+str(len(_soldier)+1))
|
||||
_last.changeText('剩余:')
|
||||
time.sleep(0.5)
|
||||
_soldier.append(sprite.Sprite('/hxdb/soldier', 30 + (len(_soldier)%_line)*50 + (len(_soldier)//(4*_line))*(_line+1)*50 +(len(_soldier)%3-2), 80+(len(_soldier)//_line)*100-(len(_soldier)//(4*_line))*4*100+(len(_soldier)%2)))
|
||||
time.sleep(1)\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_hxdb_result = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_sprite = "import sprite";
|
||||
var code = `print('符合要求的士兵数量为:'+str(len(_soldier)))\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
// others
|
||||
|
||||
export const hanoi_init_offline = function (_, generator) {
|
||||
generator.definitions_.import_turtle = "import turtle";
|
||||
generator.definitions_.import_time = "import time";
|
||||
generator.definitions_.import_math = "import math";
|
||||
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var num = this.getFieldValue('NUM');
|
||||
generator.setups_['init_Hanoi'] = `
|
||||
def init_Hanoi():
|
||||
pen = turtle.Turtle()
|
||||
pen.hideturtle()
|
||||
pen.speed(0)
|
||||
for i in range(0, 3, 1):
|
||||
pen.penup()
|
||||
pen.setheading(0)
|
||||
pen.goto(150 * i - 200,-100)
|
||||
pen.pendown()
|
||||
pen.pensize(5)
|
||||
pen.forward(100)
|
||||
pen.goto(150 * i - 150,-100)
|
||||
pen.setheading(90)
|
||||
pen.forward(200)`;
|
||||
generator.setups_['begin'] = `
|
||||
def begin():
|
||||
s = turtle.Turtle()
|
||||
s.hideturtle()
|
||||
s.penup()
|
||||
s.speed(0)
|
||||
s.goto(0,-150)
|
||||
s.write('3')
|
||||
time.sleep(1)
|
||||
s.clear()
|
||||
s.write('2')
|
||||
time.sleep(1)
|
||||
s.clear()
|
||||
s.write('1')
|
||||
time.sleep(1)
|
||||
s.clear()
|
||||
s.write('Start!')
|
||||
time.sleep(1)
|
||||
s.clear()\n`;
|
||||
generator.setups_['move'] = `
|
||||
def move(x, y):
|
||||
try:
|
||||
t = tower[x].pop(-1)
|
||||
a = tower_num[x].pop(-1)
|
||||
if tower_num[y]!=[]:
|
||||
b = tower_num[y][-1]
|
||||
if a<b:
|
||||
print('非法移动,不能将大盘放置在小盘上')
|
||||
exit()
|
||||
t.goto(150 * y - 150,20 * len(tower[y]) - 90)
|
||||
tower[y].append(t)
|
||||
tower_num[y].append(a)
|
||||
except IndexError:
|
||||
print('非法移动,未找到可移动的圆盘')
|
||||
exit()\n`;
|
||||
var code = `num = ${num}
|
||||
tower = [[], [], []]
|
||||
tower_num = [[], [], []]
|
||||
A,B,C=0,1,2
|
||||
total_num=[0]
|
||||
color= (${color})
|
||||
init_Hanoi()
|
||||
for i in range(0, num, 1):
|
||||
tina = turtle.Turtle()
|
||||
tina.penup()
|
||||
tina.shape('square')
|
||||
if num == 1:
|
||||
tina.shapesize(1,7,1)
|
||||
else:
|
||||
tina.shapesize(1,7 - (6 / (num - 1)) * i,1)
|
||||
tina.color("#000000",color)
|
||||
tina.speed(3)
|
||||
tina.goto(-150,20 * i - 90)
|
||||
tower[0].append(tina)
|
||||
tower_num[0].append(i)
|
||||
count_turtle=turtle.Turtle()
|
||||
count_turtle.hideturtle()
|
||||
count_turtle.penup()
|
||||
count_turtle.goto(0,150)
|
||||
count_turtle.write('总步数:0')
|
||||
begin()\n`;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_get_current_location = function () {
|
||||
var line1 = 'f = path[(len(path) - 1)]\n';
|
||||
var code = line1;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const algorithm_void_path = function (_, generator) {
|
||||
var code = "len(path)==0";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const algorithm_color_seclet = function (_, generator) {
|
||||
var colour = this.getFieldValue('COLOR');
|
||||
var code = '"' + colour + '"'
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const requests_get_old = function (_, generator) {
|
||||
generator.definitions_.import_requests = "import requests";
|
||||
var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
var str = generator.valueToCode(this, 'DOMAIN', generator.ORDER_ATOMIC);
|
||||
var code = varName + '= ' + 'requests.get(' + str + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const requests_get = function (_, generator) {
|
||||
generator.definitions_.import_requests = "import requests";
|
||||
var dropdown_type = this.getFieldValue('TYPE');
|
||||
var str = generator.valueToCode(this, 'URL', generator.ORDER_ATOMIC);
|
||||
var code = 'requests.' + dropdown_type + '(' + str + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const requests_post = function (_, generator) {
|
||||
generator.definitions_.import_requests = "import requests";
|
||||
var dropdown_type = this.getFieldValue('TYPE');
|
||||
var str = generator.valueToCode(this, 'URL', generator.ORDER_ATOMIC);
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
var code = 'requests.' + dropdown_type + '(' + str + ',data=' + data + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const requests_attribute = function (_, generator) {
|
||||
generator.definitions_.import_requests = "import requests";
|
||||
var varName = generator.valueToCode(this, 'VAL', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var attr = this.getFieldValue('ATTR');
|
||||
var code = varName + "." + attr;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const requests_method = function (_, generator) {
|
||||
generator.definitions_.import_requests = "import requests";
|
||||
var method = this.getFieldValue('DIR');
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var code = "requests." + method + "(" + str + ')\n';
|
||||
return code;
|
||||
}
|
||||
100
mixly/boards/default_src/python_mixpy/generators/cv.js
Normal file
100
mixly/boards/default_src/python_mixpy/generators/cv.js
Normal file
@@ -0,0 +1,100 @@
|
||||
export const cv_read_image = function (_, generator) {
|
||||
generator.definitions_['import_cv2'] = 'import cv2';
|
||||
var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);
|
||||
var code = "cv2.imread(" + file + ")";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const cv_show_image = function (_, generator) {
|
||||
generator.definitions_['import_cv2'] = 'import cv2';
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);
|
||||
var code = "cv2.imshow(" + data + ',' + file + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const cv_write_image = function (_, generator) {
|
||||
generator.definitions_['import_cv2'] = 'import cv2';
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);
|
||||
var code = "cv2.imwrite(" + data + ',' + file + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const cv_waitkey = function (_, generator) {
|
||||
generator.definitions_['import_cv2'] = 'import cv2';
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
var code = "cv2.waitKey(" + data + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const cv_destroy_all = function (_, generator) {
|
||||
generator.definitions_['import_cv2'] = 'import cv2';
|
||||
var code = "cv2.destroyAllWindows()\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const cv_line_rect = function (_, generator) {
|
||||
generator.definitions_['import_cv2'] = 'import cv2';
|
||||
var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);
|
||||
var x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC);
|
||||
var y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC);
|
||||
var x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC);
|
||||
var y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC);
|
||||
var thick = generator.valueToCode(this, 'thick', generator.ORDER_ATOMIC);
|
||||
var color = this.getFieldValue('FIELDNAME');
|
||||
var color1 = eval('0x' + color[1] + color[2])
|
||||
var color2 = eval('0x' + color[3] + color[4])
|
||||
var color3 = eval('0x' + color[5] + color[6])
|
||||
var direction = this.getFieldValue('DIR');
|
||||
var code = "cv2." + direction + "(" + file + ',(' + x1 + ',' + y1 + '),(' + x2 + ',' + y2 + '),(' + color3 + ',' + color2 + ',' + color1 + '),' + thick + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const cv_text = function (_, generator) {
|
||||
generator.definitions_['import_cv2'] = 'import cv2';
|
||||
var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);
|
||||
var x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC);
|
||||
var y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC);
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
var size = generator.valueToCode(this, 'size', generator.ORDER_ATOMIC);
|
||||
var thick = generator.valueToCode(this, 'thick', generator.ORDER_ATOMIC);
|
||||
var color = this.getFieldValue('FIELDNAME');
|
||||
var color1 = eval('0x' + color[1] + color[2])
|
||||
var color2 = eval('0x' + color[3] + color[4])
|
||||
var color3 = eval('0x' + color[5] + color[6])
|
||||
var font = this.getFieldValue('font');
|
||||
var code = "cv2.putText(" + file + ',' + data + ',(' + x1 + ',' + y1 + '),cv2.FONT_HERSHEY_' + font + ',' + size + ',(' + color3 + ',' + color2 + ',' + color1 + '),' + thick + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const cv_face_classifier = function (_, generator) {
|
||||
generator.definitions_['import_cv2'] = 'import cv2';
|
||||
var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);
|
||||
var code = "cv2.CascadeClassifier(" + file + ")";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const cv_face_detect = function (_, generator) {
|
||||
generator.definitions_['import_cv2'] = 'import cv2';
|
||||
var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);
|
||||
var face = generator.valueToCode(this, 'FACE', generator.ORDER_ATOMIC);
|
||||
var scale = generator.valueToCode(this, 'SCALE', generator.ORDER_ATOMIC);
|
||||
var neighbor = generator.valueToCode(this, 'NEIGHBOR', generator.ORDER_ATOMIC);
|
||||
var code = face + ".detectMultiScale(" + file + ',scaleFactor=' + scale + ',minNeighbors=' + neighbor + ")";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const cv_face_detect_all = function (_, generator) {
|
||||
generator.definitions_['import_cv2'] = 'import cv2';
|
||||
var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);
|
||||
var face = generator.valueToCode(this, 'FACE', generator.ORDER_ATOMIC);
|
||||
var scale = generator.valueToCode(this, 'SCALE', generator.ORDER_ATOMIC);
|
||||
var neighbor = generator.valueToCode(this, 'NEIGHBOR', generator.ORDER_ATOMIC);
|
||||
var x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC);
|
||||
var y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC);
|
||||
var x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC);
|
||||
var y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC);
|
||||
var code = face + ".detectMultiScale(" + file + ',scaleFactor=' + scale + ',minNeighbors=' + neighbor + ',minSize=(' + x1 + ',' + y1 + '),maxSize=(' + x2 + ',' + y2 + "))";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
689
mixly/boards/default_src/python_mixpy/generators/data.js
Normal file
689
mixly/boards/default_src/python_mixpy/generators/data.js
Normal file
@@ -0,0 +1,689 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const series_create = function (_, generator) {
|
||||
generator.definitions_.import_pandas = "import pandas";
|
||||
var varName1 = generator.valueToCode(this, 'SER', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
var code = varName + ' = ' + 'pandas.Series(' + varName1 + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const series_create_from_index = function (_, generator) {
|
||||
generator.definitions_.import_pandas = "import pandas";
|
||||
var varName1 = generator.valueToCode(this, 'SER', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var varName2 = generator.valueToCode(this, 'INDEX', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
var code = varName + ' = ' + 'pandas.Series(' + varName1 + ',' + 'index=' + varName2 + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const dataframe_create = function (_, generator) {
|
||||
generator.definitions_.import_pandas = "import pandas";
|
||||
var varName1 = generator.valueToCode(this, 'SER', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
var code = varName + ' = ' + 'pandas.DataFrame(' + varName1 + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const dataframe_create_from_index = function (_, generator) {
|
||||
generator.definitions_.import_pandas = "import pandas";
|
||||
var varName1 = generator.valueToCode(this, 'SER', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var varName2 = generator.valueToCode(this, 'INDEX_COLUMN', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var varName3 = generator.valueToCode(this, 'INDEX_RAW', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
var code = varName + ' = ' + 'pandas.DataFrame(' + varName1 + ',' + 'columns=' + varName2 + ',index=' + varName3 + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const dataframe_create_from_one_index = function (_, generator) {
|
||||
generator.definitions_.import_pandas = "import pandas";
|
||||
var name = this.getFieldValue('COLUMN_RAW');
|
||||
var varName1 = generator.valueToCode(this, 'SER', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var varName2 = generator.valueToCode(this, 'INDEX', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
var code = varName + ' = ' + 'pandas.DataFrame(' + varName1 + ',' + name + '=' + varName2 + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const series_create_from_text = function (_, generator) {
|
||||
generator.definitions_.import_pandas = "import pandas";
|
||||
var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
|
||||
var text = this.getFieldValue('TEXT');
|
||||
var code = varName + ' = ' + 'pandas.Series([' + text + '])\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const series_index_value = function (_, generator) {
|
||||
generator.definitions_.import_pandas = "import pandas";
|
||||
var varName = generator.valueToCode(this, 'SERIES', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var name = this.getFieldValue('INDEX_VALUE');
|
||||
var code = varName + '.' + name;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const series_get_num = function (_, generator) {
|
||||
// Indexing into a list is the same as indexing into a string.
|
||||
var varName = generator.valueToCode(this, 'SER', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var argument0 = generator.valueToCode(this, 'AT',
|
||||
generator.ORDER_ADDITIVE) || '1';
|
||||
|
||||
var code = varName + '[' + argument0 + ']';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const pl_show = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var code = 'pylab.show()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_axes = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var code = 'pylab.axes(aspect=1)\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_plot_easy = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var varName = generator.valueToCode(this, 'SER', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var code = 'pylab.plot(' + varName + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_plot = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var line = this.getFieldValue('LINE');
|
||||
var color = this.getFieldValue('COLOR');
|
||||
var dot = this.getFieldValue('DOT');
|
||||
var varName = generator.valueToCode(this, 'SER', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var code = 'pylab.plot(' + varName + ",'" + dot + line + color + "')\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_legend = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
generator.definitions_.import_matplotlib_font_manager = "import matplotlib.font_manager";
|
||||
var code = 'pylab.legend(' + 'prop=matplotlib.font_manager.FontProperties("' + "STSong" + '")' + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_title = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var a = generator.valueToCode(this, 'TITLE', generator.ORDER_ATOMIC);
|
||||
var code = 'pylab.title(' + a + ', fontproperties = "' + "STSong" + '")\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_label = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var direction = this.getFieldValue('DIR');
|
||||
var a = generator.valueToCode(this, 'LABEL', generator.ORDER_ATOMIC);
|
||||
var code = 'pylab.' + direction + 'label(' + a + ', fontproperties = "' + "STSong" + '")\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const array_create = function (_, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var from = generator.valueToCode(this, "FROM", generator.ORDER_NONE) || "0";
|
||||
var end = generator.valueToCode(this, "TO", generator.ORDER_NONE) || "0";
|
||||
var step = generator.valueToCode(this, "STEP", generator.ORDER_NONE) || "1";
|
||||
var code = "numpy.arange(" + from + ", " + end + ", " + step + ")";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const pl_plot_bar = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var direction = this.getFieldValue('DIR');
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var code = 'pylab.' + direction + '(' + a + ',' + b + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_plot_scatter = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var s = generator.valueToCode(this, 'S', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var color = this.getFieldValue('COLOR');
|
||||
var dot = this.getFieldValue('DOT');
|
||||
var tag = generator.valueToCode(this, 'TAG', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var code = 'pylab.scatter(' + a + ',' + b + ",s=" + s + ",c='" + color + "',marker='" + dot + "',label=" + tag + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_plot_xy = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var line = this.getFieldValue('LINE');
|
||||
var color = this.getFieldValue('COLOR');
|
||||
var dot = this.getFieldValue('DOT');
|
||||
var tag = generator.valueToCode(this, 'TAG', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var code = 'pylab.plot(' + a + ',' + b + ",'" + dot + line + color + "'" + ',label=' + tag + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_bar = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var tag = generator.valueToCode(this, 'TAG', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var width = generator.valueToCode(this, 'WIDTH', generator.ORDER_RELATIONAL) || '0';
|
||||
var color = this.getFieldValue('COLOR')
|
||||
var align = this.getFieldValue('ALIGN');
|
||||
var code = 'pylab.bar(' + a + ',' + b + ',align="' + align + '",color="' + color + '",width=' + width + ',label=' + tag + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_pie = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var explode = generator.valueToCode(this, 'EXPLODE', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var shadow = this.getFieldValue('SHADOW');
|
||||
var autopct = this.getFieldValue('autopct');
|
||||
if (autopct != 'None') { autopct = "'" + autopct + "'" }
|
||||
var code = 'pylab.pie(' + a + ',explode=' + explode + ',labels=' + b + ',autopct=' + autopct + ',shadow=' + shadow + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_hist = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var code = 'pylab.hist(' + a + ',' + b + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_ticks = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var direction = this.getFieldValue('DIR');
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var code = 'pylab.' + direction + 'ticks(' + a + ',' + b + ",fontproperties = '" + "STSong" + "')\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const numpy_trig = function (_, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var argument0 = generator.valueToCode(this, 'NUM', generator.ORDER_NONE) || '0';
|
||||
var operator = this.getFieldValue('OP');
|
||||
var code = "";
|
||||
|
||||
code = "numpy." + operator + '(' + argument0 + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const pl_subplot = function (_, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var from = generator.valueToCode(this, "VET", generator.ORDER_NONE) || "0";
|
||||
var end = generator.valueToCode(this, "HOR", generator.ORDER_NONE) || "0";
|
||||
var step = generator.valueToCode(this, "NUM", generator.ORDER_NONE) || "0";
|
||||
var code = "pylab.subplot(" + from + ", " + end + ", " + step + ")\n";
|
||||
return code
|
||||
}
|
||||
|
||||
export const pandas_readcsv = function (_, generator) {
|
||||
// For each loop.
|
||||
generator.definitions_.import_pandas = "import pandas";
|
||||
var fn = generator.valueToCode(this, 'FILENAME', generator.ORDER_ATOMIC);
|
||||
var mode = this.getFieldValue('MODE');
|
||||
var code = 'pandas.read_csv(' + fn + ', header=' + mode + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const dataframe_get = function (_, generator) {
|
||||
var mode = this.getFieldValue('MODE');
|
||||
var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT);
|
||||
if (mode == "column") {
|
||||
var code = varName + "[" + text + "]";
|
||||
}
|
||||
else if (mode == 'raw') {
|
||||
var code = varName + ".loc[" + text + "]";
|
||||
}
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const pl_savefig = function (_, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);
|
||||
var code = "pylab.savefig(" + file + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const pl_text = function (_, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var from = generator.valueToCode(this, "VET", generator.ORDER_NONE) || "0";
|
||||
var end = generator.valueToCode(this, "HOR", generator.ORDER_NONE) || "0";
|
||||
var step = generator.valueToCode(this, "NUM", generator.ORDER_NONE) || "0";
|
||||
var halign = this.getFieldValue('HALIGN');
|
||||
var valign = this.getFieldValue('VALIGN');
|
||||
var fontnum = generator.valueToCode(this, 'FONTNUM', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var code = "pylab.text(" + from + ", " + end + ", " + step + ", ha='" + halign + "', va='" + valign + "', fontsize=" + fontnum + ")\n";
|
||||
return code
|
||||
}
|
||||
|
||||
export const array_toarray = function (_, generator) {
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0';
|
||||
generator.definitions_['import_numpy'] = 'import numpy';
|
||||
var code = 'numpy.array(' + str + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const plot_show = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var code = 'plt.show()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_axes = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var code = 'plt.axes(aspect=1)\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_plot_easy = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var varName = generator.valueToCode(this, 'SER', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var code = 'plt.plot(' + varName + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_plot = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var line = this.getFieldValue('LINE');
|
||||
var color = this.getFieldValue('COLOR');
|
||||
var dot = this.getFieldValue('DOT');
|
||||
var varName = generator.valueToCode(this, 'SER', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var code = 'plt.plot(' + varName + ", '" + dot + line + color + "')\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_legend = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
generator.definitions_.import_matplotlib_font_manager = "import matplotlib.font_manager";
|
||||
var code = 'plt.legend(' + 'prop=matplotlib.font_manager.FontProperties("' + "STSong" + '")' + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_title = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var a = generator.valueToCode(this, 'TITLE', generator.ORDER_ATOMIC);
|
||||
var code = 'plt.title(' + a + ', fontproperties="' + "STSong" + '")\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_label = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var direction = this.getFieldValue('DIR');
|
||||
var a = generator.valueToCode(this, 'LABEL', generator.ORDER_ATOMIC);
|
||||
var code = 'plt.' + direction + 'label(' + a + ', fontproperties="' + "STSong" + '")\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_plot_bar = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var direction = this.getFieldValue('DIR');
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var code = 'plt.' + direction + '(' + a + ', ' + b + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_plot_scatter = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var s = generator.valueToCode(this, 'S', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var color = this.getFieldValue('COLOR');
|
||||
var dot = this.getFieldValue('DOT');
|
||||
var tag = generator.valueToCode(this, 'TAG', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var code = 'plt.scatter(' + a + ', ' + b + ", s=" + s + ", c='" + color + "', marker='" + dot + "', label=" + tag + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_plot_xy = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var line = this.getFieldValue('LINE');
|
||||
var color = this.getFieldValue('COLOR');
|
||||
var dot = this.getFieldValue('DOT');
|
||||
var tag = generator.valueToCode(this, 'TAG', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var code = 'plt.plot(' + a + ', ' + b + ", '" + dot + line + color + "'" + ', label=' + tag + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_bar = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var tag = generator.valueToCode(this, 'TAG', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var width = generator.valueToCode(this, 'WIDTH', generator.ORDER_RELATIONAL) || '0';
|
||||
var color = this.getFieldValue('COLOR')
|
||||
var align = this.getFieldValue('ALIGN');
|
||||
var code = 'plt.bar(' + a + ', ' + b + ', align="' + align + '", color="' + color + '", width=' + width + ', label=' + tag + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_pie = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var explode = generator.valueToCode(this, 'EXPLODE', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var shadow = this.getFieldValue('SHADOW');
|
||||
var autopct = this.getFieldValue('autopct');
|
||||
if (autopct != 'None') { autopct = "'" + autopct + "'" }
|
||||
var code = 'plt.pie(' + a + ', explode=' + explode + ', labels=' + b + ', autopct=' + autopct + ', shadow=' + shadow + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_hist = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var code = 'plt.hist(' + a + ', ' + b + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_ticks = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var direction = this.getFieldValue('DIR');
|
||||
var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\'';
|
||||
var code = 'plt.' + direction + 'ticks(' + a + ', ' + b + ", fontproperties = '" + "STSong" + "')\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_subplot = function (_, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var from = generator.valueToCode(this, "VET", generator.ORDER_NONE) || "0";
|
||||
var end = generator.valueToCode(this, "HOR", generator.ORDER_NONE) || "0";
|
||||
var step = generator.valueToCode(this, "NUM", generator.ORDER_NONE) || "0";
|
||||
var code = "plt.subplot(" + from + ", " + end + ", " + step + ")\n";
|
||||
return code
|
||||
}
|
||||
|
||||
export const plot_savefig = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var code = "plt.savefig('1.png')\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const plot_text = function (_, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var from = generator.valueToCode(this, "VET", generator.ORDER_NONE) || "0";
|
||||
var end = generator.valueToCode(this, "HOR", generator.ORDER_NONE) || "0";
|
||||
var step = generator.valueToCode(this, "NUM", generator.ORDER_NONE) || "0";
|
||||
var halign = this.getFieldValue('HALIGN');
|
||||
var valign = this.getFieldValue('VALIGN');
|
||||
var fontnum = generator.valueToCode(this, 'FONTNUM', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var code = "plt.text(" + from + ", " + end + ", " + step + ", ha='" + halign + "', va='" + valign + "', fontsize=" + fontnum + ")\n";
|
||||
return code
|
||||
}
|
||||
|
||||
export const numpy_shape = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = 'numpy.shape(' + array + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_reshape = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var dimensions = generator.valueToCode(block, 'DIMENSIONS', generator.ORDER_ATOMIC) || '(1, -1)';
|
||||
var code = 'numpy.reshape(' + array + ', ' + dimensions + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_astype = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var dtype = block.getFieldValue('TYPE');
|
||||
var code = array + '.astype(' + dtype + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const pylab_imshow = function (block, generator) {
|
||||
generator.definitions_.import_pylab = "import pylab";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var colormap = block.getFieldValue('COLORMAP') || 'gray';
|
||||
var code = 'pylab.imshow(' + array + ', cmap="' + colormap + '")\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const numpy_mean_digit = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var X = generator.valueToCode(block, 'X', generator.ORDER_ATOMIC) || '[]';
|
||||
var y = generator.valueToCode(block, 'Y', generator.ORDER_ATOMIC) || '[]';
|
||||
var digit = generator.valueToCode(block, 'DIGIT', generator.ORDER_ATOMIC) || '0';
|
||||
var code = 'numpy.mean(' + X + '[' + y + ' == ' + digit + '], axis=0)';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_argmin_template_match = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
generator.definitions_.import_cv2 = "import cv2";
|
||||
var image = generator.valueToCode(block, 'IMAGE', generator.ORDER_ATOMIC) || '[]';
|
||||
var templates = generator.valueToCode(block, 'TEMPLATES', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = 'numpy.argmin([numpy.sum(cv2.absdiff(' + image + ', template)) for template in ' + templates + '])';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_mean = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var axis = block.getFieldValue('AXIS');
|
||||
if (axis === 'NONE') {
|
||||
var code = 'numpy.mean(' + array + ')';
|
||||
} else {
|
||||
var code = 'numpy.mean(' + array + ', axis=' + axis + ')';
|
||||
}
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_std = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var axis = block.getFieldValue('AXIS');
|
||||
if (axis === 'NONE') {
|
||||
var code = 'numpy.std(' + array + ')';
|
||||
} else {
|
||||
var code = 'numpy.std(' + array + ', axis=' + axis + ')';
|
||||
}
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const pandas_dropna = function (block, generator) {
|
||||
generator.definitions_.import_pandas = "import pandas";
|
||||
var df = generator.valueToCode(block, 'DF', generator.ORDER_ATOMIC) || 'df';
|
||||
|
||||
var code = df + '.dropna()';
|
||||
|
||||
return [code, generator.ORDER_MEMBER];
|
||||
}
|
||||
|
||||
export const pandas_drop_columns = function (block, generator) {
|
||||
generator.definitions_.import_pandas = "import pandas";
|
||||
var dataframe = generator.valueToCode(block, 'DATAFRAME', generator.ORDER_ATOMIC) || 'df';
|
||||
var columns = generator.valueToCode(block, 'COLUMNS', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = dataframe + '.drop(columns=' + columns + ', axis=1)';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_ones = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var num = generator.valueToCode(block, 'NUM', generator.ORDER_ATOMIC) || '1';
|
||||
var code = 'numpy.ones(' + num + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_c_ = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var array1 = generator.valueToCode(block, 'ARRAY1', generator.ORDER_ATOMIC) || '[]';
|
||||
var array2 = generator.valueToCode(block, 'ARRAY2', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = 'numpy.c_[' + array1 + ', ' + array2 + ']';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_linalg_det = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
generator.definitions_.import_linalg = "import numpy.linalg";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = 'numpy.linalg.det(' + array + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const matrix_transpose = function (block, generator) {
|
||||
var matrix = generator.valueToCode(block, 'MATRIX', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = matrix + '.T';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const matrix_multiplication = function (block, generator) {
|
||||
var matrix1 = generator.valueToCode(block, 'MATRIX1', generator.ORDER_ATOMIC) || '[]';
|
||||
var matrix2 = generator.valueToCode(block, 'MATRIX2', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = matrix1 + ' @ ' + matrix2;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_linalg_inv = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
generator.definitions_.import_linalg = "import numpy.linalg";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = 'numpy.linalg.inv(' + array + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const dataframe_median = function (block, generator) {
|
||||
var dataframe = generator.valueToCode(block, 'DATAFRAME', generator.ORDER_ATOMIC) || 'df';
|
||||
var code = dataframe + '.median()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const dataframe_fillna = function (block, generator) {
|
||||
var dataframe = generator.valueToCode(block, 'DATAFRAME', generator.ORDER_ATOMIC) || 'df';
|
||||
var value = generator.valueToCode(block, 'VALUE', generator.ORDER_ATOMIC) || '0';
|
||||
var inplace = block.getFieldValue('INPLACE') || 'False';
|
||||
var code = dataframe + '.fillna(value=' + value + ', inplace=' + inplace + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const dataframe_info = function (block, generator) {
|
||||
var dataframe = generator.valueToCode(block, 'DATAFRAME', generator.ORDER_ATOMIC) || 'df';
|
||||
var code = dataframe + '.info()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_min = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var axis = block.getFieldValue('AXIS');
|
||||
var code = (axis === 'None') ? 'numpy.min(' + array + ')' : 'numpy.min(' + array + ', axis=' + axis + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_max = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var axis = block.getFieldValue('AXIS');
|
||||
var code = (axis === 'None') ? 'numpy.max(' + array + ')' : 'numpy.max(' + array + ', axis=' + axis + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_size = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = array + '.size';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_dot = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var array1 = generator.valueToCode(block, 'ARRAY1', generator.ORDER_ATOMIC) || '[]';
|
||||
var array2 = generator.valueToCode(block, 'ARRAY2', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = 'numpy.dot(' + array1 + ', ' + array2 + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_square = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = 'numpy.square(' + array + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_sum = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = 'numpy.sum(' + array + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const numpy_random_random = function (block, generator) {
|
||||
generator.definitions_.import_numpy = "import numpy";
|
||||
var size = generator.valueToCode(block, 'SIZE', generator.ORDER_ATOMIC) || '1';
|
||||
var code = 'numpy.random.random(' + size + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const py_sum = function (block, generator) {
|
||||
var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]';
|
||||
var code = 'sum(' + array + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const dataframe_sort_values = function (block, generator) {
|
||||
const dict = generator.valueToCode(block, 'DICT', generator.ORDER_ATOMIC) || 'df';
|
||||
const key = generator.valueToCode(block, 'KEY', generator.ORDER_ATOMIC) || '\'tag\'';
|
||||
const ascending = block.getFieldValue('AS_CENDING');
|
||||
const code = `${dict}.sort_values(by=${key}, ascending=${ascending})`;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const dataframe_head_tail = function (block, generator) {
|
||||
const dict = generator.valueToCode(block, 'DICT', generator.ORDER_ATOMIC) || 'df';
|
||||
const lines = generator.valueToCode(block, 'LINES', generator.ORDER_ATOMIC) || '1';
|
||||
const type = block.getFieldValue('TYPE');
|
||||
const code = `${dict}.${type}(${lines})`;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const dataframe_select = function (block, generator) {
|
||||
const dict = generator.valueToCode(block, 'DICT', generator.ORDER_ATOMIC) || 'df';
|
||||
const key = generator.valueToCode(block, 'KEY', generator.ORDER_ATOMIC) || 'df[\'tag\'] > 1';
|
||||
const code = `${dict}[${key}]`;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const dataframe_groupby = function (block, generator) {
|
||||
const dict = generator.valueToCode(block, 'DICT', generator.ORDER_ATOMIC) || 'df';
|
||||
const key = generator.valueToCode(block, 'KEY', generator.ORDER_ATOMIC) || '\'tag\'';
|
||||
const code = `${dict}.groupby(by=${key})`;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const dataframe_aggregate_func = function (block, generator) {
|
||||
const dict = generator.valueToCode(block, 'DICT', generator.ORDER_ATOMIC) || 'df';
|
||||
const type = block.getFieldValue('TYPE');
|
||||
const code = `${dict}.${type}()`;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const plot_cla = function (_, generator) {
|
||||
generator.definitions_.import_matplotlib_pyplot = 'import matplotlib.pyplot as plt';
|
||||
var code = 'plt.cla()\n';
|
||||
return code;
|
||||
}
|
||||
@@ -0,0 +1,176 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const ds_create_linkedlist = function (_, generator) {
|
||||
// Create a list with any number of elements of any type.
|
||||
//var dropdown_type = this.getFieldValue('TYPE');
|
||||
var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
var typeName = generator.variableDB_.getName(this.getFieldValue('TYPE'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
//var size=window.parseFloat(this.getFieldValue('SIZE'));
|
||||
var code = 'class ' + typeName + ":\n";
|
||||
code += ' def __init__(self):\n';
|
||||
var attr = new Array(this.itemCount_);
|
||||
var default_value = '0';
|
||||
for (var n = 0; n < this.itemCount_; n++) {
|
||||
var keyName = this.getFieldValue('KEY' + n);
|
||||
attr[n] = ' self.' + keyName + " = " + (generator.valueToCode(this, 'ADD' + n, generator.ORDER_NONE) || default_value);
|
||||
}
|
||||
code += attr.join('\n') + '\n';
|
||||
code += ' self.next = None\n';
|
||||
code += varName + ' = ' + typeName + '()\n'
|
||||
return code;
|
||||
}
|
||||
|
||||
export const ds_create_node = function (_, generator) {
|
||||
var varName = generator.valueToCode(this, 'NODE', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var typeName = generator.variableDB_.getName(this.getFieldValue('TYPE'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
//var size=window.parseFloat(this.getFieldValue('SIZE'));
|
||||
|
||||
var code = varName + ' = ' + typeName + '()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const ds_get_node_attr = function (_, generator) {
|
||||
var varName = generator.valueToCode(this, 'NODE', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var typeName = generator.variableDB_.getName(this.getFieldValue('TYPE'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
var code = varName + '.' + typeName;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const ds_set_node_attr = function (_, generator) {
|
||||
var varName = generator.valueToCode(this, 'NODE', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var typeName = generator.variableDB_.getName(this.getFieldValue('TYPE'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var code = varName + '.' + typeName + ' = ' + argument + '\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const ds_add_node_by_name = function (_, generator) {
|
||||
var varName = generator.valueToCode(this, 'NODE', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var varName2 = generator.valueToCode(this, 'NODE2', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var varName3 = generator.valueToCode(this, 'NODE3', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var direction = this.getFieldValue('DIR');
|
||||
if (direction == 'after') {
|
||||
var code = 'now = ' + varName + '\n';
|
||||
code += 'while now != ' + varName2 + ' and now != None:\n';
|
||||
code += ' now = now.next\n';
|
||||
code += 'if now != None:\n'
|
||||
code += ' ' + varName3 + '.next = now.next\n';
|
||||
code += ' ' + 'now.next = ' + varName3 + '\n';
|
||||
code += ' print("插入节点成功")\n';
|
||||
code += 'else:\n'
|
||||
code += ' print("插入节点失败,未找到指定名称的节点")\n';
|
||||
}
|
||||
if (direction == 'before') {
|
||||
var code = 'if ' + varName + ' == ' + varName2 + ':\n';
|
||||
code += ' ' + varName3 + '.next = ' + varName + '\n';
|
||||
code += 'else:\n'
|
||||
code += ' now = ' + varName + '\n';
|
||||
code += ' while now.next != ' + varName2 + " and now.next != None:\n";
|
||||
code += ' now = now.next\n';
|
||||
code += ' if now != None:\n'
|
||||
code += ' ' + varName3 + '.next = now.next\n';
|
||||
code += ' now.next = ' + varName3 + '\n';
|
||||
code += ' print("插入节点成功")\n';
|
||||
code += ' else:\n'
|
||||
code += ' print("插入节点失败,未找到指定名称的节点")\n';
|
||||
}
|
||||
return code;
|
||||
}
|
||||
|
||||
export const ds_add_node_by_attr = function (_, generator) {
|
||||
var varName = generator.valueToCode(this, 'NODE', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var varName2 = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var varName3 = generator.valueToCode(this, 'NODE3', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var typeName = generator.variableDB_.getName(this.getFieldValue('TYPE'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
var direction = this.getFieldValue('DIR');
|
||||
if (direction == 'after') {
|
||||
var code = 'now = ' + varName + '\n';
|
||||
code += 'while now.' + typeName + ' != ' + varName2 + ' and now != None:\n';
|
||||
code += ' now = now.next\n';
|
||||
code += 'if now != None:\n'
|
||||
code += ' ' + varName3 + '.next = now.next\n';
|
||||
code += ' ' + 'now.next = ' + varName3 + '\n';
|
||||
code += ' print("插入节点成功")\n';
|
||||
code += 'else:\n'
|
||||
code += ' print("插入节点失败,未找到指定的节点")\n';
|
||||
}
|
||||
if (direction == 'before') {
|
||||
var code = 'if ' + varName + '.' + typeName + ' == ' + varName2 + ':\n';
|
||||
code += ' ' + varName3 + '.next = ' + varName + '\n';
|
||||
code += 'else:\n'
|
||||
code += ' now = ' + varName + '\n';
|
||||
code += ' while now.next.' + typeName + ' != ' + varName2 + "and now.next != None:\n";
|
||||
code += ' now = now.next\n';
|
||||
code += ' if now != None:\n'
|
||||
code += ' ' + varName3 + '.next = now.next\n';
|
||||
code += ' now.next = ' + varName3 + '\n';
|
||||
code += ' print("插入节点成功")\n';
|
||||
code += ' else:\n'
|
||||
code += ' print("插入节点失败,未找到指定的节点")\n';
|
||||
}
|
||||
return code;
|
||||
}
|
||||
|
||||
export const ds_del_node_by_name = function (_, generator) {
|
||||
var varName = generator.valueToCode(this, 'NODE', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var varName2 = generator.valueToCode(this, 'NODE2', generator.ORDER_ASSIGNMENT) || '0';
|
||||
|
||||
|
||||
var code = 'if ' + varName + ' == ' + varName2 + ':\n';
|
||||
code += ' ' + varName + '.next = None\n';
|
||||
code += 'else:\n'
|
||||
code += ' now = ' + varName + '\n';
|
||||
code += ' while now.next != ' + varName2 + " and now.next != None:\n";
|
||||
code += ' now = now.next\n';
|
||||
code += ' if now != None:\n'
|
||||
code += ' now.next = now.next.next\n';
|
||||
code += ' print("删除节点成功")\n';
|
||||
code += ' else:\n'
|
||||
code += ' print("删除节点失败,未找到指定名称的节点")\n';
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
export const ds_del_node_by_attr = function (_, generator) {
|
||||
var varName = generator.valueToCode(this, 'NODE', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var varName2 = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';
|
||||
|
||||
var typeName = generator.variableDB_.getName(this.getFieldValue('TYPE'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
|
||||
var code = 'if ' + varName + '.' + typeName + ' == ' + varName2 + ':\n';
|
||||
code += ' ' + varName + '.next = None\n';
|
||||
code += 'else:\n'
|
||||
code += ' now = ' + varName + '\n';
|
||||
code += ' while now.next.' + typeName + ' != ' + varName2 + " and now.next != None:\n";
|
||||
code += ' now = now.next\n';
|
||||
code += ' if now != None:\n'
|
||||
code += ' now.next = now.next.next\n';
|
||||
code += ' print("删除节点成功")\n';
|
||||
code += ' else:\n'
|
||||
code += ' print("删除节点失败,未找到指定的节点")\n';
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
export const ds_reverse_linkedlist = function (_, generator) {
|
||||
var varName = generator.valueToCode(this, 'NODE', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var varName2 = generator.valueToCode(this, 'NODE2', generator.ORDER_ASSIGNMENT) || '0';
|
||||
|
||||
|
||||
var code = 'ptr = ' + varName + '\n';
|
||||
code += 'before = None\n';
|
||||
code += 'while ptr != None:\n'
|
||||
code += ' last = before\n';
|
||||
code += ' before = ptr\n';
|
||||
code += ' ptr = ptr.next\n';
|
||||
code += ' before.next = last\n'
|
||||
code += varName2 + ' = before\n';
|
||||
return code;
|
||||
}
|
||||
86
mixly/boards/default_src/python_mixpy/generators/factory.js
Normal file
86
mixly/boards/default_src/python_mixpy/generators/factory.js
Normal file
@@ -0,0 +1,86 @@
|
||||
export const factory_from_import = function (_, generator) {
|
||||
var path = this.getFieldValue('path');
|
||||
var module = this.getFieldValue('module');
|
||||
generator.definitions_['import_' + path + '_' + module] = 'from ' + path + ' import ' + module;
|
||||
return '';
|
||||
}
|
||||
|
||||
export const factory_import = function (_, generator) {
|
||||
var module = this.getFieldValue('module');
|
||||
generator.definitions_['import_' + module] = 'import ' + module;
|
||||
return '';
|
||||
}
|
||||
|
||||
export const factory_function_noreturn = function (_, generator) {
|
||||
var NAME = this.getFieldValue('NAME');
|
||||
var code = new Array(this.itemCount_);
|
||||
for (var n = 0; n < this.itemCount_; n++) {
|
||||
code[n] = generator.valueToCode(this, 'ADD' + n,
|
||||
generator.ORDER_NONE) || '';
|
||||
}
|
||||
return NAME + '(' + code.join(', ') + ')\n';
|
||||
}
|
||||
|
||||
export const factory_function_return = function (_, generator) {
|
||||
var NAME = this.getFieldValue('NAME');
|
||||
var code = new Array(this.itemCount_);
|
||||
for (var n = 0; n < this.itemCount_; n++) {
|
||||
code[n] = generator.valueToCode(this, 'ADD' + n,
|
||||
generator.ORDER_NONE) || '';
|
||||
}
|
||||
return [NAME + '(' + code.join(', ') + ')', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const factory_declare = function () {
|
||||
var TYPE = this.getFieldValue('TYPE');
|
||||
var NAME = this.getFieldValue('NAME');
|
||||
return NAME + ' = ' + TYPE + '()\n';
|
||||
}
|
||||
|
||||
export const factory_callMethod_noreturn = function (_, generator) {
|
||||
var NAME = this.getFieldValue('NAME');
|
||||
var METHOD = this.getFieldValue('METHOD');
|
||||
var code = new Array(this.itemCount_);
|
||||
for (var n = 0; n < this.itemCount_; n++) {
|
||||
code[n] = generator.valueToCode(this, 'ADD' + n,
|
||||
generator.ORDER_NONE) || '';
|
||||
}
|
||||
return NAME + '.' + METHOD + '(' + code.join(', ') + ')\n';
|
||||
}
|
||||
|
||||
export const factory_callMethod_return = function (_, generator) {
|
||||
var NAME = this.getFieldValue('NAME');
|
||||
var METHOD = this.getFieldValue('METHOD');
|
||||
var code = new Array(this.itemCount_);
|
||||
for (var n = 0; n < this.itemCount_; n++) {
|
||||
code[n] = generator.valueToCode(this, 'ADD' + n,
|
||||
generator.ORDER_NONE) || '';
|
||||
}
|
||||
return [NAME + '.' + METHOD + '(' + code.join(', ') + ')', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const factory_block = function () {
|
||||
var VALUE = this.getFieldValue('VALUE');
|
||||
//if(!(VALUE.charAt(VALUE.length-1)==";")){
|
||||
//VALUE=VALUE+';';
|
||||
//}
|
||||
return VALUE + '\n';
|
||||
}
|
||||
|
||||
export const factory_block_return = function (_, generator) {
|
||||
var VALUE = this.getFieldValue('VALUE');
|
||||
return [VALUE, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const factory_block_with_textarea = function () {
|
||||
var VALUE = this.getFieldValue('VALUE');
|
||||
//if(!(VALUE.charAt(VALUE.length-1)==";")){
|
||||
//VALUE=VALUE+';';
|
||||
//}
|
||||
return VALUE + '\n';
|
||||
}
|
||||
|
||||
export const factory_block_return_with_textarea = function (_, generator) {
|
||||
var VALUE = this.getFieldValue('VALUE');
|
||||
return [VALUE, generator.ORDER_ATOMIC];
|
||||
}
|
||||
53
mixly/boards/default_src/python_mixpy/generators/hardware.js
Normal file
53
mixly/boards/default_src/python_mixpy/generators/hardware.js
Normal file
@@ -0,0 +1,53 @@
|
||||
import { JSFuncs } from 'mixly';
|
||||
|
||||
export const hardware_arduino_start = function (_, generator) {
|
||||
generator.definitions_['import_s4alib'] = 'import s4alib';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
// var code= v + '.start()\n';
|
||||
var code = v + ' = s4alib.s4a_start("' + JSFuncs.getCom() + '")\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const inout_highlow = function (_, generator) {
|
||||
// Boolean values HIGH and LOW.
|
||||
var code = (this.getFieldValue('BOOL') == 'HIGH') ? '1' : '0';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const hardware_arduino_digital_write = function (_, generator) {
|
||||
generator.definitions_['import_s4alib'] = 'import s4alib';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);
|
||||
var code = "";
|
||||
code += '' + v + '.digital_write(' + dropdown_pin + ',' + dropdown_stat + ')\n'
|
||||
return code;
|
||||
}
|
||||
|
||||
export const hardware_arduino_digital_read = function (_, generator) {
|
||||
generator.definitions_['import_s4alib'] = 'import s4alib';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var code = "";
|
||||
code = '' + v + '.digital_read(' + dropdown_pin + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const hardware_arduino_analog_read = function (_, generator) {
|
||||
generator.definitions_['import_s4alib'] = 'import s4alib';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var code = "";
|
||||
code = '' + v + '.analog_read(' + dropdown_pin + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const hardware_arduino_analog_write = function (_, generator) {
|
||||
generator.definitions_['import_s4alib'] = 'import s4alib';
|
||||
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);
|
||||
var code = "";
|
||||
code += '' + v + '.analog_write(' + dropdown_pin + ',' + value_num + ')\n'
|
||||
return code;
|
||||
}
|
||||
55
mixly/boards/default_src/python_mixpy/generators/inout.js
Normal file
55
mixly/boards/default_src/python_mixpy/generators/inout.js
Normal file
@@ -0,0 +1,55 @@
|
||||
export const inout_input = function (_, generator) {
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
|
||||
return ['input(' + str + ')', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const inout_print = function (_, generator) {
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
|
||||
var code = "print(" + str + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const inout_print_inline = function (_, generator) {
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
|
||||
var code = "print(" + str + ',end ="")\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const inout_print_end = function (_, generator) {
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
|
||||
var end = generator.valueToCode(this, 'END', generator.ORDER_ATOMIC) || '""';
|
||||
var code = "print(" + str + ',end =' + end + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const inout_type_input = function (_, generator) {
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
|
||||
var type = this.getFieldValue('DIR');
|
||||
if (type == 'str') { var code = 'input(' + str + ')' }
|
||||
else if (type == 'int') { var code = 'int(input(' + str + '))' }
|
||||
else if (type == 'float') { var code = 'float(input(' + str + '))' }
|
||||
//var code=varname+"." + type + "(" + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const pyinout_type_input = function (_, generator) {
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
|
||||
var type = this.getFieldValue('DIR');
|
||||
generator.definitions_['import_pyinput'] = 'import pyinput';
|
||||
if (type == 'str') { var code = 'pyinput.input(' + str + ')' }
|
||||
else if (type == 'int') { var code = 'int(pyinput.input(' + str + '))' }
|
||||
else if (type == 'float') { var code = 'float(pyinput.input(' + str + '))' }
|
||||
//var code=varname+"." + type + "(" + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const inout_print_many = function (_, generator) {
|
||||
var code = new Array(this.itemCount_);
|
||||
var default_value = '0';
|
||||
for (var n = 0; n < this.itemCount_; n++) {
|
||||
code[n] = generator.valueToCode(this, 'ADD' + n,
|
||||
generator.ORDER_NONE) || default_value;
|
||||
}
|
||||
var code = 'print(' + code.join(', ') + ')\n';
|
||||
return code;
|
||||
}
|
||||
129
mixly/boards/default_src/python_mixpy/generators/iot.js
Normal file
129
mixly/boards/default_src/python_mixpy/generators/iot.js
Normal file
@@ -0,0 +1,129 @@
|
||||
export const iot_mixio_connect = function (_, generator) {
|
||||
generator.definitions_['import_mixiot'] = "import mixiot";
|
||||
var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);
|
||||
var username = generator.valueToCode(this, 'USERNAME', generator.ORDER_ATOMIC);
|
||||
var password = generator.valueToCode(this, 'PASSWORD', generator.ORDER_ATOMIC);
|
||||
var project = generator.valueToCode(this, 'PROJECT', generator.ORDER_ATOMIC);
|
||||
var timestamp = Math.round(new Date()).toString();
|
||||
//var subscribe = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT) || '0';
|
||||
var a = "f'python-mqtt-" + username.replace("'", "").replace("'", "") + timestamp.replace("'", "").replace("'", "") + "'";
|
||||
var code = 'mqtt_client = mixiot.MixIO(' + server + ', 1883 ,' + username + ', ' + password + ', ' + project + ', ' + a + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const IOT_MIXIO_PUBLISH = function (_, generator) {
|
||||
var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC);
|
||||
var msg = generator.valueToCode(this, 'MSG', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['import_mixiot'] = "import mixiot";
|
||||
var code = 'mqtt_client.publish(' + topic + ', ' + msg + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const IOT_MIXIO_PUBLISHEX = function (_, generator) {
|
||||
var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC);
|
||||
var msg = generator.valueToCode(this, 'MSG', generator.ORDER_ATOMIC);
|
||||
var q = this.getFieldValue('quality');
|
||||
generator.definitions_['import_mixiot'] = "import mixiot";
|
||||
var code = 'mqtt_client.publish(MQTT_USR_PRJ + ' + topic + ', ' + msg + ', qos='+ q +')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const IOT_MIXIO_SUBSCRIBE = function (_, generator) {
|
||||
var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC);
|
||||
var method = generator.valueToCode(this, 'METHOD', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['import_mixiot'] = "import mixiot";
|
||||
var code = 'mqtt_client.subscribe_and_set_callback(' + topic + ',' + method + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const IOT_MIXIO_UNSUBSCRIBE = function (_, generator) {
|
||||
var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['import_mixiot'] = "import mixiot";
|
||||
var code = 'mqtt_client.unsubscribe(' + topic + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const iot_mixio_disconnect = function (_, generator) {
|
||||
generator.definitions_['import_mixiot'] = "import mixiot";
|
||||
var code = 'mqtt_client.disconnect()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const iot_mixio_connect_only = function (_, generator) {
|
||||
generator.definitions_['import_mixiot'] = "import mixiot";
|
||||
var code = 'mqtt_client.connect()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const iot_mixio_check = function (_, generator) {
|
||||
generator.definitions_['import_mixiot'] = "import mixiot";
|
||||
var code = 'mqtt_client.check_msg()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const iot_mixio_format_topic = function (_, generator) {
|
||||
var code = 'mqtt_client.decode("utf-8").split("/")[-1]';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const iot_mixio_format_msg = function (_, generator) {
|
||||
var code = 'mqtt_client.decode("utf-8")';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const IOT_FORMATTING = function (_, generator) {
|
||||
generator.definitions_['import_mixpy'] = "import mixpy";
|
||||
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var code = 'mixpy.format_content(' + v + ', mqtt_client.client_id)';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const IOT_FORMAT_STRING = function (_, generator) {
|
||||
generator.definitions_['import_mixpy'] = "import mixpy";
|
||||
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var code = 'mixpy.format_str(' + v + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE = function (_, generator) {
|
||||
generator.definitions_['import_mixiot'] = "import mixiot";
|
||||
var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);
|
||||
var share_code = generator.valueToCode(this, 'KEY', generator.ORDER_ATOMIC);
|
||||
var timestamp = Math.round(new Date()).toString();
|
||||
var a = "f'python-mqtt-" + share_code.replace("'", "").replace("'", "") + timestamp.replace("'", "").replace("'", "") + "'";
|
||||
var code = 'mqtt_client = mixiot.MixIO.from_mixly_key(' + server + ', 1883 ,' + share_code + ', ' + a + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const iot_mixly_key = function (_, generator) {
|
||||
var code = this.getFieldValue('VISITOR_ID');
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const iot_mixly_key_py = function (_, generator) {
|
||||
var code = this.getFieldValue('VISITOR_ID');
|
||||
return ["'" + code + "'", generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE = function (_, generator) {
|
||||
generator.definitions_['import_mixiot'] = "import mixiot";
|
||||
var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);
|
||||
var mixly_code = generator.valueToCode(this, 'KEY', generator.ORDER_ATOMIC);
|
||||
var timestamp = Math.round(new Date()).toString();
|
||||
var a = "f'python-mqtt-" + mixly_code.replace("'", "").replace("'", "") + timestamp.replace("'", "").replace("'", "") + "'";
|
||||
var code = 'mqtt_client = mixiot.MixIO.from_share_key(' + server + ', 1883 ,' + mixly_code + ', ' + a + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const IOT_EMQX_PING = function (_, generator) {
|
||||
generator.definitions_['import_mixiot'] = "import mixiot";
|
||||
var code = 'mqtt_client.pingSync()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const IOT_MIXIO_NTP = function (_, generator) {
|
||||
generator.definitions_['import_mixiot'] = "import mixiot";
|
||||
var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC);
|
||||
var code = 'mixiot.ntp(' + addr + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
9
mixly/boards/default_src/python_mixpy/generators/pins.js
Normal file
9
mixly/boards/default_src/python_mixpy/generators/pins.js
Normal file
@@ -0,0 +1,9 @@
|
||||
export const pins_digital = function (_, generator) {
|
||||
var code = this.getFieldValue('PIN');
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const pins_digital_write = pins_digital;
|
||||
export const pins_digital_read = pins_digital;
|
||||
export const pins_analog_write = pins_digital;
|
||||
export const pins_analog_read = pins_digital;
|
||||
37
mixly/boards/default_src/python_mixpy/generators/serial.js
Normal file
37
mixly/boards/default_src/python_mixpy/generators/serial.js
Normal file
@@ -0,0 +1,37 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
import { JSFuncs } from 'mixly';
|
||||
|
||||
export const serial_open = function (_, generator) {
|
||||
generator.definitions_['import_serial'] = 'import serial';
|
||||
var time = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0'
|
||||
var varName = generator.variableDB_.getName(this.getFieldValue('SER'),
|
||||
Blockly.Variables.NAME_TYPE);
|
||||
var bps = this.getFieldValue('BPS');
|
||||
// var code= v + '.start()\n';
|
||||
var code = varName + ' = serial.Serial("' + JSFuncs.getCom() + '", ' + bps + ', timeout=' + time + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const serial_write = function (_, generator) {
|
||||
generator.definitions_['import_serial'] = 'import serial';
|
||||
var ser = generator.valueToCode(this, 'SER', generator.ORDER_ADDITIVE) || 'ser';
|
||||
var str = (generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""');
|
||||
// var code= v + '.start()\n';
|
||||
var code = ser + '.write(' + str + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const serial_read_b = function (_, generator) {
|
||||
generator.definitions_['import_serial'] = 'import serial';
|
||||
var ser = generator.valueToCode(this, 'SER', generator.ORDER_ADDITIVE) || 'ser';
|
||||
var len = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0'
|
||||
var code = ser + '.read(' + len + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const serial_close = function (_, generator) {
|
||||
generator.definitions_['import_serial'] = 'import serial';
|
||||
var ser = generator.valueToCode(this, 'SER', generator.ORDER_ADDITIVE) || 'ser';
|
||||
var code = ser + '.close()\n';
|
||||
return code;
|
||||
}
|
||||
264
mixly/boards/default_src/python_mixpy/generators/sklearn.js
Normal file
264
mixly/boards/default_src/python_mixpy/generators/sklearn.js
Normal file
@@ -0,0 +1,264 @@
|
||||
export const sklearn_make_classification = function (_, generator) {
|
||||
var value_n_samples = generator.valueToCode(this, 'n_samples', generator.ORDER_ATOMIC) || '100';
|
||||
var value_n_features = generator.valueToCode(this, 'n_features', generator.ORDER_ATOMIC) || '20';
|
||||
var value_n_informative = generator.valueToCode(this, 'n_informative', generator.ORDER_ATOMIC) || '2';
|
||||
var value_n_redundant = generator.valueToCode(this, 'n_redundant', generator.ORDER_ATOMIC) || '2';
|
||||
var value_n_repeated = generator.valueToCode(this, 'n_repeated', generator.ORDER_ATOMIC) || '0';
|
||||
var value_n_classes = generator.valueToCode(this, 'n_classes', generator.ORDER_ATOMIC) || '2';
|
||||
var value_n_clusters_per_class = generator.valueToCode(this, 'n_clusters_per_class', generator.ORDER_ATOMIC) || '2';
|
||||
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_make_classification'] = 'from sklearn.datasets import make_classification';
|
||||
var code = 'make_classification(n_samples=' + value_n_samples + ', n_features=' + value_n_features + ', n_informative=' + value_n_informative + ', n_redundant=' + value_n_redundant + ', n_repeated=' + value_n_repeated + ', n_classes=' + value_n_classes + ', n_clusters_per_class=' + value_n_clusters_per_class + ', random_state=' + value_random_state + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// sklearn 生成回归样本
|
||||
export const sklearn_make_regression = function (_, generator) {
|
||||
var value_n_samples = generator.valueToCode(this, 'n_samples', generator.ORDER_ATOMIC) || '100';
|
||||
var value_n_features = generator.valueToCode(this, 'n_features', generator.ORDER_ATOMIC) || '100';
|
||||
var value_n_informative = generator.valueToCode(this, 'n_informative', generator.ORDER_ATOMIC) || '10';
|
||||
var value_n_targets = generator.valueToCode(this, 'n_targets', generator.ORDER_ATOMIC) || '1';
|
||||
var value_bias = generator.valueToCode(this, 'bias', generator.ORDER_ATOMIC) || '0.0';
|
||||
var value_noise = generator.valueToCode(this, 'noise', generator.ORDER_ATOMIC) || '0.0';
|
||||
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_make_regression'] = 'from sklearn.datasets import make_regression';
|
||||
var code = 'make_regression(n_samples=' + value_n_samples + ', n_features=' + value_n_features + ', n_informative=' + value_n_informative + ', n_targets=' + value_n_targets + ', bias=' + value_bias + ', noise=' + value_noise + ', random_state=' + value_random_state + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// sklearn 生成聚类样本
|
||||
export const sklearn_make_blobs = function (_, generator) {
|
||||
var value_n_samples = generator.valueToCode(this, 'n_samples', generator.ORDER_ATOMIC) || '100';
|
||||
var value_n_features = generator.valueToCode(this, 'n_features', generator.ORDER_ATOMIC) || '2';
|
||||
var value_centers = generator.valueToCode(this, 'centers', generator.ORDER_ATOMIC) || 'None';
|
||||
var value_cluster_std = generator.valueToCode(this, 'cluster_std', generator.ORDER_ATOMIC) || '1.0';
|
||||
var value_center_box = generator.valueToCode(this, 'center_box', generator.ORDER_ATOMIC) || '(-10.0,10.0)';
|
||||
var value_shuffle = generator.valueToCode(this, 'shuffle', generator.ORDER_ATOMIC) || 'True';
|
||||
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_make_blobs'] = 'from sklearn.datasets import make_blobs';
|
||||
var code = 'make_blobs(n_samples=' + value_n_samples + ', n_features=' + value_n_features + ', centers=' + value_centers + ', cluster_std=' + value_cluster_std + ', center_box=' + value_center_box + ', shuffle=' + value_shuffle + ', random_state=' + value_random_state + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// sklearn 加载数据集
|
||||
export const sklearn_load = function (_, generator) {
|
||||
var dropdown_type = this.getFieldValue('type');
|
||||
var text_name = this.getFieldValue('name');
|
||||
generator.definitions_['import_sklearn_datasets'] = 'from sklearn import datasets';
|
||||
var code = text_name + ' = datasets.' + dropdown_type + '()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// sklearn 获取特征值/标签值/标签/特征
|
||||
export const sklearn_data_target = function (_, generator) {
|
||||
var value_name = generator.valueToCode(this, 'name', generator.ORDER_ATOMIC) || 'iris';
|
||||
var dropdown_type = this.getFieldValue('type');
|
||||
var code = value_name + '.' + dropdown_type;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// sklearn 数据集分割
|
||||
export const sklearn_train_test_split = function (_, generator) {
|
||||
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'iris_X';
|
||||
var value_train_target = generator.valueToCode(this, 'train_target', generator.ORDER_ATOMIC) || 'iris_y';
|
||||
var value_test_size = generator.valueToCode(this, 'test_size', generator.ORDER_ATOMIC) || '0.3';
|
||||
var value_rondom_state = generator.valueToCode(this, 'rondom_state', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_train_test_split'] = 'from sklearn.model_selection import train_test_split';
|
||||
if (value_train_target == 'None') {
|
||||
var code = 'train_test_split(' + value_train_data + ', test_size=' + value_test_size + ', random_state=' + value_rondom_state + ')';
|
||||
} else {
|
||||
var code = 'train_test_split(' + value_train_data + ', ' + value_train_target + ', test_size=' + value_test_size + ', random_state=' + value_rondom_state + ')';
|
||||
}
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// sklearn 数据集分割-无标签值
|
||||
export const sklearn_train_test_split_no_target = function (_, generator) {
|
||||
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'iris_X';
|
||||
var value_test_size = generator.valueToCode(this, 'test_size', generator.ORDER_ATOMIC) || '0.3';
|
||||
var value_rondom_state = generator.valueToCode(this, 'rondom_state', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_train_test_split'] = 'from sklearn.model_selection import train_test_split';
|
||||
var code = 'train_test_split(' + value_train_data + ', test_size=' + value_test_size + ', random_state=' + value_rondom_state + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// sklearn 初始化线性回归
|
||||
export const sklearn_LinearRegression = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var value_fit_intercept = generator.valueToCode(this, 'fit_intercept', generator.ORDER_ATOMIC) || 'True';
|
||||
var value_normalize = generator.valueToCode(this, 'normalize', generator.ORDER_ATOMIC) || 'False';
|
||||
var value_n_jobs = generator.valueToCode(this, 'n_jobs', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_linear_model'] = 'from sklearn.linear_model import LinearRegression';
|
||||
var code = value_model_name + ' = LinearRegression(fit_intercept=' + value_fit_intercept + ', normalize=' + value_normalize + ', n_jobs=' + value_n_jobs + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// sklearn 初始化岭回归
|
||||
export const sklearn_Ridge = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var value_alpha = generator.valueToCode(this, 'alpha', generator.ORDER_ATOMIC) || '1.0';
|
||||
var value_fit_intercept = generator.valueToCode(this, 'fit_intercept', generator.ORDER_ATOMIC) || 'True';
|
||||
var value_normalize = generator.valueToCode(this, 'normalize', generator.ORDER_ATOMIC) || 'False';
|
||||
var value_max_iter = generator.valueToCode(this, 'max_iter', generator.ORDER_ATOMIC) || '300';
|
||||
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_linear_model'] = 'from sklearn.linear_model import Ridge';
|
||||
var code = value_model_name + ' = Ridge(alpha=' + value_alpha + ', fit_intercept=' + value_fit_intercept + ', normalize=' + value_normalize + ', max_iter=' + value_max_iter + ', random_state=' + value_random_state + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// sklearn 初始化决策树 分类/回归算法
|
||||
export const sklearn_DecisionTreeClassifier_Regressor = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var dropdown_type = this.getFieldValue('type');
|
||||
var value_max_depth = generator.valueToCode(this, 'max_depth', generator.ORDER_ATOMIC) || 'None';
|
||||
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_' + dropdown_type] = 'from sklearn.tree import ' + dropdown_type;
|
||||
var code = value_model_name + ' = ' + dropdown_type + '(max_depth=' + value_max_depth + ', random_state=' + value_random_state + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const sklearn_RandomForestClassifier_Regressor = function (_, generator) {
|
||||
var dropdown_type = this.getFieldValue('type');
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'Model';
|
||||
var value_n_estimators = generator.valueToCode(this, 'n_estimators', generator.ORDER_ATOMIC) || '100';
|
||||
var value_max_depth = generator.valueToCode(this, 'max_depth', generator.ORDER_ATOMIC) || 'None';
|
||||
var value_n_jobs = generator.valueToCode(this, 'n_jobs', generator.ORDER_ATOMIC) || 'None';
|
||||
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_' + dropdown_type] = 'from sklearn.ensemble import ' + dropdown_type;
|
||||
var code = value_model_name + ' = ' + dropdown_type + '(n_estimators=' + value_n_estimators + ', max_depth=' + value_max_depth + ', n_jobs=' + value_n_jobs + ', random_state=' + value_random_state + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// sklearn 初始化K近邻 分类/回归算法
|
||||
export const sklearn_KNeighborsClassifier_Regressor = function (_, generator) {
|
||||
var dropdown_type = this.getFieldValue('type');
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var value_K = generator.valueToCode(this, 'K', generator.ORDER_ATOMIC) || '5';
|
||||
var value_n_jobs = generator.valueToCode(this, 'n_jobs', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_' + dropdown_type] = 'from sklearn.neighbors import ' + dropdown_type;
|
||||
var code = value_model_name + ' = ' + dropdown_type + '(n_neighbors=' + value_K + ', n_jobs=' + value_n_jobs + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// sklearn 初始化高斯贝叶斯分类算法
|
||||
export const sklearn_GaussianNB = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
generator.definitions_['import_sklearn_GaussianNB'] = 'from sklearn.naive_bayes import GaussianNB';
|
||||
var code = value_model_name + ' = GaussianNB()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// sklearn 初始化PCA降维
|
||||
export const sklearn_pca = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'pca';
|
||||
var value_n_components = generator.valueToCode(this, 'n_components', generator.ORDER_ATOMIC) || '2';
|
||||
generator.definitions_['import_sklearn_pca'] = 'from sklearn.decomposition import PCA';
|
||||
var code = value_model_name + ' = PCA(n_components=' + value_n_components + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const sklearn_pca_fit_transform = function(block, generator) {
|
||||
var value_model_name = generator.valueToCode(block, 'model_name', generator.ORDER_ATOMIC);
|
||||
var value_train_data = generator.valueToCode(block, 'train_data', generator.ORDER_ATOMIC);
|
||||
var code = value_model_name + '.fit_transform(' + value_train_data + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
// sklearn 初始K-均值聚类
|
||||
export const sklearn_KMeans = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var value_n_clusters = generator.valueToCode(this, 'n_clusters', generator.ORDER_ATOMIC) || '8';
|
||||
var value_max_iter = generator.valueToCode(this, 'max_iter', generator.ORDER_ATOMIC) || '300';
|
||||
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_KMeans'] = 'from sklearn.cluster import KMeans';
|
||||
var code = value_model_name + ' = KMeans(n_clusters=' + value_n_clusters + ', max_iter=' + value_max_iter + ', random_state=' + value_random_state + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const sklearn_KMeans_fit = function(block, generator) {
|
||||
var value_model_name = generator.valueToCode(block, 'model_name', generator.ORDER_ATOMIC);
|
||||
var value_train_data = generator.valueToCode(block, 'train_data', generator.ORDER_ATOMIC);
|
||||
var code = value_model_name + '.fit(' + value_train_data + ')\n';
|
||||
return code;
|
||||
};
|
||||
|
||||
// sklearn 训练模型
|
||||
export const sklearn_fit = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'X_train';
|
||||
var value_train_target = generator.valueToCode(this, 'train_target', generator.ORDER_ATOMIC) || 'y_train';
|
||||
if (value_train_target == 'None') {
|
||||
var code = value_model_name + '.fit(' + value_train_data + ')\n';
|
||||
} else {
|
||||
var code = value_model_name + '.fit(' + value_train_data + ', ' + value_train_target + ')\n';
|
||||
}
|
||||
return code;
|
||||
}
|
||||
|
||||
// sklearn 训练模型-无标签值
|
||||
export const sklearn_fit_no_target = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'X_train';
|
||||
var code = value_model_name + '.fit(' + value_train_data + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// sklearn 模型预测
|
||||
export const sklearn_predict = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'X_test';
|
||||
var code = value_model_name + '.predict(' + value_train_data + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// sklearn 计算模型得分
|
||||
export const sklearn_score = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'X_train';
|
||||
var value_train_target = generator.valueToCode(this, 'train_target', generator.ORDER_ATOMIC) || 'y_train';
|
||||
if (value_train_target == 'None') {
|
||||
var code = value_model_name + '.score(' + value_train_data + ')';
|
||||
} else {
|
||||
var code = value_model_name + '.score(' + value_train_data + ', ' + value_train_target + ')';
|
||||
}
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// sklearn 计算模型得分-无标签值
|
||||
export const sklearn_score_no_target = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'X_train';
|
||||
var code = value_model_name + '.score(' + value_train_data + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// sklearn 线性回归 模型获取 斜率/截距
|
||||
export const sklearn_coef_intercept = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var dropdown_type = this.getFieldValue('type');
|
||||
var code = value_model_name + '.' + dropdown_type;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// sklearn K-均值聚类 模型获取 簇中心坐标/聚类后的标签/所有点到对应簇中心的距离平方和
|
||||
export const sklearn_cluster_centers_labels_inertia = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var dropdown_type = this.getFieldValue('type');
|
||||
var code = value_model_name + '.' + dropdown_type;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// sklearn 保存/加载模型
|
||||
export const sklearn_save_load_model = function (_, generator) {
|
||||
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
var dropdown_type = this.getFieldValue('type');
|
||||
var value_address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC) || 'D:/mixly/test.pkl';
|
||||
generator.definitions_['import_sklearn_joblib'] = 'import joblib';
|
||||
var code = '';
|
||||
if (dropdown_type == 'dump') {
|
||||
code = 'joblib.dump(' + value_model_name + ', ' + value_address + ')\n';
|
||||
} else {
|
||||
code = value_model_name + ' = joblib.load(' + value_address + ')\n';
|
||||
}
|
||||
return code;
|
||||
}
|
||||
22
mixly/boards/default_src/python_mixpy/generators/system.js
Normal file
22
mixly/boards/default_src/python_mixpy/generators/system.js
Normal file
@@ -0,0 +1,22 @@
|
||||
export const controls_millis = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
var code = 'time.time()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const controls_end_program = function () {
|
||||
return 'exit()\n';
|
||||
}
|
||||
|
||||
export const time_localtime = function (_, generator) {
|
||||
generator.definitions_.import_time = "import time";
|
||||
var op = this.getFieldValue('op');
|
||||
var code = "time.localtime()[" + op + "]";
|
||||
switch (op) {
|
||||
case "all":
|
||||
var code1 = "time.localtime()";
|
||||
return [code1, generator.ORDER_ASSIGNMENT];
|
||||
default:
|
||||
return [code, generator.ORDER_ASSIGNMENT];
|
||||
}
|
||||
}
|
||||
422
mixly/boards/default_src/python_mixpy/generators/turtle.js
Normal file
422
mixly/boards/default_src/python_mixpy/generators/turtle.js
Normal file
@@ -0,0 +1,422 @@
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user