743 lines
27 KiB
JavaScript
743 lines
27 KiB
JavaScript
import * as Blockly from 'blockly/core';
|
||
import * as Mixly from 'mixly';
|
||
import * as path from 'path';
|
||
|
||
// export const game_init = {
|
||
// init: function() {
|
||
// this.appendDummyInput()
|
||
// .appendField(Blockly.Msg.MIXLY_GAME_INIT);
|
||
// this.setPreviousStatement(true);
|
||
// this.setNextStatement(true);
|
||
// this.setColour(290);
|
||
// this.setTooltip('');
|
||
// }
|
||
// };
|
||
//初始化地图为第X关
|
||
export const initSettedMap = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_INIT_AS)
|
||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_GAME_ONE, '0'], [Blockly.Msg.MIXLY_GAME_TWO, '1'], [Blockly.Msg.MIXLY_GAME_THREE, '2'], [Blockly.Msg.MIXLY_GAME_FOUR, '3'], [Blockly.Msg.MIXLY_GAME_FIVE, '4'], [Blockly.Msg.MIXLY_GAME_SIX, '5']]), "level");
|
||
this.setInputsInline(true);
|
||
this.setNextStatement(true);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
}
|
||
};
|
||
|
||
export const game_init = {
|
||
init: function () {
|
||
this.setNextStatement(true);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.appendStatementInput('DO0')
|
||
.appendField(Blockly.Msg.MIXLY_GAME_INIT);
|
||
}
|
||
};
|
||
|
||
|
||
export const move_direction_steps = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_TOWARD)
|
||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_GAME_RIGHT, '1'], [Blockly.Msg.MIXLY_GAME_DOWN, '2'], [Blockly.Msg.MIXLY_GAME_LEFT, '3'], [Blockly.Msg.MIXLY_GAME_UP, '0']]), "direction");
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_MOVE);
|
||
this.appendValueInput("times")
|
||
.setCheck(Number)
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_STEP);
|
||
this.setInputsInline(true);
|
||
this.setPreviousStatement(true);
|
||
this.setNextStatement(true);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
}
|
||
};
|
||
// export const move_direction = {
|
||
// init: function() {
|
||
// this.appendDummyInput()
|
||
// .appendField("向")
|
||
// .appendField(new Blockly.FieldDropdown([["东",'1'],["南",'2'],["西",'3'],["北",'0']]), "direction");
|
||
// this.appendDummyInput()
|
||
// .appendField("移动");
|
||
// this.setInputsInline(true);
|
||
// this.setPreviousStatement(true);
|
||
// this.setNextStatement(true);
|
||
// this.setColour(290);
|
||
// this.setTooltip('');
|
||
// }
|
||
// };
|
||
// export const move_forward = {
|
||
// init: function() {
|
||
// this.appendDummyInput()
|
||
// .appendField("向前移动");
|
||
// this.setPreviousStatement(true);
|
||
// this.setNextStatement(true);
|
||
// this.setColour(290);
|
||
// this.setTooltip('');
|
||
// }
|
||
// };
|
||
|
||
|
||
// export const move_backward = {
|
||
// init: function() {
|
||
// this.appendDummyInput()
|
||
// .appendField(Blockly.Msg.MIXLY_GAME_MOVE_BACKWARD);
|
||
// this.setPreviousStatement(true, null);
|
||
// this.setNextStatement(true, null);
|
||
// this.setColour(290);
|
||
// this.setTooltip('');
|
||
// this.setHelpUrl('');
|
||
// }
|
||
// };
|
||
export const move_related_to_spirite = {
|
||
init: function () {
|
||
var Directions = [
|
||
[Blockly.Msg.MIXLY_GAME_FORWARD, 'f'],
|
||
[Blockly.Msg.MIXLY_GAME_BACKWARD, 'b']
|
||
];
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_RE_SPIRITE)
|
||
.appendField(Blockly.Msg.MIXLY_GAME_TOWARD)
|
||
.appendField(new Blockly.FieldDropdown(Directions), 'Direction')
|
||
.appendField(Blockly.Msg.MIXLY_GAME_MOVE);
|
||
this.appendValueInput("times")
|
||
.setCheck(Number)
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_STEP);
|
||
this.setPreviousStatement(true, null);
|
||
this.setNextStatement(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|
||
|
||
|
||
export const Turn = {
|
||
init: function () {
|
||
var Directions = [
|
||
[Blockly.Msg.MIXLY_GAME_TURN_LEFT, 'left'],
|
||
[Blockly.Msg.MIXLY_GAME_TURN_RIGHT, 'right']
|
||
];
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_RE_SPIRITE)
|
||
.appendField(Blockly.Msg.MIXLY_GAME_TOWARD)
|
||
.appendField(new Blockly.FieldDropdown(Directions), 'Direction')
|
||
.appendField(Blockly.Msg.MIXLY_GAME_TURN);
|
||
this.setPreviousStatement(true, null);
|
||
this.setNextStatement(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|
||
export const isDone = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_ISDONE);
|
||
this.setOutput(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|
||
export const isPath = {
|
||
init: function () {
|
||
var Directions = [
|
||
[Blockly.Msg.MIXLY_GAME_UP, "0"],
|
||
[Blockly.Msg.MIXLY_GAME_DOWN, "2"],
|
||
[Blockly.Msg.MIXLY_GAME_RIGHT, "1"],
|
||
[Blockly.Msg.MIXLY_GAME_LEFT, "3"]
|
||
];
|
||
this.appendDummyInput()
|
||
.appendField(new Blockly.FieldDropdown(Directions), 'Direction')
|
||
.appendField(Blockly.Msg.MIXLY_GAME_ISPATH);
|
||
this.setOutput(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|
||
export const is_Related_Path = {
|
||
init: function () {
|
||
var Directions = [[Blockly.Msg.MIXLY_GAME_FORWARD, "f"], [Blockly.Msg.MIXLY_GAME_BACKWARD, "b"], [Blockly.Msg.MIXLY_GAME_LEFT, "l"], [Blockly.Msg.MIXLY_GAME_RIGHT, "r"]];
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_RE_SPIRITE)
|
||
.appendField(new Blockly.FieldDropdown(Directions), 'Direction')
|
||
.appendField(Blockly.Msg.MIXLY_GAME_ISPATH);
|
||
this.setOutput(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|
||
//设置地图背景
|
||
export const set_map_bg = {
|
||
init: function () {
|
||
this.appendValueInput("background")
|
||
.setCheck(null)
|
||
.appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MIXLY_GAME_BACKGROUND);
|
||
this.setInputsInline(true);
|
||
this.setPreviousStatement(true, null);
|
||
this.setNextStatement(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
}
|
||
|
||
//最新块
|
||
export const set_map = {
|
||
init: function () {
|
||
// this.appendDummyInput()
|
||
// .appendField("设置地图:长");
|
||
this.appendValueInput("x")
|
||
.setCheck(Number)
|
||
.appendField(Blockly.Msg.MIXLY_GAME_SETMAP + Blockly.Msg.MIXLY_GAME_LENGTH_IS);
|
||
this.appendValueInput("y")
|
||
.setCheck(Number)
|
||
.appendField(Blockly.Msg.MIXLY_GAME_WIDTH_IS);
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_STARTPOS_IS + "(");
|
||
this.appendValueInput("startPos_x")
|
||
.setCheck(Number)
|
||
this.appendDummyInput()
|
||
.appendField(",");
|
||
this.appendValueInput("startPos_y")
|
||
.setCheck(Number)
|
||
this.appendDummyInput()
|
||
.appendField(")");
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_ENDPOS_IS + "(");
|
||
this.appendValueInput("endPos_x")
|
||
.setCheck(Number)
|
||
this.appendDummyInput()
|
||
.appendField(",");
|
||
this.appendValueInput("endPos_y")
|
||
.setCheck(Number)
|
||
this.appendDummyInput()
|
||
.appendField(")");
|
||
// this.appendDummyInput()
|
||
// .appendField(",背景")
|
||
// .appendField(new Blockly.FieldDropdown([["背景1","3"],["背景2","4"]]), "bg");
|
||
this.setInputsInline(true);
|
||
this.setPreviousStatement(true, null);
|
||
this.setNextStatement(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|
||
export const game_get_local_img = {
|
||
init: function () {
|
||
this.imgArr = this.getLocalImg();
|
||
this.appendDummyInput()
|
||
.appendField(new Blockly.FieldDropdown(this.getLocalImg()), "type");
|
||
this.setOutput(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
},
|
||
onchange: function () {
|
||
let typeValue = this.getFieldValue("type");
|
||
//let newImgArr = this.getLocalImg();
|
||
let newImgArr = this.imgArr;
|
||
if (this.haveNewSrc(this.imgArr, newImgArr)) {
|
||
this.imgArr = newImgArr;
|
||
var typeField = this.getField("type");
|
||
typeField.menuGenerator_ = this.imgArr;
|
||
if (this.checkSrc(typeValue, this.imgArr)) {
|
||
this.setFieldValue(typeValue, "type");
|
||
} else {
|
||
this.setFieldValue(this.imgArr[0][1], "type");
|
||
}
|
||
}
|
||
},
|
||
haveNewSrc: function (oldArr, newArr) {
|
||
if (oldArr.length !== newArr.length) return true;
|
||
for (var i = 0; i < oldArr.length; i++) {
|
||
if (oldArr[i][0].src !== newArr[i][0].src) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
},
|
||
checkSrc: function (newSrc, srcArr) {
|
||
for (var i = 0; i < srcArr.length; i++) {
|
||
if (srcArr[i][0].src == newSrc) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
},
|
||
getLocalImg: function () {
|
||
let imgArr = [];
|
||
try {
|
||
// let imgDirPath = MixlyEnv.clientPath + "/mixpyBuild/maps/";///改图片路径
|
||
// if (nodeFs.existsSync(imgDirPath)) {
|
||
// let imgDirArr = nodeFs.readdirSync(imgDirPath);
|
||
// for (let i = 0; i < imgDirArr.length; i++) {
|
||
// let imgPathToLowerCase = imgDirArr[i].toLowerCase();
|
||
// if (imgPathToLowerCase.indexOf(".png") != -1
|
||
// || imgPathToLowerCase.indexOf(".jpg") != -1
|
||
// || imgPathToLowerCase.indexOf(".ico") != -1) {
|
||
// let dropdownItem = {};
|
||
// dropdownItem.src = MixlyEnv.clientPath + "/mixpyBuild/maps/" + imgDirArr[i];
|
||
// let dimensions = imagesize("mixpyBuild/maps/" + imgDirArr[i]);
|
||
// dropdownItem.width = 40;
|
||
// dropdownItem.height = dimensions.height*40/dimensions.width;
|
||
// dropdownItem.alt = "*";
|
||
// let dropdownArr = [];
|
||
// dropdownArr.push(dropdownItem);
|
||
// let dropdownData = imgDirArr[i].substring(0, imgDirArr[i].lastIndexOf("."));
|
||
// dropdownData = '\'' + dropdownData + '\'';
|
||
// dropdownArr.push(dropdownData);
|
||
// imgArr.push(dropdownArr);
|
||
// }
|
||
// }
|
||
// }
|
||
var imgDirArr = ["bg_default.png", "bg_astro.png", "bg_panda.jpg"]
|
||
for (var i = 0; i < imgDirArr.length; i++) {
|
||
var dropdownItem = {};
|
||
dropdownItem.src = path.join(Mixly.Env.boardDirPath, "media/mixpyBuild/maps", imgDirArr[i]);
|
||
dropdownItem.width = 40;
|
||
dropdownItem.height = 45;
|
||
if (imgDirArr[i] == "") {
|
||
dropdownItem.alt = "无";
|
||
} else {
|
||
dropdownItem.alt = "*";
|
||
}
|
||
var dropdownArr = [];
|
||
dropdownArr.push(dropdownItem);
|
||
var dropdownData = imgDirArr[i].substring(0, imgDirArr[i].lastIndexOf("."));
|
||
dropdownData = '\'' + dropdownData + '\'';
|
||
dropdownArr.push(dropdownData);
|
||
imgArr.push(dropdownArr);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
imgArr = [["'无可用地图'", "'无可用地图'"]];
|
||
}
|
||
if (imgArr.length > 0) {
|
||
return imgArr;
|
||
}
|
||
return [["'无可用地图'", "'无可用地图'"]]
|
||
}
|
||
};
|
||
|
||
|
||
export const set_pathtype = {
|
||
init: function () {
|
||
this.appendValueInput("pathtype")
|
||
.setCheck(null)
|
||
.appendField(Blockly.Msg.MIXLY_GAME_SETPATHTYPE);
|
||
this.setInputsInline(true);
|
||
this.setPreviousStatement(true, null);
|
||
this.setNextStatement(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|
||
export const game_get_path_img = {
|
||
init: function () {
|
||
this.imgArr = this.getLocalImg();
|
||
this.appendDummyInput()
|
||
.appendField(new Blockly.FieldDropdown(this.getLocalImg()), "type");
|
||
this.setOutput(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
},
|
||
onchange: function () {
|
||
let typeValue = this.getFieldValue("type");
|
||
//let newImgArr = this.getLocalImg();
|
||
let newImgArr = this.imgArr;
|
||
if (this.haveNewSrc(this.imgArr, newImgArr)) {
|
||
this.imgArr = newImgArr;
|
||
var typeField = this.getField("type");
|
||
typeField.menuGenerator_ = this.imgArr;
|
||
if (this.checkSrc(typeValue, this.imgArr)) {
|
||
this.setFieldValue(typeValue, "type");
|
||
} else {
|
||
this.setFieldValue(this.imgArr[0][1], "type");
|
||
}
|
||
}
|
||
},
|
||
haveNewSrc: function (oldArr, newArr) {
|
||
if (oldArr.length !== newArr.length) return true;
|
||
for (var i = 0; i < oldArr.length; i++) {
|
||
if (oldArr[i][0].src !== newArr[i][0].src) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
},
|
||
checkSrc: function (newSrc, srcArr) {
|
||
for (var i = 0; i < srcArr.length; i++) {
|
||
if (srcArr[i][0].src == newSrc) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
},
|
||
getLocalImg: function () {
|
||
let imgArr = [];
|
||
try {
|
||
// let imgDirPath = MixlyEnv.clientPath + "/mixpyBuild/path/";///改图片路径
|
||
// if (nodeFs.existsSync(imgDirPath)) {
|
||
// let imgDirArr = nodeFs.readdirSync(imgDirPath);
|
||
// for (let i = 0; i < imgDirArr.length; i++) {
|
||
// let imgPathToLowerCase = imgDirArr[i].toLowerCase();
|
||
// if (imgPathToLowerCase.indexOf(".png") != -1
|
||
// || imgPathToLowerCase.indexOf(".jpg") != -1
|
||
// || imgPathToLowerCase.indexOf(".ico") != -1) {
|
||
// let dropdownItem = {};
|
||
// dropdownItem.src = MixlyEnv.clientPath + "/mixpyBuild/path/" + imgDirArr[i];
|
||
// let dimensions = imagesize("mixpyBuild/path/" + imgDirArr[i]);
|
||
// dropdownItem.width = 40;
|
||
// dropdownItem.height = dimensions.height*40/dimensions.width;
|
||
// dropdownItem.alt = "*";
|
||
// let dropdownArr = [];
|
||
// dropdownArr.push(dropdownItem);
|
||
// let dropdownData = imgDirArr[i].substring(0, imgDirArr[i].lastIndexOf("."));
|
||
// dropdownData = '\'' + dropdownData + '\'';
|
||
// dropdownArr.push(dropdownData);
|
||
// imgArr.push(dropdownArr);
|
||
// }
|
||
// }
|
||
// }
|
||
var imgDirArr = ["default.png", "bamboo.png", "pipeline.png"]
|
||
for (var i = 0; i < imgDirArr.length; i++) {
|
||
var dropdownItem = {};
|
||
dropdownItem.src = path.join(Mixly.Env.boardDirPath, "media/mixpyBuild/path", imgDirArr[i]);
|
||
dropdownItem.width = 40;
|
||
dropdownItem.height = 45;
|
||
dropdownItem.alt = "*";
|
||
var dropdownArr = [];
|
||
dropdownArr.push(dropdownItem);
|
||
var dropdownData = imgDirArr[i].substring(0, imgDirArr[i].lastIndexOf("."));
|
||
dropdownData = '\'' + dropdownData + '\'';
|
||
dropdownArr.push(dropdownData);
|
||
imgArr.push(dropdownArr);
|
||
}
|
||
} catch (e) {
|
||
console.log(e);
|
||
imgArr = [["'无可用路径'", "'无可用路径'"]];
|
||
}
|
||
if (imgArr.length > 0) {
|
||
return imgArr;
|
||
}
|
||
return [["'无可用路径'", "'无可用路径'"]];
|
||
}
|
||
};
|
||
|
||
export const place_item = {
|
||
init: function () {
|
||
this.setColour(290);
|
||
this.setPreviousStatement(true);
|
||
this.setNextStatement(true);
|
||
this.appendValueInput("posx")
|
||
.setCheck(null)
|
||
.appendField(Blockly.Msg.TEXT_APPEND_TO + "(");
|
||
this.appendDummyInput()
|
||
.appendField(',');
|
||
this.appendValueInput("posy")
|
||
.setCheck(null)
|
||
.appendField("");
|
||
this.appendDummyInput()
|
||
.appendField(')' + Blockly.Msg.MIXLY_GAME_LAY)
|
||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_GAME_WALL, "'wall'"], [Blockly.Msg.MIXLY_GAME_BARRIER, "'barrier'"], [Blockly.Msg.MIXLY_GAME_COIN, "'coin'"], [Blockly.Msg.MIXLY_GAME_REDMARKER, "'redmarker'"], [Blockly.Msg.MIXLY_GAME_YELLOWMARKER, "'yellowmarker'"], [Blockly.Msg.MIXLY_GAME_BLUEMARKER, "'bluemarker'"], [Blockly.Msg.MIXLY_GAME_GREENMARKER, "'greenmarker'"]]), "item");
|
||
this.setTooltip('');
|
||
}
|
||
};
|
||
|
||
export const game_get_character_img = {
|
||
init: function () {
|
||
this.imgArr = this.getLocalImg();
|
||
this.appendDummyInput()
|
||
.appendField(new Blockly.FieldDropdown(this.getLocalImg()), "type");
|
||
this.setOutput(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
},
|
||
onchange: function () {
|
||
let typeValue = this.getFieldValue("type");
|
||
//let newImgArr = this.getLocalImg();
|
||
let newImgArr = this.imgArr;
|
||
if (this.haveNewSrc(this.imgArr, newImgArr)) {
|
||
this.imgArr = newImgArr;
|
||
var typeField = this.getField("type");
|
||
typeField.menuGenerator_ = this.imgArr;
|
||
if (this.checkSrc(typeValue, this.imgArr)) {
|
||
this.setFieldValue(typeValue, "type");
|
||
} else {
|
||
this.setFieldValue(this.imgArr[0][1], "type");
|
||
}
|
||
}
|
||
},
|
||
haveNewSrc: function (oldArr, newArr) {
|
||
if (oldArr.length !== newArr.length) return true;
|
||
for (var i = 0; i < oldArr.length; i++) {
|
||
if (oldArr[i][0].src !== newArr[i][0].src) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
},
|
||
checkSrc: function (newSrc, srcArr) {
|
||
for (var i = 0; i < srcArr.length; i++) {
|
||
if (srcArr[i][0].src == newSrc) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
},
|
||
getLocalImg: function () {
|
||
let imgArr = [];
|
||
try {
|
||
var imgDirArr = ["pegman.png", "astro.png", "panda.png", "robot.png", 'car.png']
|
||
for (var i = 0; i < imgDirArr.length; i++) {
|
||
var dropdownItem = {};
|
||
dropdownItem.src = path.join(Mixly.Env.boardDirPath, "media/mixpyBuild/characters", imgDirArr[i]);
|
||
dropdownItem.width = 40;
|
||
dropdownItem.height = 45;
|
||
dropdownItem.alt = "*";
|
||
var dropdownArr = [];
|
||
dropdownArr.push(dropdownItem);
|
||
var dropdownData = imgDirArr[i].substring(0, imgDirArr[i].lastIndexOf("."));
|
||
dropdownData = '\'' + dropdownData + '\'';
|
||
dropdownArr.push(dropdownData);
|
||
imgArr.push(dropdownArr);
|
||
}
|
||
|
||
|
||
} catch (e) {
|
||
console.log(e);
|
||
imgArr = [["'无可用角色'", "'无可用角色'"]];
|
||
}
|
||
if (imgArr.length > 0) {
|
||
return imgArr;
|
||
}
|
||
return [["'无可用角色'", "'无可用角色'"]];
|
||
}
|
||
};
|
||
|
||
|
||
export const initialize = {
|
||
init: function () {
|
||
this.setColour(290);
|
||
this.appendValueInput("character")
|
||
.setCheck(null)
|
||
.appendField(Blockly.Msg.MIXLY_GAME_INIT_CHARA)
|
||
this.appendDummyInput().appendField(Blockly.Msg.MIXLY_GAME_FACE + Blockly.Msg.MIXLY_GAME_RIGHT);
|
||
// this.appendDummyInput()
|
||
// // .appendField('初始化角色为')
|
||
// // .appendField(new Blockly.FieldDropdown([["默认⼩⼈","0"],["熊猫","1"],["宇航员","2"],["机器⼈","3"]]), "character")
|
||
// .appendField(Blockly.Msg.MIXLY_GAME_FACE)
|
||
// .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_GAME_NORTH,"0"],[Blockly.Msg.MIXLY_GAME_SOUTH,"2"],[Blockly.Msg.MIXLY_GAME_WEST,"3"],[Blockly.Msg.MIXLY_GAME_EAST,"1"]]), "direction");
|
||
this.setPreviousStatement(true);
|
||
this.setNextStatement(true);
|
||
this.setTooltip('');
|
||
}
|
||
};
|
||
|
||
export const get_actor_point = {
|
||
init: function () {
|
||
this.setColour(290);
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_GETPOINT);
|
||
this.setOutput(true, Number);
|
||
this.setTooltip('');
|
||
}
|
||
};
|
||
|
||
export const isBarrier = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_GAME_UP, "0"], [Blockly.Msg.MIXLY_GAME_DOWN, "2"], [Blockly.Msg.MIXLY_GAME_LEFT, "3"], [Blockly.Msg.MIXLY_GAME_RIGHT, "1"]]), "direction");
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_ISBARRIER);
|
||
this.setInputsInline(true);
|
||
this.setOutput(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|
||
export const is_Related_Barrier = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_RE_SPIRITE)
|
||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_GAME_FORWARD, "f"], [Blockly.Msg.MIXLY_GAME_BACKWARD, "b"], [Blockly.Msg.MIXLY_GAME_LEFT, "l"], [Blockly.Msg.MIXLY_GAME_RIGHT, "r"]]), "direction");
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_ISBARRIER);
|
||
this.setInputsInline(true);
|
||
this.setOutput(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|
||
export const randomOil = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_RANDOMCAROIL);
|
||
this.setPreviousStatement(true);
|
||
this.setNextStatement(true);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
}
|
||
};
|
||
|
||
export const isOilFull = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_NEEDOIL);
|
||
this.setOutput(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|
||
export const isLightGreen = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_ISGREEN);
|
||
this.setOutput(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|
||
export const addOil = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_ADDOIL);
|
||
this.setPreviousStatement(true);
|
||
this.setNextStatement(true);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
}
|
||
};
|
||
|
||
export const isCirculationRight = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_CHECKCIRCURIGHT);
|
||
this.setPreviousStatement(true);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
}
|
||
};
|
||
|
||
export const checkMarker = {
|
||
init: function () {
|
||
this.setColour(290);
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_CHECK_WHETHER_PASS);
|
||
this.appendDummyInput()
|
||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_GAME_REDMARKER, "'redmarker'"], [Blockly.Msg.MIXLY_GAME_YELLOWMARKER, "'yellowmarker'"], [Blockly.Msg.MIXLY_GAME_BLUEMARKER, "'bluemarker'"], [Blockly.Msg.MIXLY_GAME_GREENMARKER, "'greenmarker'"]]), "marker");
|
||
this.appendDummyInput()
|
||
.appendField("?");
|
||
this.setInputsInline(true);
|
||
this.setOutput(true, null);
|
||
this.setTooltip('');
|
||
}
|
||
};
|
||
|
||
export const getMarkerNum = {
|
||
init: function () {
|
||
this.setColour(290);
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_GET_MARKER_NUM);
|
||
this.appendDummyInput()
|
||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_GAME_REDMARKER, "'redmarker'"], [Blockly.Msg.MIXLY_GAME_YELLOWMARKER, "'yellowmarker'"], [Blockly.Msg.MIXLY_GAME_BLUEMARKER, "'bluemarker'"], [Blockly.Msg.MIXLY_GAME_GREENMARKER, "'greenmarker'"]]), "marker");
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_NUMBER_OF_MARKER);
|
||
this.setInputsInline(true);
|
||
this.setOutput(true, null);
|
||
this.setTooltip('');
|
||
}
|
||
};
|
||
|
||
export const randomPlaceBarrier = {
|
||
init: function () {
|
||
this.setColour(290);
|
||
this.setPreviousStatement(true);
|
||
this.setNextStatement(true);
|
||
this.appendValueInput("posx")
|
||
.setCheck(null)
|
||
.appendField(Blockly.Msg.TEXT_APPEND_TO + "(");
|
||
this.appendDummyInput()
|
||
.appendField(',');
|
||
this.appendValueInput("posy")
|
||
.setCheck(null)
|
||
.appendField("");
|
||
this.appendDummyInput()
|
||
.appendField(')' + Blockly.Msg.TEXT_GET_INDEX_RANDOM + Blockly.Msg.MIXLY_GAME_LAY + Blockly.Msg.MIXLY_GAME_BARRIER)
|
||
this.setTooltip('');
|
||
}
|
||
};
|
||
|
||
//初始化为简单的迷宫地图,第X关
|
||
export const settedSimpleMap = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField(Blockly.Msg.MIXLY_GAME_INIT_AS)
|
||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_GAME_ONE, '0'], [Blockly.Msg.MIXLY_GAME_TWO, '1'], [Blockly.Msg.MIXLY_GAME_THREE, '2'], [Blockly.Msg.MIXLY_GAME_FOUR, '3'], [Blockly.Msg.MIXLY_GAME_FIVE, '4'], [Blockly.Msg.MIXLY_GAME_SIX, '5'], [Blockly.Msg.MIXLY_GAME_SEVEN, '6'], [Blockly.Msg.MIXLY_GAME_EIGHT, '7'], [Blockly.Msg.MIXLY_GAME_NINE, '8']
|
||
, [Blockly.Msg.MIXLY_GAME_TEN, '9'], [Blockly.Msg.MIXLY_GAME_ELE, '10'], [Blockly.Msg.MIXLY_GAME_TWEL, '11'], [Blockly.Msg.MIXLY_GAME_THIR, '12'], [Blockly.Msg.MIXLY_GAME_FORT, '13'], [Blockly.Msg.MIXLY_GAME_FIFT, '14'], [Blockly.Msg.MIXLY_GAME_SIXT, '15'], [Blockly.Msg.MIXLY_GAME_SEVENT, '16']]), "level");
|
||
this.setInputsInline(true);
|
||
this.setNextStatement(true);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
}
|
||
};
|
||
|
||
export const find_books_by_dichotomy = {
|
||
init: function () {
|
||
this.appendValueInput("N")
|
||
.setCheck(null)
|
||
.setAlign(Blockly.inputs.Align.LEFT)
|
||
.appendField("二分法查找书籍")
|
||
.appendField("N");
|
||
this.setInputsInline(true);
|
||
this.setPreviousStatement(true, null);
|
||
this.setNextStatement(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|
||
export const find_books_by_sequence = {
|
||
init: function () {
|
||
this.appendValueInput("N")
|
||
.setCheck(null)
|
||
.setAlign(Blockly.inputs.Align.LEFT)
|
||
.appendField("顺序法查找书籍")
|
||
.appendField("N");
|
||
this.setInputsInline(true);
|
||
this.setPreviousStatement(true, null);
|
||
this.setNextStatement(true, null);
|
||
this.setColour(290);
|
||
this.setTooltip('');
|
||
this.setHelpUrl('');
|
||
}
|
||
};
|
||
|