// 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('map_xuexiao') house = [ sprite.Sprite('mark', 150, 380), sprite.Sprite('School', 115, 195), sprite.Sprite('House25', 264, 67), sprite.Sprite('House36', 320, 200), sprite.Sprite('House47', 290, 371), sprite.Sprite('House25', 479, 233), sprite.Sprite('House36', 674, 96), sprite.Sprite('House47', 642, 318) ] for i in house: 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]\n" + "car = sprite.Sprite('car', position[1][0], position[1][1])\nhouse[1].show()\n" + `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('map_xuexiao') house = [ sprite.Sprite('mark', 150, 380), sprite.Sprite('School', 115, 195), sprite.Sprite('House25', 264, 67), sprite.Sprite('House36', 320, 200), sprite.Sprite('House47', 290, 371), sprite.Sprite('House25', 479, 233), sprite.Sprite('House36', 674, 96), sprite.Sprite('House47', 642, 318) ] barricade = sprite.Sprite('barricade', 570, 170) barricade.enlargeTo(100) for i in house: 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]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= 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