feat: sync all remaining python source board configurations
This commit is contained in:
3
mixly/boards/default_src/python_pyodide/.npmignore
Normal file
3
mixly/boards/default_src/python_pyodide/.npmignore
Normal file
@@ -0,0 +1,3 @@
|
||||
node_modules
|
||||
build
|
||||
origin
|
||||
36
mixly/boards/default_src/python_pyodide/blocks/sklearn.js
Normal file
36
mixly/boards/default_src/python_pyodide/blocks/sklearn.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* @typedef {import('@mixly/python-mixpy').PythonMixpySKLearnBlocks} PythonMixpySKLearnBlocks
|
||||
*/
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
const SKLEARN_HUE = 80;
|
||||
|
||||
|
||||
/**
|
||||
* @override Override {@link PythonMixpySKLearnBlocks.sklearn_LinearRegression}
|
||||
*/
|
||||
//sklearn 初始化线性回归
|
||||
export const sklearn_LinearRegression = {
|
||||
init: function () {
|
||||
this.appendDummyInput()
|
||||
.appendField('sklearn ' + Blockly.Msg.SKLEARN_LINEARREGRESSION_INIT);
|
||||
this.appendValueInput('model_name')
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.inputs.Align.RIGHT)
|
||||
.appendField(Blockly.Msg.MODEL_NAME);
|
||||
this.appendValueInput('fit_intercept')
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.inputs.Align.RIGHT)
|
||||
.appendField(Blockly.Msg.SKLEARN_CALCULATE_MODEL_INTERRUPT);
|
||||
this.appendValueInput('n_jobs')
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.inputs.Align.RIGHT)
|
||||
.appendField(Blockly.Msg.SKLEARN_THREADS);
|
||||
this.setInputsInline(false);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setColour(SKLEARN_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,17 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_effect_add = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_SET_TO)
|
||||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_SOUND_EFFECT_PITCH, "pitch"], [Blockly.Msg.MIXLY_SOUND_EFFECT_PAN, "pan"]]), "EFFECT")
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_EFFECT_ADD_BY);
|
||||
this.appendValueInput("VALUE")
|
||||
.setCheck(null)
|
||||
this.appendDummyInput();
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_EFFECT_ADD_TOOLTIP);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,12 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_effect_clear = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_catSoundSOUND_CLEAR_EFFECTS);
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_EFFECT_CLEAR_TOOLTIP);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,17 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_effect_set = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_SET_TO)
|
||||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_SOUND_EFFECT_PITCH, "pitch"], [Blockly.Msg.MIXLY_SOUND_EFFECT_PAN, "pan"]]), "EFFECT")
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_EFFECT_SET_TO);
|
||||
this.appendValueInput("VALUE")
|
||||
.setCheck(null)
|
||||
this.appendDummyInput();
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_EFFECT_SET_TOOLTIP);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,26 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_play = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_PLAY)
|
||||
.appendField(new Blockly.FieldDropdown(this.getSoundOptions), "SOUND");
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_PLAY_TOOLTIP);
|
||||
},
|
||||
|
||||
getSoundOptions: function() {
|
||||
const options = [["Meow", "Meow"], [Blockly.Msg.MIXLY_SOUND_RECORD_OPTION, "record"]];
|
||||
|
||||
if (window.sound && window.sound.builtin) {
|
||||
const recordings = Object.keys(window.sound.builtin).filter(k => k.startsWith('recording'));
|
||||
recordings.forEach(recording => {
|
||||
options.push([recording, recording]);
|
||||
});
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,21 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_play_frequency = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_PLAY)
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_FREQUENCY);
|
||||
this.appendValueInput("FREQUENCY")
|
||||
.setCheck(Number)
|
||||
.setAlign(Blockly.ALIGN_RIGHT);
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_DURATION);
|
||||
this.appendValueInput("DURATION")
|
||||
.setCheck(Number)
|
||||
.setAlign(Blockly.ALIGN_RIGHT);
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_PLAY_FREQUENCY_TOOLTIP);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,13 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_play_frequency_no_duration = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendValueInput("FREQUENCY")
|
||||
.setCheck(Number)
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_PLAY_FREQUENCY_NO_DURATION);
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_PLAY_FREQUENCY_NO_DURATION_TOOLTIP);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,21 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_play_note_list = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_PLAY_NOTE_LIST)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
["DADADADUM", "DADADADUM"],
|
||||
["BIRTHDAY", "BIRTHDAY"],
|
||||
["BA_DING", "BA_DING"],
|
||||
["JUMP_UP", "JUMP_UP"],
|
||||
["JUMP_DOWN", "JUMP_DOWN"],
|
||||
["POWER_UP", "POWER_UP"],
|
||||
["POWER_DOWN", "POWER_DOWN"]
|
||||
]), "NOTE_LIST");
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_PLAY_NOTE_LIST_TOOLTIP);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_play_wait = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_PLAY)
|
||||
.appendField(new Blockly.FieldDropdown(this.getSoundOptions), "SOUND")
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_WAIT_FINISH);
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_PLAY_WAIT_TOOLTIP);
|
||||
},
|
||||
|
||||
getSoundOptions: function() {
|
||||
const options = [["Meow", "Meow"], [Blockly.Msg.MIXLY_SOUND_RECORD_OPTION, "record"]];
|
||||
|
||||
if (window.sound && window.sound.builtin) {
|
||||
const recordings = Object.keys(window.sound.builtin).filter(k => k.startsWith('recording'));
|
||||
recordings.forEach(recording => {
|
||||
options.push([recording, recording]);
|
||||
});
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,12 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_record = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_SOUND_RECORD);
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_RECORD_TOOLTIP);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_note = {
|
||||
init: function () {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
["NOTE_A4", "440"],
|
||||
["NOTE_B3", "247"],
|
||||
["NOTE_C4", "262"],
|
||||
["NOTE_D4", "294"],
|
||||
["NOTE_E4", "330"],
|
||||
["NOTE_F4", "349"],
|
||||
["NOTE_G4", "392"],
|
||||
["NOTE_A4", "440"],
|
||||
["NOTE_B4", "494"],
|
||||
["NOTE_C5", "523"],
|
||||
["NOTE_D5", "587"],
|
||||
["NOTE_E5", "659"],
|
||||
["NOTE_F5", "698"],
|
||||
["NOTE_G5", "784"]
|
||||
]), "NOTE");
|
||||
this.setOutput(true, null);
|
||||
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_NOTE_TOOLTIP);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,12 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_stop_all = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_catSoundSOUND_STOP_ALL);
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_STOP_ALL_TOOLTIP);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,15 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_volume_add = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_catSoundSOUND_VOLUME_INCREASE);
|
||||
this.appendValueInput("VALUE")
|
||||
.setCheck(null);
|
||||
this.appendDummyInput();
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_VOLUME_ADD_TOOLTIP);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,11 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_volume_get = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_catSoundSOUND_VOLUME_GET);
|
||||
this.setOutput(true, "Volume");
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_VOLUME_GET_TOOLTIP);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,15 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const sound_volume_set = {
|
||||
init: function() {
|
||||
this.setColour('#acc159');
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_catSoundSOUND_VOLUME_SET);
|
||||
this.appendValueInput("VALUE")
|
||||
.setCheck(null);
|
||||
this.appendDummyInput();
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_SOUND_VOLUME_SET_TOOLTIP);
|
||||
}
|
||||
};
|
||||
230
mixly/boards/default_src/python_pyodide/blocks/tensorflow.js
Normal file
230
mixly/boards/default_src/python_pyodide/blocks/tensorflow.js
Normal file
@@ -0,0 +1,230 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
const TENSORFLOW_HUE = '#1216ab';
|
||||
|
||||
Blockly.Blocks.tensorflow_init_tensor = {
|
||||
init: function () {
|
||||
this.appendValueInput("VAR")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_INIT_TENSOR);
|
||||
this.setOutput(true, null);
|
||||
this.setColour(TENSORFLOW_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks.tensorflow_sequential = {
|
||||
init: function () {
|
||||
this.appendDummyInput()
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_SEQUENTIAL);
|
||||
this.setOutput(true, null);
|
||||
this.setColour(TENSORFLOW_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks.tensorflow_layers_dense = {
|
||||
init: function () {
|
||||
this.appendDummyInput()
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_INIT_LAYERS_DENSE_LAYER);
|
||||
this.appendValueInput("VAR1")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_RIGHT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_OUTPUT_DIMENSION);
|
||||
this.appendValueInput("VAR2")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_RIGHT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_INPUT_SHAPE);
|
||||
this.setOutput(true, null);
|
||||
this.setColour(TENSORFLOW_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks.tensorflow_add = {
|
||||
init: function () {
|
||||
this.appendValueInput("VAR1")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL);
|
||||
this.appendValueInput("VAR2")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_ADD_LAYER);
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setColour(TENSORFLOW_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks.tensorflow_compile = {
|
||||
init: function () {
|
||||
this.appendValueInput("VAR1")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_COMPILE_MODEL);
|
||||
this.appendDummyInput()
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_LOSS_FUNCTION_TYPE)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_TENSORFLOW_MEAN_SQUARED_ERROR, "meanSquaredError"]
|
||||
]), "VAR2");
|
||||
this.appendDummyInput()
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_OPTIMIZER)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_TENSORFLOW_SGD, "sgd"]
|
||||
]), "VAR3");
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setColour(TENSORFLOW_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks.tensorflow_fit = {
|
||||
init: function () {
|
||||
this.appendValueInput("VAR1")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_FIT_MODEL);
|
||||
this.appendValueInput("VAR2")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_RIGHT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_FIT_INPUT_DATA);
|
||||
this.appendValueInput("VAR3")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_RIGHT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_FIT_TARGET_DATA);
|
||||
this.appendValueInput("VAR4")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_RIGHT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_FIT_EPOCHS);
|
||||
this.appendValueInput("VAR5")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_RIGHT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_FIT_VERBOSE);
|
||||
this.appendDummyInput()
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_FIT_RETURN_HISTORY);
|
||||
this.setInputsInline(false);
|
||||
this.setOutput(true, null);
|
||||
this.setColour(TENSORFLOW_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks.tensorflow_get_loss = {
|
||||
init: function () {
|
||||
this.appendValueInput("VAR")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_GET_LOSS_FROM_HISTORY);
|
||||
this.appendDummyInput()
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_GET_LOSS_FROM_HISTORY_2);
|
||||
this.setOutput(true, null);
|
||||
this.setColour(TENSORFLOW_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks.tensorflow_predict = {
|
||||
init: function () {
|
||||
this.appendValueInput("VAR1")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_PREDICT);
|
||||
this.appendValueInput("VAR2")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_RIGHT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_PREDICT_INPUT_DATA);
|
||||
this.appendDummyInput()
|
||||
.setAlign(Blockly.ALIGN_RIGHT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_PREDICT_RETURN_RESULT);
|
||||
this.setInputsInline(false);
|
||||
this.setOutput(true, null);
|
||||
this.setColour(TENSORFLOW_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks.tensorflow_get_tensor_data = {
|
||||
init: function () {
|
||||
this.appendValueInput("VAR")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_GET_TENSOR_DATA);
|
||||
this.setOutput(true, null);
|
||||
this.setColour(TENSORFLOW_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks.tensorflow_save_or_export_model = {
|
||||
init: function () {
|
||||
this.appendValueInput("NAME1")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL);
|
||||
this.appendValueInput("NAME2")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_TENSORFLOW_SAVE_MODEL, "save"],
|
||||
[Blockly.Msg.MIXLY_TENSORFLOW_EXPORT_MODEL, "export"]
|
||||
]), "NAME")
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_SAVE_MODEL_NAME);
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setColour(TENSORFLOW_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks.tensorflow_use_load_model = {
|
||||
init: function () {
|
||||
this.appendValueInput("NAME")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_LOAD_MODEL)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL_NAME);
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true, null);
|
||||
this.setColour(TENSORFLOW_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks.tensorflow_prepare_picture = {
|
||||
init: function () {
|
||||
this.appendValueInput("NAME")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.ALIGN_LEFT)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_PREPARE_PICTURE_TO_TENSOR)
|
||||
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_PREPARE_PICTURE_READ_PICTURE);
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true, null);
|
||||
this.setColour(TENSORFLOW_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,216 @@
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(1)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/inout.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(1)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/inout2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(2)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/ctrl.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(2)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/ctrl2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(3)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/math.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(3)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/math2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(4)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/logic.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(4)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/logic2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(5)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/text.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(5)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/text2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(6)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/list3.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(6)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/list4.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(7)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/tuple.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(7)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/tuple2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(8)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/dict.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(8)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/dict2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(9)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/set.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(9)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/set2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(10)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/var.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(10)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/var2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(11)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/func.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(11)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/func2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/file.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/file2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(13)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/requests.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(13)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/requests2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/* div.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(14) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{
|
||||
background:url('../../../../common/media/mark/mixio.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
div.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(14) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{
|
||||
background:url('../../../../common/media/mark/mixio2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
#catMixIO.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{
|
||||
background:url('../../../../common/media/mark/mixio.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
#catMixIO.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{
|
||||
background:url('../../../../common/media/mark/mixio2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
} */
|
||||
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(14)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/turtle.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(14)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/turtle2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/* div.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(16) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{
|
||||
background:url('../../../../common/media/mark/ai.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
div.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(16) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{
|
||||
background:url('../../../../common/media/mark/ai2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
} */
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(15)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/data.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(15)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/data2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(16)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/cv.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(16)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/cv2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(17)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/algorithm.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(17)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/algorithm2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catFactory.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/factory3.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catFactory.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/factory4.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catSound.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/voice.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catSound.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/voice2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
11
mixly/boards/default_src/python_pyodide/export.js
Normal file
11
mixly/boards/default_src/python_pyodide/export.js
Normal file
@@ -0,0 +1,11 @@
|
||||
import * as PythonPyodideSKLearnBlocks from './blocks/sklearn';
|
||||
import * as PythonPyodideSKLearnGenerators from './generators/sklearn';
|
||||
import * as PythonTensorflowBlocks from './blocks/tensorflow';
|
||||
import * as PythonTensorflowGenerators from './generators/tensorflow';
|
||||
|
||||
export {
|
||||
PythonPyodideSKLearnBlocks,
|
||||
PythonPyodideSKLearnGenerators,
|
||||
PythonTensorflowBlocks,
|
||||
PythonTensorflowGenerators
|
||||
};
|
||||
46
mixly/boards/default_src/python_pyodide/generator.js
Normal file
46
mixly/boards/default_src/python_pyodide/generator.js
Normal file
@@ -0,0 +1,46 @@
|
||||
import { Python } from '@mixly/python';
|
||||
import KEYBOARD_INTERRUPT_TEMPLATE from './templates/python/keyboard-interrupt.py';
|
||||
|
||||
Python.finish = function (code) {
|
||||
// Convert the definitions dictionary into a list.
|
||||
if (code !== "") {
|
||||
code = code.replace(/\n/g, '\n');
|
||||
code = code.replace(/\n\s+$/, '\n');
|
||||
}
|
||||
var definitions = [];
|
||||
for (var name in Python.definitions_) {
|
||||
definitions.push(Python.definitions_[name]);
|
||||
}
|
||||
var functions = [];
|
||||
for (let name in Python.functions_) {
|
||||
functions.push(Python.functions_[name]);
|
||||
}
|
||||
var setups = [];
|
||||
for (let name in Python.setups_) {
|
||||
setups.push(Python.setups_[name]);
|
||||
}
|
||||
if (setups.length !== 0)
|
||||
setups.push('\n');
|
||||
var loops = [];
|
||||
for (let name in Python.loops_) {
|
||||
loops.push(Python.loops_[name]);
|
||||
}
|
||||
var codeEnd = [];
|
||||
for (let name in Python.codeEnd_) {
|
||||
codeEnd.push(Python.codeEnd_[name]);
|
||||
}
|
||||
if (codeEnd.length !== 0)
|
||||
codeEnd.push('\n');
|
||||
// Clean up temporary data.
|
||||
//delete Python.definitions_;
|
||||
//delete Python.functionNames_;
|
||||
//Python.variableDB_.reset();
|
||||
if (loops.length > 0)
|
||||
return KEYBOARD_INTERRUPT_TEMPLATE + definitions.join('\n') + '\n' + functions.join('\n')
|
||||
+ '\n' + setups.join('') + '\n' + code
|
||||
+ 'while True:\n' + loops.join('') + codeEnd.join('\n');
|
||||
return KEYBOARD_INTERRUPT_TEMPLATE + definitions.join('\n') + '\n' + functions.join('\n') + '\n'
|
||||
+ setups.join('') + '\n' + code + codeEnd.join('\n');
|
||||
}
|
||||
|
||||
export default Python;
|
||||
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* @typedef {import('@mixly/python-mixpy').PythonMixpySKLearnGenerators} PythonMixpySKLearnGenerators
|
||||
*/
|
||||
|
||||
// sklearn 初始化线性回归
|
||||
export const sklearn_LinearRegression = function (_, generator) {
|
||||
const value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
const value_fit_intercept = generator.valueToCode(this, 'fit_intercept', generator.ORDER_ATOMIC) || 'True';
|
||||
const value_n_jobs = generator.valueToCode(this, 'n_jobs', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_linear_model'] = 'from sklearn.linear_model import LinearRegression';
|
||||
const code = value_model_name + ' = LinearRegression(fit_intercept=' + value_fit_intercept + ', n_jobs=' + value_n_jobs + ')\n';
|
||||
return code;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
export const sound_effect_add = function(_block, _generator) {
|
||||
if (!_generator.definitions_['import_sound']) {
|
||||
_generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
const effect = _block.getFieldValue("EFFECT");
|
||||
const valueInput = _block.getInputTargetBlock("VALUE");
|
||||
let val;
|
||||
|
||||
if (valueInput) {
|
||||
if (valueInput.type === "math_number") {
|
||||
val = valueInput.getFieldValue("NUM") || "10";
|
||||
} else {
|
||||
val = _generator.valueToCode(valueInput, "VALUE", _generator.ORDER_NONE) || "10";
|
||||
}
|
||||
} else {
|
||||
val = "10";
|
||||
}
|
||||
|
||||
return `sound.adjust_effect("${effect}", ${val})\n`;
|
||||
};
|
||||
@@ -0,0 +1,7 @@
|
||||
export const sound_effect_clear = function(_block, _generator) {
|
||||
if (!_generator.definitions_['import_sound']) {
|
||||
_generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
return "sound.clear_effects()\n";
|
||||
};
|
||||
@@ -0,0 +1,21 @@
|
||||
export const sound_effect_set = function(_block, _generator) {
|
||||
if (!_generator.definitions_['import_sound']) {
|
||||
_generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
const effect = _block.getFieldValue("EFFECT");
|
||||
const valueInput = _block.getInputTargetBlock("VALUE");
|
||||
let val;
|
||||
|
||||
if (valueInput) {
|
||||
if (valueInput.type === "math_number") {
|
||||
val = valueInput.getFieldValue("NUM") || "100";
|
||||
} else {
|
||||
val = _generator.valueToCode(valueInput, "VALUE", _generator.ORDER_NONE) || "100";
|
||||
}
|
||||
} else {
|
||||
val = "100";
|
||||
}
|
||||
|
||||
return `sound.set_effect("${effect}", ${val})\n`;
|
||||
};
|
||||
@@ -0,0 +1,11 @@
|
||||
export const sound_play = function(_block, _generator) {
|
||||
if (!_generator.definitions_['import_sound']) {
|
||||
_generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
const sound = _block.getFieldValue("SOUND");
|
||||
if (sound === "record") {
|
||||
return `sound.record()\n`;
|
||||
}
|
||||
return `sound.play("${sound}")\n`;
|
||||
};
|
||||
@@ -0,0 +1,10 @@
|
||||
export const sound_play_frequency = function (_block, generator) {
|
||||
if (!generator.definitions_['import_sound']) {
|
||||
generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
const frequencyInput = generator.valueToCode(this, "FREQUENCY", generator.ORDER_ATOMIC);
|
||||
const durationInput = generator.valueToCode(this, "DURATION", generator.ORDER_ATOMIC);
|
||||
|
||||
return `sound.play_frequency(${frequencyInput}, ${durationInput})\n`;
|
||||
};
|
||||
@@ -0,0 +1,9 @@
|
||||
export const sound_play_frequency_no_duration = function (_block, generator) {
|
||||
if (!generator.definitions_['import_sound']) {
|
||||
generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
const frequencyInput = generator.valueToCode(this, "FREQUENCY", generator.ORDER_ATOMIC);
|
||||
|
||||
return `sound.play_frequency_no_duration(${frequencyInput})\n`;
|
||||
};
|
||||
@@ -0,0 +1,9 @@
|
||||
export const sound_play_note_list = function(_block, _generator) {
|
||||
if (!_generator.definitions_['import_sound']) {
|
||||
_generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
const noteList = this.getFieldValue("NOTE_LIST");
|
||||
|
||||
return `sound.play_note_list("${noteList}")\n`;
|
||||
};
|
||||
@@ -0,0 +1,12 @@
|
||||
export const sound_play_wait = function(_block, _generator) {
|
||||
if (!_generator.definitions_['import_sound']) {
|
||||
_generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
const sound = _block.getFieldValue("SOUND");
|
||||
if (sound === "record") {
|
||||
return `sound.record()\n`;
|
||||
}
|
||||
|
||||
return `sound.play_blocking("${sound}")\n`;
|
||||
};
|
||||
@@ -0,0 +1,7 @@
|
||||
export const sound_record = function(_block, _generator) {
|
||||
if (!_generator.definitions_['import_sound']) {
|
||||
_generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
return `sound.record()\n`;
|
||||
};
|
||||
@@ -0,0 +1,7 @@
|
||||
export const sound_note = function (_block, generator) {
|
||||
// 获取频率值(字符串格式)
|
||||
const frequency = this.getFieldValue("NOTE");
|
||||
return [frequency, generator.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
export const sound_stop_all = function(_block, _generator) {
|
||||
if (!_generator.definitions_['import_sound']) {
|
||||
_generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
return "sound.stop_all()\n";
|
||||
};
|
||||
@@ -0,0 +1,8 @@
|
||||
export const sound_volume_add = function(_block, generator) {
|
||||
if (!generator.definitions_['import_sound']) {
|
||||
generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
const val = generator.valueToCode(_block, "VALUE", generator.ORDER_NONE) || "0";
|
||||
return `sound.adjust_volume(${val})\n`;
|
||||
};
|
||||
@@ -0,0 +1,7 @@
|
||||
export const sound_volume_get = function(_block, generator) {
|
||||
if (!generator.definitions_['import_sound']) {
|
||||
generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
return ['sound.get_volume()', generator.ORDER_ATOMIC];
|
||||
};
|
||||
@@ -0,0 +1,8 @@
|
||||
export const sound_volume_set = function(_block, generator) {
|
||||
if (!generator.definitions_['import_sound']) {
|
||||
generator.definitions_['import_sound'] = 'import sound';
|
||||
}
|
||||
|
||||
const val = generator.valueToCode(_block, "VALUE", generator.ORDER_NONE) || "100";
|
||||
return `sound.set_volume(${val})\n`;
|
||||
};
|
||||
@@ -0,0 +1,97 @@
|
||||
export const tensorflow_init_tensor = function (_, generator) {
|
||||
var VALUE_INPUT_VAR = generator.valueToCode(this, "VAR", generator.ORDER_ATOMIC);
|
||||
generator.definitions_['import_tensorflow'] = 'import tensorflow';
|
||||
var code = 'tensorflow.tensor(' + VALUE_INPUT_VAR + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
export const tensorflow_sequential = function (_, generator) {
|
||||
generator.definitions_['import_tensorflow'] = 'import tensorflow';
|
||||
var code = 'tensorflow.sequential()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
export const tensorflow_layers_dense = function (_, generator) {
|
||||
generator.definitions_['import_tensorflow'] = 'import tensorflow';
|
||||
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
|
||||
var VALUE_INPUT_VAR2 = generator.valueToCode(this, "VAR2", generator.ORDER_ATOMIC);
|
||||
var code = 'tensorflow.layers.dense(units = ' + VALUE_INPUT_VAR1 + ', input_shape = ' + VALUE_INPUT_VAR2 + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
export const tensorflow_add = function (_, generator) {
|
||||
generator.definitions_['import_tensorflow'] = 'import tensorflow';
|
||||
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
|
||||
var VALUE_INPUT_VAR2 = generator.valueToCode(this, "VAR2", generator.ORDER_ATOMIC);
|
||||
var code = VALUE_INPUT_VAR1 + '.add(' + VALUE_INPUT_VAR2 + ')\n';
|
||||
return code;
|
||||
};
|
||||
|
||||
export const tensorflow_compile = function (_, generator) {
|
||||
generator.definitions_['import_tensorflow'] = 'import tensorflow';
|
||||
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
|
||||
var VALUE_INPUT_VAR2 = this.getFieldValue("VAR2");
|
||||
var VALUE_INPUT_VAR3 = this.getFieldValue("VAR3");
|
||||
var code = VALUE_INPUT_VAR1 + '.compile(loss = "' + VALUE_INPUT_VAR2 + '", optimizer = "' + VALUE_INPUT_VAR3 + '")\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const tensorflow_fit = function (_, generator) {
|
||||
generator.definitions_['import_tensorflow'] = 'import tensorflow';
|
||||
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
|
||||
var VALUE_INPUT_VAR2 = generator.valueToCode(this, "VAR2", generator.ORDER_ATOMIC);
|
||||
var VALUE_INPUT_VAR3 = generator.valueToCode(this, "VAR3", generator.ORDER_ATOMIC);
|
||||
var VALUE_INPUT_VAR4 = generator.valueToCode(this, "VAR4", generator.ORDER_ATOMIC);
|
||||
var VALUE_INPUT_VAR5 = generator.valueToCode(this, "VAR5", generator.ORDER_ATOMIC);
|
||||
var code = 'await ' + VALUE_INPUT_VAR1 + '.fit(' + VALUE_INPUT_VAR2 + ', ' + VALUE_INPUT_VAR3 + ', epochs=' + VALUE_INPUT_VAR4 + ', verbose=' + VALUE_INPUT_VAR5 + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
export const tensorflow_get_loss = function (_, generator) {
|
||||
generator.definitions_['import_tensorflow'] = 'import tensorflow';
|
||||
var VALUE_INPUT_VAR = generator.valueToCode(this, "VAR", generator.ORDER_ATOMIC);
|
||||
var code = VALUE_INPUT_VAR + '.history.loss';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
export const tensorflow_predict = function (_, generator) {
|
||||
generator.definitions_['import_tensorflow'] = 'import tensorflow';
|
||||
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
|
||||
var VALUE_INPUT_VAR2 = generator.valueToCode(this, "VAR2", generator.ORDER_ATOMIC);
|
||||
var code = VALUE_INPUT_VAR1 + '.predict(' + VALUE_INPUT_VAR2 + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
export const tensorflow_get_tensor_data = function (_, generator) {
|
||||
generator.definitions_['import_tensorflow'] = 'import tensorflow';
|
||||
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR", generator.ORDER_ATOMIC);
|
||||
var code = "(await " + VALUE_INPUT_VAR1 + ".data())";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
export const tensorflow_save_or_export_model = function (_, generator) {
|
||||
generator.definitions_['import_tensorflow'] = 'import tensorflow';
|
||||
|
||||
var VALUE_INPUT_NAME1 = generator.valueToCode(this, "NAME1", generator.ORDER_ATOMIC);
|
||||
var FIELD_NAME = this.getFieldValue("NAME");
|
||||
var VALUE_INPUT_NAME2 = generator.valueToCode(this, "NAME2", generator.ORDER_ATOMIC).replace(/^'|'$/g, '');
|
||||
if (FIELD_NAME == "export") {
|
||||
return `await ${VALUE_INPUT_NAME1}.save("downloads://${VALUE_INPUT_NAME2}")\n`;
|
||||
}
|
||||
return `await ${VALUE_INPUT_NAME1}.save("indexeddb://${VALUE_INPUT_NAME2}")\n`;
|
||||
};
|
||||
|
||||
export const tensorflow_use_load_model = function (_, generator) {
|
||||
generator.definitions_['import_tensorflow'] = 'import tensorflow';
|
||||
|
||||
var VALUE_INPUT_NAME = generator.valueToCode(this, "NAME", generator.ORDER_ATOMIC).replace(/^'|'$/g, '');
|
||||
return [`await tensorflow.load_model("${VALUE_INPUT_NAME}")`, generator.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
export const tensorflow_prepare_picture = function (_, generator) {
|
||||
generator.definitions_['import_tensorflow'] = 'import tensorflow';
|
||||
generator.definitions_['import_numpy'] = 'import numpy';
|
||||
generator.definitions_['import_PIL'] = 'import PIL';
|
||||
var VALUE_INPUT_NAME = generator.valueToCode(this, "NAME", generator.ORDER_ATOMIC);
|
||||
return [`(await tensorflow.prepare_qmyixtxi(tensorflow.tensor(numpy.array(PIL.Image.open(${VALUE_INPUT_NAME}).convert('RGB')))))`, generator.ORDER_ATOMIC];
|
||||
};
|
||||
213
mixly/boards/default_src/python_pyodide/index.js
Normal file
213
mixly/boards/default_src/python_pyodide/index.js
Normal file
@@ -0,0 +1,213 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
import './language/loader';
|
||||
import { Profile } from 'mixly';
|
||||
|
||||
import {
|
||||
PythonVariablesBlocks,
|
||||
PythonControlBlocks,
|
||||
PythonMathBlocks,
|
||||
PythonTextBlocks,
|
||||
PythonListsBlocks,
|
||||
PythonDictsBlocks,
|
||||
PythonLogicBlocks,
|
||||
PythonStorageBlocks,
|
||||
PythonProceduresBlocks,
|
||||
PythonTupleBlocks,
|
||||
PythonSetBlocks,
|
||||
PythonHtmlBlocks,
|
||||
PythonUtilityBlocks,
|
||||
PythonVariablesGenerators,
|
||||
PythonControlGenerators,
|
||||
PythonMathGenerators,
|
||||
PythonTextGenerators,
|
||||
PythonListsGenerators,
|
||||
PythonDictsGenerators,
|
||||
PythonLogicGenerators,
|
||||
PythonStorageGenerators,
|
||||
PythonProceduresGenerators,
|
||||
PythonTupleGenerators,
|
||||
PythonSetGenerators,
|
||||
PythonHtmlGenerators,
|
||||
PythonUtilityGenerators,
|
||||
Procedures,
|
||||
Variables,
|
||||
Python
|
||||
} from '@mixly/python';
|
||||
|
||||
import {
|
||||
PythonMixpyAIBlocks,
|
||||
PythonMixpyAlgorithmBlocks,
|
||||
PythonMixpyCommunicateBlocks,
|
||||
PythonMixpyCVBlocks,
|
||||
PythonMixpyDataBlocks,
|
||||
PythonMixpyDatastructureBlocks,
|
||||
PythonMixpyFactoryBlocks,
|
||||
PythonMixpyHardwareBlocks,
|
||||
PythonMixpyInoutBlocks,
|
||||
PythonMixpyIOTBlocks,
|
||||
PythonMixpyPinsBlocks,
|
||||
PythonMixpySerialBlocks,
|
||||
PythonMixpySKLearnBlocks,
|
||||
PythonMixpySystemBlocks,
|
||||
PythonMixpyTurtleBlocks,
|
||||
PythonMixpyAIGenerators,
|
||||
PythonMixpyAlgorithmGenerators,
|
||||
PythonMixpyCommunicateGenerators,
|
||||
PythonMixpyCVGenerators,
|
||||
PythonMixpyDataGenerators,
|
||||
PythonMixpyDatastructureGenerators,
|
||||
PythonMixpyFactoryGenerators,
|
||||
PythonMixpyHardwareGenerators,
|
||||
PythonMixpyInoutGenerators,
|
||||
PythonMixpyIOTGenerators,
|
||||
PythonMixpyPinsGenerators,
|
||||
PythonMixpySerialGenerators,
|
||||
PythonMixpySKLearnGenerators,
|
||||
PythonMixpySystemGenerators,
|
||||
PythonMixpyTurtleGenerators
|
||||
} from '@mixly/python-mixpy';
|
||||
|
||||
import {
|
||||
PythonPyodideSKLearnBlocks,
|
||||
PythonPyodideSKLearnGenerators,
|
||||
PythonTensorflowBlocks,
|
||||
PythonTensorflowGenerators
|
||||
} from './';
|
||||
|
||||
import './others/loader';
|
||||
import sound from './others/sound.js';
|
||||
|
||||
import './css/color_mixpy_python_advance.css';
|
||||
|
||||
Object.assign(Blockly.Variables, Variables);
|
||||
Object.assign(Blockly.Procedures, Procedures);
|
||||
Blockly.Python = Python;
|
||||
Blockly.generator = Python;
|
||||
|
||||
Profile.default = {};
|
||||
|
||||
Object.assign(
|
||||
Blockly.Blocks,
|
||||
PythonVariablesBlocks,
|
||||
PythonControlBlocks,
|
||||
PythonMathBlocks,
|
||||
PythonTextBlocks,
|
||||
PythonListsBlocks,
|
||||
PythonDictsBlocks,
|
||||
PythonLogicBlocks,
|
||||
PythonStorageBlocks,
|
||||
PythonProceduresBlocks,
|
||||
PythonTupleBlocks,
|
||||
PythonSetBlocks,
|
||||
PythonHtmlBlocks,
|
||||
PythonUtilityBlocks,
|
||||
PythonMixpyAIBlocks,
|
||||
PythonMixpyAlgorithmBlocks,
|
||||
PythonMixpyCommunicateBlocks,
|
||||
PythonMixpyCVBlocks,
|
||||
PythonMixpyDataBlocks,
|
||||
PythonMixpyDatastructureBlocks,
|
||||
PythonMixpyFactoryBlocks,
|
||||
PythonMixpyHardwareBlocks,
|
||||
PythonMixpyInoutBlocks,
|
||||
PythonMixpyIOTBlocks,
|
||||
PythonMixpyPinsBlocks,
|
||||
PythonMixpySerialBlocks,
|
||||
PythonMixpySKLearnBlocks,
|
||||
PythonMixpySystemBlocks,
|
||||
PythonMixpyTurtleBlocks,
|
||||
PythonPyodideSKLearnBlocks,
|
||||
PythonTensorflowBlocks
|
||||
);
|
||||
|
||||
Object.assign(
|
||||
Blockly.Python.forBlock,
|
||||
PythonVariablesGenerators,
|
||||
PythonControlGenerators,
|
||||
PythonMathGenerators,
|
||||
PythonTextGenerators,
|
||||
PythonListsGenerators,
|
||||
PythonDictsGenerators,
|
||||
PythonLogicGenerators,
|
||||
PythonStorageGenerators,
|
||||
PythonProceduresGenerators,
|
||||
PythonTupleGenerators,
|
||||
PythonSetGenerators,
|
||||
PythonHtmlGenerators,
|
||||
PythonUtilityGenerators,
|
||||
PythonMixpyAIGenerators,
|
||||
PythonMixpyAlgorithmGenerators,
|
||||
PythonMixpyCommunicateGenerators,
|
||||
PythonMixpyCVGenerators,
|
||||
PythonMixpyDataGenerators,
|
||||
PythonMixpyDatastructureGenerators,
|
||||
PythonMixpyFactoryGenerators,
|
||||
PythonMixpyHardwareGenerators,
|
||||
PythonMixpyInoutGenerators,
|
||||
PythonMixpyIOTGenerators,
|
||||
PythonMixpyPinsGenerators,
|
||||
PythonMixpySerialGenerators,
|
||||
PythonMixpySKLearnGenerators,
|
||||
PythonMixpySystemGenerators,
|
||||
PythonMixpyTurtleGenerators,
|
||||
PythonPyodideSKLearnGenerators,
|
||||
PythonTensorflowGenerators
|
||||
);
|
||||
import { sound_play } from './blocks/sound/play/play.js';
|
||||
import { sound_play_wait } from './blocks/sound/play/play_wait.js';
|
||||
import { sound_stop_all } from './blocks/sound/play/sound_stop_all.js';
|
||||
import { sound_effect_add } from './blocks/sound/effect/add.js';
|
||||
import { sound_effect_set } from './blocks/sound/effect/sound_effect_set.js';
|
||||
import { sound_effect_clear } from './blocks/sound/effect/sound_effect_clear.js';
|
||||
import { sound_volume_add } from './blocks/sound/volume/add.js';
|
||||
import { sound_volume_set } from './blocks/sound/volume/set.js';
|
||||
import { sound_volume_get } from './blocks/sound/volume/get.js';
|
||||
import { sound_record } from './blocks/sound/play/record.js';
|
||||
import { sound_play_frequency } from './blocks/sound/play/play_frequency.js';
|
||||
import { sound_play_frequency_no_duration } from './blocks/sound/play/play_frequency_no_duration.js';
|
||||
import { sound_play_note_list } from './blocks/sound/play/play_note_list.js';
|
||||
import { sound_note } from './blocks/sound/play/sound_note.js';
|
||||
import { sound_play as sound_play_gen } from './generators/sound/play/play.js';
|
||||
import { sound_play_wait as sound_play_wait_gen } from './generators/sound/play/play_wait.js';
|
||||
import { sound_stop_all as sound_stop_all_gen } from './generators/sound/play/sound_stop_all.js';
|
||||
import { sound_effect_add as sound_effect_add_gen } from './generators/sound/effect/add.js';
|
||||
import { sound_effect_set as sound_effect_set_gen } from './generators/sound/effect/sound_effect_set.js';
|
||||
import { sound_effect_clear as sound_effect_clear_gen } from './generators/sound/effect/sound_effect_clear.js';
|
||||
import { sound_volume_add as sound_volume_add_gen } from './generators/sound/volume/add.js';
|
||||
import { sound_volume_set as sound_volume_set_gen } from './generators/sound/volume/set.js';
|
||||
import { sound_volume_get as sound_volume_get_gen } from './generators/sound/volume/get.js';
|
||||
import { sound_record as sound_record_gen } from './generators/sound/play/record.js';
|
||||
import { sound_play_frequency as sound_play_frequency_gen } from './generators/sound/play/play_frequency.js';
|
||||
import { sound_play_frequency_no_duration as sound_play_frequency_no_duration_gen } from './generators/sound/play/play_frequency_no_duration.js';
|
||||
import { sound_play_note_list as sound_play_note_list_gen } from './generators/sound/play/play_note_list.js';
|
||||
import { sound_note as sound_note_gen } from './generators/sound/play/sound_note.js';
|
||||
const soundBlocks = {
|
||||
sound_play, sound_play_wait, sound_stop_all,
|
||||
sound_effect_add, sound_effect_set, sound_effect_clear,
|
||||
sound_volume_add, sound_volume_set, sound_volume_get,
|
||||
sound_record,
|
||||
sound_play_frequency, sound_play_frequency_no_duration,
|
||||
sound_play_note_list, sound_note
|
||||
};
|
||||
|
||||
const soundGenerators = {
|
||||
sound_play: sound_play_gen,
|
||||
sound_play_wait: sound_play_wait_gen,
|
||||
sound_stop_all: sound_stop_all_gen,
|
||||
sound_effect_add: sound_effect_add_gen,
|
||||
sound_effect_set: sound_effect_set_gen,
|
||||
sound_effect_clear: sound_effect_clear_gen,
|
||||
sound_volume_add: sound_volume_add_gen,
|
||||
sound_volume_set: sound_volume_set_gen,
|
||||
sound_volume_get: sound_volume_get_gen,
|
||||
sound_record: sound_record_gen,
|
||||
sound_play_frequency: sound_play_frequency_gen,
|
||||
sound_play_frequency_no_duration: sound_play_frequency_no_duration_gen,
|
||||
sound_play_note_list: sound_play_note_list_gen,
|
||||
sound_note: sound_note_gen
|
||||
};
|
||||
|
||||
Object.assign(Blockly.Blocks, soundBlocks);
|
||||
Object.assign(Blockly.Python.forBlock, soundGenerators);
|
||||
|
||||
window.sound = sound;
|
||||
18
mixly/boards/default_src/python_pyodide/jsconfig.json
Normal file
18
mixly/boards/default_src/python_pyodide/jsconfig.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"experimentalDecorators": true,
|
||||
"baseUrl": "./",
|
||||
"paths": {
|
||||
"@mixly/python": [
|
||||
"../python"
|
||||
],
|
||||
"@mixly/python-mixpy": [
|
||||
"../python_mixpy"
|
||||
]
|
||||
}
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"dist"
|
||||
]
|
||||
}
|
||||
15
mixly/boards/default_src/python_pyodide/language/en.js
Normal file
15
mixly/boards/default_src/python_pyodide/language/en.js
Normal file
@@ -0,0 +1,15 @@
|
||||
export const EnMsg = {
|
||||
'PYTHON_PYODIDE_IMAGE': 'Image',
|
||||
'PYTHON_PYODIDE_TOOL': 'Teachable Machine',
|
||||
'PYTHON_PYODIDE_GAME': 'Game of Life',
|
||||
'PYTHON_PYODIDE_GAME_EPOCH': 'Iterations',
|
||||
'PYTHON_PYODIDE_GAME_START': 'Start',
|
||||
'PYTHON_PYODIDE_GAME_PAUSE': 'Pause',
|
||||
'PYTHON_PYODIDE_GAME_RANDOM': 'Random Initialization',
|
||||
'PYTHON_PYODIDE_GAME_RESET': 'Reset',
|
||||
'PYTHON_PYODIDE_LOADING': 'Python3 kernel loading...',
|
||||
'PYTHON_PYODIDE_FILE_SYSTEM': 'Local File System',
|
||||
'PYTHON_PYODIDE_LOAD_FILE_SYSTEM': 'Load Local Folder'
|
||||
};
|
||||
|
||||
export const EnCatgories = {};
|
||||
12
mixly/boards/default_src/python_pyodide/language/loader.js
Normal file
12
mixly/boards/default_src/python_pyodide/language/loader.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
import { ZhHansMsg, ZhHansCatgories } from './zh-hans';
|
||||
import { ZhHantMsg, ZhHantCatgories } from './zh-hant';
|
||||
import { EnMsg, EnCatgories } from './en';
|
||||
|
||||
// 载入语言文件
|
||||
Object.assign(Blockly.Lang.ZhHans, ZhHansMsg);
|
||||
Object.assign(Blockly.Lang.ZhHant, ZhHantMsg);
|
||||
Object.assign(Blockly.Lang.En, EnMsg);
|
||||
Object.assign(Blockly.Lang.ZhHans.MSG, ZhHansCatgories);
|
||||
Object.assign(Blockly.Lang.ZhHant.MSG, ZhHantCatgories);
|
||||
Object.assign(Blockly.Lang.En.MSG, EnCatgories);
|
||||
15
mixly/boards/default_src/python_pyodide/language/zh-hans.js
Normal file
15
mixly/boards/default_src/python_pyodide/language/zh-hans.js
Normal file
@@ -0,0 +1,15 @@
|
||||
export const ZhHansMsg = {
|
||||
'PYTHON_PYODIDE_IMAGE': '图像',
|
||||
'PYTHON_PYODIDE_TOOL': '可教机器',
|
||||
'PYTHON_PYODIDE_GAME': '生命游戏',
|
||||
'PYTHON_PYODIDE_GAME_EPOCH': '代数',
|
||||
'PYTHON_PYODIDE_GAME_START': '开始',
|
||||
'PYTHON_PYODIDE_GAME_PAUSE': '暂停',
|
||||
'PYTHON_PYODIDE_GAME_RANDOM': '随机初始化',
|
||||
'PYTHON_PYODIDE_GAME_RESET': '重置',
|
||||
'PYTHON_PYODIDE_LOADING': 'Python3内核载入中...',
|
||||
'PYTHON_PYODIDE_FILE_SYSTEM': '本地文件系统',
|
||||
'PYTHON_PYODIDE_LOAD_FILE_SYSTEM': '载入本地文件夹'
|
||||
};
|
||||
|
||||
export const ZhHansCatgories = {};
|
||||
15
mixly/boards/default_src/python_pyodide/language/zh-hant.js
Normal file
15
mixly/boards/default_src/python_pyodide/language/zh-hant.js
Normal file
@@ -0,0 +1,15 @@
|
||||
export const ZhHantMsg = {
|
||||
'PYTHON_PYODIDE_IMAGE': '影像',
|
||||
'PYTHON_PYODIDE_TOOL': '可教機器',
|
||||
'PYTHON_PYODIDE_GAME': '生命遊戲',
|
||||
'PYTHON_PYODIDE_GAME_EPOCH': '代數',
|
||||
'PYTHON_PYODIDE_GAME_START': '開始',
|
||||
'PYTHON_PYODIDE_GAME_PAUSE': '暫停',
|
||||
'PYTHON_PYODIDE_GAME_RANDOM': '隨機初始化',
|
||||
'PYTHON_PYODIDE_GAME_RESET': '重置',
|
||||
'PYTHON_PYODIDE_LOADING': 'Python3核心載入...',
|
||||
'PYTHON_PYODIDE_FILE_SYSTEM': '本機檔案系統',
|
||||
'PYTHON_PYODIDE_LOAD_FILE_SYSTEM': '載入本機資料夾'
|
||||
};
|
||||
|
||||
export const ZhHantCatgories = {};
|
||||
12
mixly/boards/default_src/python_pyodide/origin/config.json
Normal file
12
mixly/boards/default_src/python_pyodide/origin/config.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"boardImg": "./media/webpy.png",
|
||||
"boardType": "Python 3 Online",
|
||||
"language": "Python",
|
||||
"nav": {
|
||||
"webrun": true,
|
||||
"webcancel": true,
|
||||
"save": {
|
||||
"py": true
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
238
mixly/boards/default_src/python_pyodide/origin/examples/map.json
Normal file
238
mixly/boards/default_src/python_pyodide/origin/examples/map.json
Normal file
@@ -0,0 +1,238 @@
|
||||
{
|
||||
"大同出版社-五年级": {
|
||||
"上册": {
|
||||
"第12课判断闰年.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第12课判断闰年.mix"
|
||||
},
|
||||
"第13课让计算机会数数1.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第13课让计算机会数数1.mix"
|
||||
},
|
||||
"第13课让计算机会数数2.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第13课让计算机会数数2.mix"
|
||||
},
|
||||
"第14课for循环.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第14课for循环.mix"
|
||||
},
|
||||
"第14课趣味数玩具.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第14课趣味数玩具.mix"
|
||||
},
|
||||
"第15课破译密码.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第15课破译密码.mix"
|
||||
},
|
||||
"第8课动物园购票.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第8课动物园购票.mix"
|
||||
},
|
||||
"第8课计算购书费.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第8课计算购书费.mix"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "上册"
|
||||
},
|
||||
"下册": {
|
||||
"第12课网页排名算法.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第12课网页排名算法.mix"
|
||||
},
|
||||
"第1课比较交换找最大值.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第1课比较交换找最大值.mix"
|
||||
},
|
||||
"第2课选择排序(未要求代码).mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第2课选择排序(未要求代码).mix"
|
||||
},
|
||||
"第4课冒泡排序.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第4课冒泡排序.mix"
|
||||
},
|
||||
"第6课用算数求解鸡兔同笼.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第6课用算数求解鸡兔同笼.mix"
|
||||
},
|
||||
"第6课遍历求解鸡兔同笼.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第6课遍历求解鸡兔同笼.mix"
|
||||
},
|
||||
"第7课兔子增长算法.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第7课兔子增长算法.mix"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "下册"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "大同出版社-五年级"
|
||||
},
|
||||
"教学指南米思齐修订版": {
|
||||
"八年级": {
|
||||
"18-2 从物联网服务平台获取数据(python).mix": {
|
||||
"__file__": true,
|
||||
"__name__": "18-2 从物联网服务平台获取数据(python).mix"
|
||||
},
|
||||
"18-3 数据处理(python).mix": {
|
||||
"__file__": true,
|
||||
"__name__": "18-3 数据处理(python).mix"
|
||||
},
|
||||
"19-3 数据可视化(python).mix": {
|
||||
"__file__": true,
|
||||
"__name__": "19-3 数据可视化(python).mix"
|
||||
},
|
||||
"22-2 身高记录仪系统分析端(python).mix": {
|
||||
"__file__": true,
|
||||
"__name__": "22-2 身高记录仪系统分析端(python).mix"
|
||||
},
|
||||
"22-22 手速测试仪系统分析端(python).mix": {
|
||||
"__file__": true,
|
||||
"__name__": "22-22 手速测试仪系统分析端(python).mix"
|
||||
},
|
||||
"9-1 利用HTTP获取互联网中的数据(python).mix": {
|
||||
"__file__": true,
|
||||
"__name__": "9-1 利用HTTP获取互联网中的数据(python).mix"
|
||||
},
|
||||
"9-2 解析数据(python).mix": {
|
||||
"__file__": true,
|
||||
"__name__": "9-2 解析数据(python).mix"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "八年级"
|
||||
},
|
||||
"六年级": {
|
||||
"第10课.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第10课.mix"
|
||||
},
|
||||
"第12课": {
|
||||
"判断平年与闰年.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "判断平年与闰年.mix"
|
||||
},
|
||||
"根据输入的气温给出提示.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "根据输入的气温给出提示.mix"
|
||||
},
|
||||
"购买火车票.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "购买火车票.mix"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "第12课"
|
||||
},
|
||||
"第13课": {
|
||||
"从1数到100.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "从1数到100.mix"
|
||||
},
|
||||
"数数.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "数数.mix"
|
||||
},
|
||||
"输出1-n的所有偶数.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "输出1-n的所有偶数.mix"
|
||||
},
|
||||
"输出1-n能被5整除的数.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "输出1-n能被5整除的数.mix"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "第13课"
|
||||
},
|
||||
"第15课": {
|
||||
"三位密码锁.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "三位密码锁.mix"
|
||||
},
|
||||
"找到所有水仙花数.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "找到所有水仙花数.mix"
|
||||
},
|
||||
"破解时间估算.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "破解时间估算.mix"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "第15课"
|
||||
},
|
||||
"第16课": {
|
||||
"找出最大数.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "找出最大数.mix"
|
||||
},
|
||||
"找出最小数.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "找出最小数.mix"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "第16课"
|
||||
},
|
||||
"第17课": {
|
||||
"从大到小的选择排序.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "从大到小的选择排序.mix"
|
||||
},
|
||||
"排序.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "排序.mix"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "第17课"
|
||||
},
|
||||
"第19课": {
|
||||
"冒泡排序(for循环).mix": {
|
||||
"__file__": true,
|
||||
"__name__": "冒泡排序(for循环).mix"
|
||||
},
|
||||
"冒泡排序.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "冒泡排序.mix"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "第19课"
|
||||
},
|
||||
"第21课.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第21课.mix"
|
||||
},
|
||||
"第23课.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第23课.mix"
|
||||
},
|
||||
"第3课.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "第3课.mix"
|
||||
},
|
||||
"第8课": {
|
||||
"买水果算价格.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "买水果算价格.mix"
|
||||
},
|
||||
"公园购票.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "公园购票.mix"
|
||||
},
|
||||
"比较两个数并输出较小数.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "比较两个数并输出较小数.mix"
|
||||
},
|
||||
"温度转换.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "温度转换.mix"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "第8课"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "六年级"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "教学指南米思齐修订版"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="-R?$,g?yY$eWQQ1yvnIw" x="-422" y="-51"><field name="VAR">year</field><value name="VALUE"><block type="inout_type_input" id="5Q.H$;P/hkT~(RO8)0}="><field name="DIR">int</field><value name="VAR"><shadow type="text" id=")bt[ALwgSd2(F;pH4T3s"><field name="TEXT">请输入一个年份:</field></shadow></value></block></value><next><block type="controls_if" id="2p0@;6}`HRfsK0@4RoHB"><mutation elseif="1" else="1"></mutation><value name="IF0"><block type="logic_operation" id="?~$/(V?#,{=QF~AcqFq7"><field name="OP">AND</field><value name="A"><block type="logic_compare" id="TPdZ$XVif=,])!LX}T5Q"><field name="OP">EQ</field><value name="A"><block type="math_arithmetic" id="H8$P|zeahVw(sT}ztjLf"><field name="OP">QUYU</field><value name="A"><shadow type="math_number" id="uM_c/6Z*f*KaGT,+=iS#"><field name="NUM">1</field></shadow><block type="variables_get" id="Oqlzy2#{#R0D~KzAFuA]"><field name="VAR">year</field></block></value><value name="B"><shadow type="math_number" id="3CDuh`b{j).}cqi0i$p}"><field name="NUM">4</field></shadow></value></block></value><value name="B"><block type="math_number" id="$W1q#gi]F[9Y=|*Lh^rN"><field name="NUM">0</field></block></value></block></value><value name="B"><block type="logic_compare" id="yFV`r?JS~kh`p?YRZ:,*"><field name="OP">NEQ</field><value name="A"><block type="math_arithmetic" id="y5vq,aq@tBw_.Ojt)TU2"><field name="OP">QUYU</field><value name="A"><shadow type="math_number" id="uM_c/6Z*f*KaGT,+=iS#"><field name="NUM">1</field></shadow><block type="variables_get" id="e2s!76dOm+~f.nKru0W)"><field name="VAR">year</field></block></value><value name="B"><shadow type="math_number" id="PQ2I?UkyR7?Ja.G8a@b,"><field name="NUM">100</field></shadow></value></block></value><value name="B"><block type="math_number" id="n~tjsK*Bv:qnTFXArt!A"><field name="NUM">0</field></block></value></block></value></block></value><statement name="DO0"><block type="inout_print_many" id="w5:=X8qq{^CzA]{BabV@"><mutation items="2"></mutation><value name="ADD0"><block type="variables_get" id=":w_RDJ7N^fiK{f.7^LL:"><field name="VAR">year</field></block></value><value name="ADD1"><block type="text" id="TQmMZn~$APFYv?|o0mkX"><field name="TEXT">是闰年</field></block></value></block></statement><value name="IF1"><block type="logic_compare" id="^rf_.AW~Aps;XDYPuhI["><field name="OP">EQ</field><value name="A"><block type="math_arithmetic" id="qk}+,NlI_/r7,](=kH5,"><field name="OP">QUYU</field><value name="A"><shadow type="math_number" id="uM_c/6Z*f*KaGT,+=iS#"><field name="NUM">1</field></shadow><block type="variables_get" id="-#}kl[+CFk62:j-$Dv7e"><field name="VAR">year</field></block></value><value name="B"><shadow type="math_number" id="*`Xb_5o:zNL`}iIYB~gn"><field name="NUM">400</field></shadow></value></block></value><value name="B"><block type="math_number" id="(2nk5}I![TyLA1f/KqcR"><field name="NUM">0</field></block></value></block></value><statement name="DO1"><block type="inout_print_many" id="dl2dO-;ZXORx3G/Laftn"><mutation items="2"></mutation><value name="ADD0"><block type="variables_get" id="5G8nk#He`eV._I|+Mb?a"><field name="VAR">year</field></block></value><value name="ADD1"><block type="text" id="NQhCarKhkl$Zg_FnR#TF"><field name="TEXT">是闰年</field></block></value></block></statement><statement name="ELSE"><block type="inout_print_many" id="G,.nKD}~$SO{j$v9M6f1"><mutation items="2"></mutation><value name="ADD0"><block type="variables_get" id="pjCNM*FORKhWb`SbG4)-"><field name="VAR">year</field></block></value><value name="ADD1"><block type="text" id="5b9vl.cwGi=Y[l#N74ZW"><field name="TEXT">是平年</field></block></value></block></statement></block></next></block></xml><config>{}</config><code>eWVhciA9IGludChpbnB1dCgn6K+36L6T5YWl5LiA5Liq5bm05Lu977yaJykpCmlmIHllYXIgJSA0ID09IDAgYW5kIHllYXIgJSAxMDAgIT0gMDoKICAgIHByaW50KHllYXIsICfmmK/pl7DlubQnKQplbGlmIHllYXIgJSA0MDAgPT0gMDoKICAgIHByaW50KHllYXIsICfmmK/pl7DlubQnKQplbHNlOgogICAgcHJpbnQoeWVhciwgJ+aYr+W5s+W5tCcpCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="ZvKRW4ew-Bd4/V+?5G/c" x="-616" y="-48"><field name="VAR">start_time</field><value name="VALUE"><block type="controls_millis" id="j3xIg2ift+=@La{@a;D~"></block></value><next><block type="variables_set" id="7`.+!DeSA#w7lF3895TN"><field name="VAR">i</field><value name="VALUE"><block type="math_number" id="@PCbj|)4aHa[u=o#5~^6"><field name="NUM">1</field></block></value><next><block type="controls_whileUntil" id="kTmL:K.^K`pTAd88jido"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="Fja6m=H|j|xXQejl6mTd"><field name="BOOL">TRUE</field></shadow><block type="logic_compare" id="?Iho0oIgI7v0*6/]mvV8"><field name="OP">LTE</field><value name="A"><block type="variables_get" id="Ph!;YS@AxT?cHRoBWTOl"><field name="VAR">i</field></block></value><value name="B"><block type="math_number" id="}3n(No50U(JZ0gM=RceE"><field name="NUM">1000</field></block></value></block></value><statement name="DO"><block type="inout_print" id="X}]v]0PnEZ~82*m*:H}/"><value name="VAR"><shadow type="text" id="6NItm[YB$1RC(e8R2X9k"><field name="TEXT">Hello</field></shadow><block type="variables_get" id="3Z~UxMGoi,H_~2zrR=Y#"><field name="VAR">i</field></block></value><next><block type="variables_set" id=":{;FGV!66ijWM?)H`0Ng"><field name="VAR">i</field><value name="VALUE"><block type="math_arithmetic" id="#.yS0=:)Q7kH6!(cBhAT"><field name="OP">ADD</field><value name="A"><shadow type="math_number" id="6qXh9drcsYxQhn?LmH}-"><field name="NUM">1</field></shadow><block type="variables_get" id="OX^RR@!hWI6WBmHo(!yW"><field name="VAR">i</field></block></value><value name="B"><shadow type="math_number" id="GO*s7rfsfyuHZSJj/X#J"><field name="NUM">1</field></shadow></value></block></value></block></next></block></statement><next><block type="variables_set" id=";Wp=A_e6JN,6Q~n)Al{+"><field name="VAR">end_time</field><value name="VALUE"><block type="controls_millis" id="f4rX?-8Za^wzM{z]Zm]["></block></value><next><block type="inout_print_many" id="gspMgb!_XBa2bv4.tfqg"><mutation items="3"></mutation><value name="ADD0"><block type="text" id="VL1:^@)#5p/uy?~)!5Ag"><field name="TEXT">输出1~1000所花时间为</field></block></value><value name="ADD1"><block type="math_arithmetic" id="6g17u895anXpNw!cRX1?"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="f/aB2V-@pi{dg#n@AcwL"><field name="NUM">1</field></shadow><block type="variables_get" id="BMi?L~;a+)uvMf9vtrU("><field name="VAR">end_time</field></block></value><value name="B"><shadow type="math_number" id="s5Et5=NE;hr2]vQ5=I@R"><field name="NUM">1</field></shadow><block type="variables_get" id="GptAtR4(.sd7eUkyRTuA"><field name="VAR">start_time</field></block></value></block></value><value name="ADD2"><block type="text" id="gyh!)g3oYeYscC5lp;a`"><field name="TEXT">秒</field></block></value></block></next></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IHRpbWUKCgpzdGFydF90aW1lID0gdGltZS50aW1lKCkKaSA9IDEKd2hpbGUgaSA8PSAxMDAwOgogICAgcHJpbnQoaSkKICAgIGkgPSBpICsgMQplbmRfdGltZSA9IHRpbWUudGltZSgpCnByaW50KCfovpPlh7oxfjEwMDDmiYDoirHml7bpl7TkuLonLCBlbmRfdGltZSAtIHN0YXJ0X3RpbWUsICfnp5InKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="otn94-@p`V|Q5tU-lgN7" x="-616" y="-48"><field name="VAR">start_time</field><value name="VALUE"><block type="controls_millis" id="5/~DspnhOeb|7.ioK4e$"></block></value><next><block type="variables_set" id="$;YvKZ3?fOBgNG.fD]*N"><field name="VAR">i</field><value name="VALUE"><block type="math_number" id="E^J9^sNQ[qqF|M0ESFM5"><field name="NUM">1</field></block></value><next><block type="variables_set" id="bIrmS}.8nN~+ph!mU8uo"><field name="VAR">sum</field><value name="VALUE"><block type="math_number" id="N3Om@h47qg.Q(A[8?]TD"><field name="NUM">0</field></block></value><next><block type="controls_whileUntil" id="et`p6JUHh65srC?mA2:?"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="N=L2AbnfWIO0IC|0!Y9w"><field name="BOOL">TRUE</field></shadow><block type="logic_compare" id="#AcO=vefC2y_UpR@B7V1"><field name="OP">LTE</field><value name="A"><block type="variables_get" id="s_q#@OS/.0UkO!7QEkvo"><field name="VAR">i</field></block></value><value name="B"><block type="math_number" id="oFP.kXGh}^EiQw_w~Lt:"><field name="NUM">1000000</field></block></value></block></value><statement name="DO"><block type="variables_set" id="wy$]X_oGPrI9Kq#$2Rs3"><field name="VAR">sum</field><value name="VALUE"><block type="math_arithmetic" id="N|lDRBTyMXajVe+z:,$D"><field name="OP">ADD</field><value name="A"><shadow type="math_number" id="2ee:r;yy_X/v!+rv{y[6"><field name="NUM">1</field></shadow><block type="variables_get" id="6=1K|licE*_*d=iw,D?h"><field name="VAR">sum</field></block></value><value name="B"><shadow type="math_number" id="u]kF;Z5=$$^Vtf(Hf3c~"><field name="NUM">1</field></shadow><block type="variables_get" id="z;R7X.?s~(:uiOie,LoF"><field name="VAR">i</field></block></value></block></value><next><block type="variables_set" id="=_O}w+*siC;m^GF57pRi"><field name="VAR">i</field><value name="VALUE"><block type="math_arithmetic" id="W9MP-^!#oPoItOfg0?J@"><field name="OP">ADD</field><value name="A"><shadow type="math_number" id="2ee:r;yy_X/v!+rv{y[6"><field name="NUM">1</field></shadow><block type="variables_get" id="JwagDWCY$5,Hk{7y+etF"><field name="VAR">i</field></block></value><value name="B"><shadow type="math_number" id="y1hSPdjK;o~gt(o9mq!I"><field name="NUM">1</field></shadow></value></block></value></block></next></block></statement><next><block type="inout_print_many" id="$T/=F?mj_6xG3K{3,qF5"><mutation items="2"></mutation><value name="ADD0"><block type="text" id="oY]BS|o7.ISAg@[n6|SD"><field name="TEXT">1+2+……+1000000=</field></block></value><value name="ADD1"><block type="variables_get" id="8j_-EfMMe.XIO7@#S/e$"><field name="VAR">sum</field></block></value><next><block type="variables_set" id="qujcF)U*(^)__pZ$4I2L"><field name="VAR">end_time</field><value name="VALUE"><block type="controls_millis" id="(vuDPyuEva*rs!#o/H3v"></block></value><next><block type="inout_print_many" id="tffMhEIyj!tjXe5z3FJw"><mutation items="3"></mutation><value name="ADD0"><block type="text" id="yJk$D`)j#X$c4fa7PkPu"><field name="TEXT">累加1~1000000所花时间为</field></block></value><value name="ADD1"><block type="math_arithmetic" id="{](M4JMywR0J=;TEdXK5"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="Ti3Bqy!}fvRrgqSsrdG@"><field name="NUM">1</field></shadow><block type="variables_get" id="Cf)cAM/Ow1=k.`@z3GIt"><field name="VAR">end_time</field></block></value><value name="B"><shadow type="math_number" id="$mj|G2+)]qZnaYej;sxl"><field name="NUM">1</field></shadow><block type="variables_get" id="YBlB=ZJHPmC)VkW/`2;d"><field name="VAR">start_time</field></block></value></block></value><value name="ADD2"><block type="text" id="KIbKrh].=_$b}EygPE-E"><field name="TEXT">秒</field></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IHRpbWUKCgpzdGFydF90aW1lID0gdGltZS50aW1lKCkKaSA9IDEKc3VtMiA9IDAKd2hpbGUgaSA8PSAxMDAwMDAwOgogICAgc3VtMiA9IHN1bTIgKyBpCiAgICBpID0gaSArIDEKcHJpbnQoJzErMivigKbigKYrMTAwMDAwMD0nLCBzdW0yKQplbmRfdGltZSA9IHRpbWUudGltZSgpCnByaW50KCfntK/liqAxfjEwMDAwMDDmiYDoirHml7bpl7TkuLonLCBlbmRfdGltZSAtIHN0YXJ0X3RpbWUsICfnp5InKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="controls_forEach" id="g.^o$yehb91Ydu{l*Df0" x="-556" y="-100"><value name="LIST"><shadow type="list_many_input" id="*C;J=n[@-$3eDRQi#SWL"><field name="CONTENT">'welcome','to','our','world'</field></shadow></value><value name="VAR"><shadow type="variables_get" id="Mj_Q7o{i(cV*/]OAhg/x"><field name="VAR">str</field></shadow></value><statement name="DO"><block type="inout_print_inline" id="KS$uc96C~@PJT5V}o(*["><value name="VAR"><shadow type="text" id="]48MAi43,@1#am}UkwkN"><field name="TEXT">Hello</field></shadow><block type="variables_get" id="^kWHla!,N_~3xqGAL}:n"><field name="VAR">str</field></block></value></block></statement></block></xml><config>{}</config><code>Zm9yIHN0cjIgaW4gWyd3ZWxjb21lJywndG8nLCdvdXInLCd3b3JsZCddOgogICAgcHJpbnQoc3RyMixlbmQgPSIiKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="bIrmS}.8nN~+ph!mU8uo" x="-586" y="-104"><field name="VAR">n</field><value name="VALUE"><block type="math_number" id="N3Om@h47qg.Q(A[8?]TD"><field name="NUM">101</field></block></value><next><block type="controls_whileUntil" id="et`p6JUHh65srC?mA2:?"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="N=L2AbnfWIO0IC|0!Y9w"><field name="BOOL">TRUE</field></shadow><block type="logic_compare" id="#AcO=vefC2y_UpR@B7V1"><field name="OP">LTE</field><value name="A"><block type="variables_get" id="s_q#@OS/.0UkO!7QEkvo"><field name="VAR">n</field></block></value><value name="B"><block type="math_number" id="oFP.kXGh}^EiQw_w~Lt:"><field name="NUM">200</field></block></value></block></value><statement name="DO"><block type="controls_if" id="kJH|iQ$j):3O7.H/L+@r"><value name="IF0"><block type="logic_operation" id="==L,KsdwOLbm!v{Rx*z;"><field name="OP">AND</field><value name="A"><block type="logic_compare" id="l7[Z88)EnF!G_u`sQUo3"><field name="OP">EQ</field><value name="A"><block type="math_arithmetic" id="#lSaoU1idZ:kPz^?e0OP"><field name="OP">QUYU</field><value name="A"><shadow type="math_number" id="F+1a/0iwFz]]st;ZKR3D"><field name="NUM">1</field></shadow><block type="variables_get" id="w@q!bb]|67MGH/I=!jjj"><field name="VAR">n</field></block></value><value name="B"><shadow type="math_number" id="]Ri=Bk[D`8S!DPbWPObl"><field name="NUM">5</field></shadow></value></block></value><value name="B"><block type="math_number" id="iv$1QAeS6)zR^w=c,Yw5"><field name="NUM">3</field></block></value></block></value><value name="B"><block type="logic_compare" id="qE8c?-RxQ;13}62CB1N/"><field name="OP">EQ</field><value name="A"><block type="math_arithmetic" id="S}a2-:lNI{yaN/u;+F9`"><field name="OP">QUYU</field><value name="A"><shadow type="math_number" id="F+1a/0iwFz]]st;ZKR3D"><field name="NUM">1</field></shadow><block type="variables_get" id=":2=5h@?Qe!EfMV`HU]8:"><field name="VAR">n</field></block></value><value name="B"><shadow type="math_number" id="#EQRVj_AOSn_liU#h0F*"><field name="NUM">7</field></shadow></value></block></value><value name="B"><block type="math_number" id="oDOmDrmG$jyy$65Tp?^."><field name="NUM">2</field></block></value></block></value></block></value><statement name="DO0"><block type="inout_print_many" id="$T/=F?mj_6xG3K{3,qF5"><mutation items="2"></mutation><value name="ADD0"><block type="text" id="oY]BS|o7.ISAg@[n6|SD"><field name="TEXT">符合条件的玩具数量:</field></block></value><value name="ADD1"><block type="variables_get" id="8j_-EfMMe.XIO7@#S/e$"><field name="VAR">n</field></block></value></block></statement><next><block type="variables_set" id="di_gpeJ{QaBIct:Th-UV"><field name="VAR">n</field><value name="VALUE"><block type="math_arithmetic" id="KSLc-[BBepl*J5YF1.;B"><field name="OP">ADD</field><value name="A"><shadow type="math_number" id="hEJbkT{RW#=rp3=xQUyH"><field name="NUM">1</field></shadow><block type="variables_get" id="-HUQJ;}/-UpGK|e9v#t)"><field name="VAR">n</field></block></value><value name="B"><shadow type="math_number" id="f/w5b4DALPuVu@`(z=D_"><field name="NUM">3</field></shadow></value></block></value></block></next></block></statement></block></next></block></xml><config>{}</config><code>biA9IDEwMQp3aGlsZSBuIDw9IDIwMDoKICAgIGlmIG4gJSA1ID09IDMgYW5kIG4gJSA3ID09IDI6CiAgICAgICAgcHJpbnQoJ+espuWQiOadoeS7tueahOeOqeWFt+aVsOmHj++8micsIG4pCiAgICBuID0gbiArIDMK</code>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="-R?$,g?yY$eWQQ1yvnIw" x="-487" y="-84"><field name="VAR">height</field><value name="VALUE"><block type="inout_type_input" id="5Q.H$;P/hkT~(RO8)0}="><field name="DIR">float</field><value name="VAR"><shadow type="text" id=")bt[ALwgSd2(F;pH4T3s"><field name="TEXT">请输入您的身高(米):</field></shadow></value></block></value><next><block type="controls_if" id="2p0@;6}`HRfsK0@4RoHB"><mutation else="1"></mutation><value name="IF0"><block type="logic_compare" id="TPdZ$XVif=,])!LX}T5Q"><field name="OP">LT</field><value name="A"><block type="variables_get" id="^.-!rzU{YCc|hc$yT6]="><field name="VAR">height</field></block></value><value name="B"><block type="math_number" id="$W1q#gi]F[9Y=|*Lh^rN"><field name="NUM">1.2</field></block></value></block></value><statement name="DO0"><block type="inout_print_many" id="w5:=X8qq{^CzA]{BabV@"><mutation items="3"></mutation><value name="ADD0"><block type="text" id="TQmMZn~$APFYv?|o0mkX"><field name="TEXT">您的身高为:</field></block></value><value name="ADD1"><block type="variables_get" id="dO04_XE?P9.K=mSQ2:R:"><field name="VAR">height</field></block></value><value name="ADD2"><block type="text" id="2wmCck-jR69sr^:U`]fq"><field name="TEXT">米,免票</field></block></value></block></statement><statement name="ELSE"><block type="inout_print_many" id="}A!d0HXuvJq(P1~@^i,*"><mutation items="3"></mutation><value name="ADD0"><block type="text" id="dA89V.Jh4PYDKy5)/87-"><field name="TEXT">您的身高为:</field></block></value><value name="ADD1"><block type="variables_get" id="RR=h_hWa(tsxbSiHn4.t"><field name="VAR">height</field></block></value><value name="ADD2"><block type="text" id="mrlx/Q*DPtgKG-e{DvUG"><field name="TEXT">米,可以购买半价票</field></block></value></block></statement></block></next></block></xml><config>{}</config><code>aGVpZ2h0ID0gZmxvYXQoaW5wdXQoJ+ivt+i+k+WFpeaCqOeahOi6q+mrmO+8iOexs++8ie+8micpKQppZiBoZWlnaHQgPCAxLjI6CiAgICBwcmludCgn5oKo55qE6Lqr6auY5Li677yaJywgaGVpZ2h0LCAn57Gz77yM5YWN56WoJykKZWxzZToKICAgIHByaW50KCfmgqjnmoTouqvpq5jkuLrvvJonLCBoZWlnaHQsICfnsbPvvIzlj6/ku6XotK3kubDljYrku7fnpagnKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="-R?$,g?yY$eWQQ1yvnIw" x="-487" y="-84"><field name="VAR">a</field><value name="VALUE"><block type="inout_type_input" id="5Q.H$;P/hkT~(RO8)0}="><field name="DIR">int</field><value name="VAR"><shadow type="text" id=")bt[ALwgSd2(F;pH4T3s"><field name="TEXT">输入科普书的册数:</field></shadow></value></block></value><next><block type="variables_set" id=".g3B,yUItf.G]0!4:U+q"><field name="VAR">h</field><value name="VALUE"><block type="math_arithmetic" id="SMPJJDofE7CKv)VmD?#-"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="wv+?nIV(ItVfy}l`z2P{"><field name="NUM">1</field></shadow><block type="variables_get" id="!;a|Gqjewb$;{}eQrLJx"><field name="VAR">a</field></block></value><value name="B"><shadow type="math_number" id="K{[cbcv@tY@{R(iH5#r9"><field name="NUM">8</field></shadow></value></block></value><next><block type="variables_set" id="Q)xOk|QtppLdF!wN72DA"><field name="VAR">b</field><value name="VALUE"><block type="inout_type_input" id="]Z8m0T`@aHyr=0*P+cy*"><field name="DIR">int</field><value name="VAR"><shadow type="text" id="q5Q=*LWxH5)ju^xTu4C@"><field name="TEXT">输入故事书的册数:</field></shadow></value></block></value><next><block type="variables_set" id="?J-EjJzOzBuOB*VrTusw"><field name="VAR">j</field><value name="VALUE"><block type="math_arithmetic" id="r+UsPw-?_zKDilI}ATEh"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="wv+?nIV(ItVfy}l`z2P{"><field name="NUM">1</field></shadow><block type="variables_get" id="`}XIHOCwZA8BlUZI1e,j"><field name="VAR">b</field></block></value><value name="B"><shadow type="math_number" id="HtG=t?R`ADWJW~iS7?k."><field name="NUM">9</field></shadow></value></block></value><next><block type="variables_set" id="]`Zu[mpG!#,UpvdOervZ"><field name="VAR">s</field><value name="VALUE"><block type="math_arithmetic" id="~5=8S4AamDLQZN/-**Jq"><field name="OP">ADD</field><value name="A"><shadow type="math_number" id="wv+?nIV(ItVfy}l`z2P{"><field name="NUM">1</field></shadow><block type="variables_get" id="pc}|]h7z*Au-xTB~Ljl~"><field name="VAR">h</field></block></value><value name="B"><shadow type="math_number" id="f$o^=`[uJN*ht;8`:cu^"><field name="NUM">9</field></shadow><block type="variables_get" id="}$|`C1GIxE{]RGKQTR;j"><field name="VAR">j</field></block></value></block></value><next><block type="inout_print_many" id="w5:=X8qq{^CzA]{BabV@"><mutation items="2"></mutation><value name="ADD0"><block type="text" id="TQmMZn~$APFYv?|o0mkX"><field name="TEXT">购书费用是:</field></block></value><value name="ADD1"><block type="variables_get" id="QOB{2E_rxhB)2:kQSS(u"><field name="VAR">s</field></block></value></block></next></block></next></block></next></block></next></block></next></block></xml><config>{}</config><code>YSA9IGludChpbnB1dCgn6L6T5YWl56eR5pmu5Lmm55qE5YaM5pWw77yaJykpCmggPSBhICogOApiID0gaW50KGlucHV0KCfovpPlhaXmlYXkuovkuabnmoTlhozmlbDvvJonKSkKaiA9IGIgKiA5CnMgPSBoICsgagpwcmludCgn6LSt5Lmm6LS555So5piv77yaJywgcykK</code>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="lP5vcAMqmIb=b0upxF)?" x="-802" y="-135"><field name="VAR">num</field><value name="VALUE"><block type="list_many_input" id="-rn_Ue:1:1Wy5;_mo]Lc"><field name="CONTENT">17,19,15,20,19</field></block></value><next><block type="variables_set" id=":8@XmhJ0Yv2}B9]tpiEC"><field name="VAR">cc</field><value name="VALUE"><block type="list_trig" id="]2?bx5k~z9_9~S@N2W]L"><field name="OP">LEN</field><value name="data"><shadow type="variables_get" id="T(+3q3TN4fy![JVGi54S"><field name="VAR">num</field></shadow></value></block></value><next><block type="variables_set" id="gLZ*+E:E#T5M`n$hE7X-"><field name="VAR">a</field><value name="VALUE"><block type="lists_get_index" id="?:Cf0?2,{TKma#b{r-wm"><value name="LIST"><shadow type="variables_get" id="x3PW$9.4BG~w4Wblq2@|"><field name="VAR">num</field></shadow></value><value name="AT"><shadow type="math_number" id="8}6=E`QB~kx8@2+p,l0j"><field name="NUM">0</field></shadow></value></block></value><next><block type="variables_set" id="]qALM6PMq{R!-;:.!!uD"><field name="VAR">i</field><value name="VALUE"><block type="math_number" id="V+RZ5bKIL`+/.ruSnnt!"><field name="NUM">1</field></block></value><next><block type="controls_whileUntil" id=")ShbCY*kzHTK?ac.eT*v"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id=".T|+-NhOeT[LI#K+rSwj"><field name="BOOL">TRUE</field></shadow><block type="logic_compare" id="vYEtzl9{U-)kLI_;y:.o"><field name="OP">LT</field><value name="A"><block type="variables_get" id=";6*XGo]dFWQHQC+ok{ME"><field name="VAR">i</field></block></value><value name="B"><block type="variables_get" id="h:2/W-+TmmXMrod8evGe"><field name="VAR">cc</field></block></value></block></value><statement name="DO"><block type="controls_if" id=";l*gN2ns9gb#{xMCu`Pe"><value name="IF0"><block type="logic_compare" id="YdG2$4_w(P`TSn=XUQBA"><field name="OP">GT</field><value name="A"><block type="lists_get_index" id="P#s5wu;Px/NX_.~A`:iD"><value name="LIST"><shadow type="variables_get" id="b7^c]DtF1Pd/hyJTHO.9"><field name="VAR">num</field></shadow></value><value name="AT"><shadow type="math_number" id="]Gy*.C=87UXi]doDV!`^"><field name="NUM">0</field></shadow><block type="variables_get" id="8fow#.Jy7o`g5nJ,Dhu5"><field name="VAR">i</field></block></value></block></value><value name="B"><block type="variables_get" id="oN4rOpP^krHV-(HhT)wR"><field name="VAR">a</field></block></value></block></value><statement name="DO0"><block type="variables_set" id="xd,4={8bmbM+;m[FaoIT"><field name="VAR">a</field><value name="VALUE"><block type="lists_get_index" id="ihF|[,wIE/x$76}R/A^|"><value name="LIST"><shadow type="variables_get" id="C)g8G3qUxW4fST@c[c:$"><field name="VAR">num</field></shadow></value><value name="AT"><shadow type="math_number" id="s*Q8[xXJ,cgO5Y;$!(ZM"><field name="NUM">0</field></shadow><block type="variables_get" id="+*^]JaH06iPv~E*348$J"><field name="VAR">i</field></block></value></block></value></block></statement><next><block type="variables_set" id="5.r[iD52~kuj+KSTV0g5"><field name="VAR">i</field><value name="VALUE"><block type="math_arithmetic" id=";[TG.@X_)fRw4j/7+-le"><field name="OP">ADD</field><value name="A"><shadow type="math_number" id="fdAf!6P@PNU92@[/s):W"><field name="NUM">1</field></shadow><block type="variables_get" id="sk,e/suTr(Zjektv8X0X"><field name="VAR">i</field></block></value><value name="B"><shadow type="math_number" id="2@E5SX;(/b[Y,XW$_G^e"><field name="NUM">1</field></shadow></value></block></value></block></next></block></statement><next><block type="inout_print_many" id="{y3Nrgd?AHHNT5vmq_RL"><mutation items="2"></mutation><value name="ADD0"><block type="text" id="Dv$mZJ@4hk92=E61TMl["><field name="TEXT">最大数为</field></block></value><value name="ADD1"><block type="variables_get" id="VZGIZ9F#r/yd`Yy[iQ=W"><field name="VAR">a</field></block></value></block></next></block></next></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IG1hdGgKCgpudW0gPSBbMTcsMTksMTUsMjAsMTldCmNjID0gbGVuKG51bSkKYSA9IG51bVswXQppID0gMQp3aGlsZSBpIDwgY2M6CiAgICBpZiBudW1baV0gPiBhOgogICAgICAgIGEgPSBudW1baV0KICAgIGkgPSBpICsgMQpwcmludCgn5pyA5aSn5pWw5Li6JywgYSkK</code>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="R(w+..bO#^[eX4iLdlf^" x="-276" y="-193"><field name="VAR">a</field><value name="VALUE"><block type="inout_type_input" id="?xD~vs+h{BU0|O0my2HZ"><field name="DIR">int</field><value name="VAR"><shadow type="text" id="3b4hG/(1yKd+EAGfX*dM"><field name="TEXT">一共有多少个头:</field></shadow></value></block></value><next><block type="variables_set" id="3C?ek~+}ksUCbib~hL|p"><field name="VAR">b</field><value name="VALUE"><block type="inout_type_input" id=".urRE)FG~kjU7*]yDNMZ"><field name="DIR">int</field><value name="VAR"><shadow type="text" id="*gE``8#;_aZm2vyONNg["><field name="TEXT">一共有多少只脚:</field></shadow></value></block></value><next><block type="variables_set" id="T=4]I+^@G0!XW|v}Df$x"><field name="VAR">c</field><value name="VALUE"><block type="math_arithmetic" id="dOn|1$EX,wI$Y^+K/_Xw"><field name="OP">DIVIDE</field><value name="A"><shadow type="math_number" id="NXtm3;_Dsfhm{Drpo)MH"><field name="NUM">1</field></shadow><block type="math_arithmetic" id="I2tM;xAwtnFAde|am2fU"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="kK^xF#9{HVK#9Y_@81Ho"><field name="NUM">1</field></shadow><block type="math_arithmetic" id="t4IRnlOP75yjGW50y;|)"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="oWmvw^J@w0E.K_N@Ky[x"><field name="NUM">1</field></shadow><block type="variables_get" id="ru~!dky~lvkiX13TK_P6"><field name="VAR">a</field></block></value><value name="B"><shadow type="math_number" id="sMIw+oK~_A`1F7;vuEI7"><field name="NUM">4</field></shadow></value></block></value><value name="B"><shadow type="math_number" id="C9U;dREUHb1@hwOPOszq"><field name="NUM">1</field></shadow><block type="variables_get" id="KuVITTfD-5?^ExP4(xYA"><field name="VAR">b</field></block></value></block></value><value name="B"><shadow type="math_number" id="PjNqZv3TL}`$5p[xZ;DK"><field name="NUM">2</field></shadow></value></block></value><next><block type="inout_print_many" id=".Noj;poL*3ZlbAzd6wnb"><mutation items="3"></mutation><value name="ADD0"><block type="text" id="QdKak}y2nxCcu-o$}=|;"><field name="TEXT">鸡有:</field></block></value><value name="ADD1"><block type="text_to_number" id="sHV=wH;7.F{!nA|,[=s,"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id="T-RuoI_U|i=`-U^-Cb-["><field name="VAR">x</field></shadow><block type="variables_get" id="@2tK=[c9S~_rA?tFz=Qr"><field name="VAR">c</field></block></value></block></value><value name="ADD2"><block type="text" id="u)M7gK7qy^{XOpMeYA!G"><field name="TEXT">只</field></block></value><next><block type="inout_print_many" id="2{=?,+8TN4Ibzn#`zW2i"><mutation items="3"></mutation><value name="ADD0"><block type="text" id="2Y06PUp*2Ht6C[n)$XZ}"><field name="TEXT">兔有:</field></block></value><value name="ADD1"><block type="text_to_number" id="4(vMJx~G*F=ZQ.L$+qRg"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id="T-RuoI_U|i=`-U^-Cb-["><field name="VAR">x</field></shadow><block type="math_arithmetic" id="b+PHw+as*=`ik@ph:8Mo"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="oWmvw^J@w0E.K_N@Ky[x"><field name="NUM">1</field></shadow><block type="variables_get" id="K=kSHX.58Nb`N)v@r}+G"><field name="VAR">a</field></block></value><value name="B"><shadow type="math_number" id="?nW9)/{jjZlnx1w}I?bv"><field name="NUM">4</field></shadow><block type="variables_get" id="P^mA)$0Bt~fo!0vOwXT^"><field name="VAR">c</field></block></value></block></value></block></value><value name="ADD2"><block type="text" id="_}Do?f/GfJ.pIIss3cSz"><field name="TEXT">只</field></block></value></block></next></block></next></block></next></block></next></block></xml><config>{}</config><code>YSA9IGludChpbnB1dCgn5LiA5YWx5pyJ5aSa5bCR5Liq5aS077yaJykpCmIgPSBpbnQoaW5wdXQoJ+S4gOWFseacieWkmuWwkeWPquiEmu+8micpKQpjID0gKGEgKiA0IC0gYikgLyAyCnByaW50KCfpuKHmnInvvJonLCBpbnQoYyksICflj6onKQpwcmludCgn5YWU5pyJ77yaJywgaW50KChhIC0gYykpLCAn5Y+qJykK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="FeJO!Dy)XaIKt^^ZU@6u" x="-607" y="-102"><field name="VAR">a</field><value name="VALUE"><block type="math_number" id="tzebmD6G)d~r6!zOL5yN"><field name="NUM">35</field></block></value><next><block type="variables_set" id="2bo@A/H(U![@k8EYzp0J"><field name="VAR">b</field><value name="VALUE"><block type="math_number" id="[`UuPYFSw!nzdtjI]X]["><field name="NUM">0</field></block></value><next><block type="controls_whileUntil" id="{Ul{qo=^Y}4b;rc1rGe]"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="DX_??^ib}6ca!ZWGeDt("><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="ftWbIO]xI!xzy=1FdUbD"><field name="VAR">c</field><value name="VALUE"><block type="math_arithmetic" id="7;]K+adhsP4_;B:?]=vW"><field name="OP">ADD</field><value name="A"><shadow type="math_number" id="U5u8^/cERyr;JCQcKjE@"><field name="NUM">1</field></shadow><block type="math_arithmetic" id="}D+^zN|NmIcD9V=Pg-vR"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="k5clc4Endnr1DsOu9te^"><field name="NUM">1</field></shadow><block type="variables_get" id=":.Sb2d5eH$q_[,WgRN@j"><field name="VAR">a</field></block></value><value name="B"><shadow type="math_number" id="9Lt|]Zr5W8(,GVb2RfKi"><field name="NUM">2</field></shadow></value></block></value><value name="B"><shadow type="math_number" id="rjtPurzun,$5KyVQC]J="><field name="NUM">1</field></shadow><block type="math_arithmetic" id="iZ:!,xjeA?-/Y.NO#TQh"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="k5clc4Endnr1DsOu9te^"><field name="NUM">1</field></shadow><block type="variables_get" id="!J`RYL@K9`QdmGkQg4dC"><field name="VAR">b</field></block></value><value name="B"><shadow type="math_number" id="OuaK@8NC.MM)XRWKxaQZ"><field name="NUM">4</field></shadow></value></block></value></block></value><next><block type="controls_if" id="kHyoU~Qu_79J2-+IAj^z"><mutation else="1"></mutation><value name="IF0"><block type="logic_compare" id="IWp}}WN#~3lWDn:(eo9s"><field name="OP">EQ</field><value name="A"><block type="variables_get" id="UmaZYX9Fo3pH!*qGkJ5|"><field name="VAR">c</field></block></value><value name="B"><block type="math_number" id="jn^lSiP8_qS8F4*|c*`y"><field name="NUM">94</field></block></value></block></value><statement name="DO0"><block type="inout_print_many" id="GeJ6z~~Qie|m;LjQT|lq"><mutation items="2"></mutation><value name="ADD0"><block type="text" id="9s6-6O;|+1(1~+lqRmFX"><field name="TEXT">鸡的数量:</field></block></value><value name="ADD1"><block type="variables_get" id="0B*GLD4.us4Bn/R[f}hC"><field name="VAR">a</field></block></value><next><block type="inout_print_many" id="kqDa$mw8[uedADFP!MyK"><mutation items="2"></mutation><value name="ADD0"><block type="text" id="C!|?_-]GT,c7*!mzT:|?"><field name="TEXT">兔的数量:</field></block></value><value name="ADD1"><block type="variables_get" id="Z9T9Q36{5kt=x7H1y[t$"><field name="VAR">b</field></block></value><next><block type="controls_flow_statements" id="/ES$/7enByM@?7BgRBEp"><field name="FLOW">BREAK</field></block></next></block></next></block></statement><statement name="ELSE"><block type="variables_set" id=":o81MdCzs=tX,Y`cJXRY"><field name="VAR">a</field><value name="VALUE"><block type="math_arithmetic" id="OF]!roH4Qr=|DGjv@ZA8"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="f:G`BJFLWcM#WMvGN=+Y"><field name="NUM">1</field></shadow><block type="variables_get" id="Og)fn6$x~*e6,}L8X,+f"><field name="VAR">a</field></block></value><value name="B"><shadow type="math_number" id="w~/Zz6:oTZEV89NO#j3?"><field name="NUM">1</field></shadow></value></block></value><next><block type="variables_set" id="5JwK#W.zFHRzAc=!3![R"><field name="VAR">b</field><value name="VALUE"><block type="math_arithmetic" id="?k?qHuzfaJ~UVQb9OI4("><field name="OP">ADD</field><value name="A"><shadow type="math_number" id="f:G`BJFLWcM#WMvGN=+Y"><field name="NUM">1</field></shadow><block type="variables_get" id="V~pN3FSueI^dx6-R.+YD"><field name="VAR">b</field></block></value><value name="B"><shadow type="math_number" id="RQ(/P2beFE29$ww)-EfY"><field name="NUM">1</field></shadow></value></block></value></block></next></block></statement></block></next></block></statement></block></next></block></next></block></xml><config>{}</config><code>YSA9IDM1CmIgPSAwCndoaWxlIFRydWU6CiAgICBjID0gYSAqIDIgKyBiICogNAogICAgaWYgYyA9PSA5NDoKICAgICAgICBwcmludCgn6bih55qE5pWw6YeP77yaJywgYSkKICAgICAgICBwcmludCgn5YWU55qE5pWw6YeP77yaJywgYikKICAgICAgICBicmVhawogICAgZWxzZToKICAgICAgICBhID0gYSAtIDEKICAgICAgICBiID0gYiArIDEK</code>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="Uj7N{E8utG]O(A|`RlA|" x="-57" y="-34"><field name="VAR">reponse</field><value name="VALUE"><block type="requests_get" id="AY@5/6.i9eO_$),7jHZP"><field name="TYPE">get</field><value name="URL"><shadow type="text" id="/(nd=bIa_}=I#bf5gSo^"><field name="TEXT">https://mixio.org/api/v1/getData?user=demo@mixly.org&password=b81e53f441d90152cdfb9731c5db92da&project=通用演示&topic=光照强度&num=10</field></shadow></value></block></value><next><block type="inout_print" id="^bH~^+44W]A~mYA8vt^m"><value name="VAR"><shadow type="text" id="4^l#tRVBLd.$fR@i/wFm"><field name="TEXT">Hello</field></shadow><block type="requests_attribute" id="VT2G2A]I^~cSy+.[|$]["><field name="ATTR">text</field><value name="VAL"><shadow type="variables_get" id="1f|]:LreFY~sxEvOmr/c"><field name="VAR">reponse</field></shadow></value></block></value><next><block type="variables_set" id="AP$I{V,(*lEW~8tt/v.c"><field name="VAR">mydict</field><value name="VALUE"><block type="json_to_dicts" id="(AR?Xq1k+3DoSYcm8P!-"><value name="VAR"><shadow type="text" id="yGR:rq5K]@nMRZefsC=N"><field name="TEXT">{"name":"Mixly","color":"green"}</field></shadow><block type="requests_attribute" id="h;3MqdU2$K||-ebx$yR2"><field name="ATTR">text</field><value name="VAL"><shadow type="variables_get" id="))xyD2:YO4,I`K{oP^XL"><field name="VAR">reponse</field></shadow></value></block></value></block></value><next><block type="controls_forEach" id="@~`1Rx5vGt;crq1__qwO"><value name="LIST"><shadow type="list_many_input" id="{~$J}dFQ0jFm]}3_iG@o"><field name="CONTENT">0,1,2,3</field></shadow><block type="dicts_get" id="N1T{U!qI`!3AX{R;Jx(P"><value name="DICT"><shadow type="variables_get" id="P]hQ99xWHj}#*e4L$Pbf"><field name="VAR">mydict</field></shadow></value><value name="KEY"><shadow type="text" id="e;E-}7#HcHycoDc2g@8y"><field name="TEXT">data</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id="(t49;3b}0DVe=k$4XhQP"><field name="VAR">i</field></shadow></value><statement name="DO"><block type="inout_print" id="hqr[q]K3r+)r5@@qGK58"><value name="VAR"><shadow type="text" id="gBrW8Tm;{LWl~6b1JCIU"><field name="TEXT">Hello</field></shadow><block type="variables_get" id="}ix3c[kmJv;;I5g3U]f."><field name="VAR">i</field></block></value></block></statement></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IHJlcXVlc3RzCmltcG9ydCBqc29uCgoKcmVwb25zZSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9taXhpby5vcmcvYXBpL3YxL2dldERhdGE/dXNlcj1kZW1vQG1peGx5Lm9yZyZwYXNzd29yZD1iODFlNTNmNDQxZDkwMTUyY2RmYjk3MzFjNWRiOTJkYSZwcm9qZWN0PemAmueUqOa8lOekuiZ0b3BpYz3lhYnnhaflvLrluqYmbnVtPTEwJykKcHJpbnQocmVwb25zZS50ZXh0KQpteWRpY3QgPSBqc29uLmxvYWRzKHJlcG9uc2UudGV4dCkKZm9yIGkgaW4gbXlkaWN0WydkYXRhJ106CiAgICBwcmludChpKQo=</code>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="eeBXC/Kc;2!|ymIKY#iQ" x="-433" y="-257"><field name="VAR">reponse</field><value name="VALUE"><block type="requests_get" id="R:dR9C?ZhuVQt-r/pGNu"><field name="TYPE">get</field><value name="URL"><shadow type="text" id="oruIrG8SGZI,TCQlF!t2"><field name="TEXT">https://mixio.org/api/v1/getData?user=demo@mixly.org&password=b81e53f441d90152cdfb9731c5db92da&project=通用演示&topic=光照强度&num=10</field></shadow></value></block></value><next><block type="variables_set" id="R:bVzds6allxC;|8{3]]"><field name="VAR">t</field><value name="VALUE"><block type="requests_attribute" id="xk1Y@P(wONj/vhYE@EP@"><field name="ATTR">text</field><value name="VAL"><shadow type="variables_get" id="GX!PN]jdjcyvwbTpWp|Q"><field name="VAR">reponse</field></shadow></value></block></value><next><block type="inout_print" id="Uuo{Ghlu]m_n7~rjMSb:"><value name="VAR"><shadow type="text" id="YgZOBZ0jMR!m(JYS=x2d"><field name="TEXT">Hello</field></shadow><block type="variables_get" id="Br4=s*ZcLj5a=ie(3A,U"><field name="VAR">t</field></block></value><next><block type="variables_set" id="ts8wFPpd3a,00KyDcGov"><field name="VAR">mydict</field><value name="VALUE"><block type="json_to_dicts" id="^K`7;Tl;#~Iqo:wh57kt"><value name="VAR"><shadow type="text" id="pn.Rlz9;f6J],gWuLI-D"><field name="TEXT">{"name":"Mixly","color":"green"}</field></shadow><block type="variables_get" id="y/YeFEx-E!d3MXwe.i-Z"><field name="VAR">t</field></block></value></block></value><next><block type="variables_set" id="v,s(@GdNM:Bv@qj*K7mN"><field name="VAR">mylist</field><value name="VALUE"><block type="list_tolist" id="^Y2l9Y-/EH~FkcA_[=U-"><value name="VAR"><shadow type="variables_get" id="|0L=+qcPPB(kPuC~{23{"><field name="VAR">x</field></shadow><block type="dicts_get" id="Pm9k6{G_ryhRWIIP)DFh"><value name="DICT"><shadow type="variables_get" id="Gj^g:7O|6W+)Uc|c0{o7"><field name="VAR">mydict</field></shadow></value><value name="KEY"><shadow type="text" id="$yuTjF3zAV[}vv|1z+my"><field name="TEXT">data</field></shadow></value></block></value></block></value><next><block type="plot_cla" id="pN``M)#qQ{[{G$kkFo7L"><next><block type="dataframe_create" id="Nr^i*XJzb]qgd@Q[QhaF"><field name="VAR">df1</field><value name="SER"><shadow type="variables_get" id="@2t|Wze@|nAUX7(;c2Cs"><field name="VAR">mylist</field></shadow></value><next><block type="pl_label" id="{cV!p)fE`ZG4G2X=68A{"><field name="DIR">x</field><value name="LABEL"><shadow type="text" id="(R,m+HR*fT{a+pIm)0@h"><field name="TEXT">time</field></shadow></value><next><block type="pl_label" id="E8.AE3.9{FAgpz,DH~,w"><field name="DIR">y</field><value name="LABEL"><shadow type="text" id="ys`_F/s#|@7H7DUGf7qb"><field name="TEXT">light</field></shadow></value><next><block type="pl_plot_bar" id="+va1l]AA`xkuOY;r0Z.h"><field name="DIR">plot</field><value name="A"><shadow type="list_many_input" id="GjLnGM//B1[{NY0zGxK7"><field name="CONTENT">1,2,3,4</field></shadow><block type="dicts_get" id="Yb!`lz?$+_`K@M5)?==4"><value name="DICT"><shadow type="variables_get" id="f#JVr7hJf1DtImZ0Ugrt"><field name="VAR">df1</field></shadow></value><value name="KEY"><shadow type="text" id="w_/spu~@/bS3dZxtj3b?"><field name="TEXT">时间</field></shadow></value></block></value><value name="B"><shadow type="list_many_input" id="/9!1ea`sf]mqZ.4oW8?b"><field name="CONTENT">5,6,7,8</field></shadow><block type="dicts_get" id="F;:T|PW{6NS+aIOva583"><value name="DICT"><shadow type="variables_get" id="hn-;3{pj|N!26DU(7HHB"><field name="VAR">df1</field></shadow></value><value name="KEY"><shadow type="text" id="dM.;J7.B@TeBc:.NU6Bq"><field name="TEXT">值</field></shadow></value></block></value><next><block type="pl_show" id="k~M507@7^!(,?x5ZG?n7"></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IHJlcXVlc3RzCmltcG9ydCBqc29uCmltcG9ydCBtYXRwbG90bGliLnB5cGxvdCBhcyBwbHQKaW1wb3J0IHBhbmRhcwppbXBvcnQgcHlsYWIKCgpyZXBvbnNlID0gcmVxdWVzdHMuZ2V0KCdodHRwczovL21peGlvLm9yZy9hcGkvdjEvZ2V0RGF0YT91c2VyPWRlbW9AbWl4bHkub3JnJnBhc3N3b3JkPWI4MWU1M2Y0NDFkOTAxNTJjZGZiOTczMWM1ZGI5MmRhJnByb2plY3Q96YCa55So5ryU56S6JnRvcGljPeWFieeFp+W8uuW6piZudW09MTAnKQp0ID0gcmVwb25zZS50ZXh0CnByaW50KHQpCm15ZGljdCA9IGpzb24ubG9hZHModCkKbXlsaXN0ID0gbGlzdChteWRpY3RbJ2RhdGEnXSkKcGx0LmNsYSgpCmRmMSA9IHBhbmRhcy5EYXRhRnJhbWUobXlsaXN0KQpweWxhYi54bGFiZWwoJ3RpbWUnLCBmb250cHJvcGVydGllcyA9ICJTVFNvbmciKQpweWxhYi55bGFiZWwoJ2xpZ2h0JywgZm9udHByb3BlcnRpZXMgPSAiU1RTb25nIikKcHlsYWIucGxvdChkZjFbJ+aXtumXtCddLGRmMVsn5YC8J10pCnB5bGFiLnNob3coKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="8-Xj($b:O?i/wEp`4C=1" x="-224" y="-349"><field name="VAR">reponse</field><value name="VALUE"><block type="requests_get" id="qLoYf6*cLzrle)y@?i/o"><field name="TYPE">get</field><value name="URL"><shadow type="text" id="gIv#qc9UI@I{]_3g@eK^"><field name="TEXT">https://mixio.org/api/v1/getData?user=demo@mixly.org&password=b81e53f441d90152cdfb9731c5db92da&project=%E9%80%9A%E7%94%A8%E6%BC%94%E7%A4%BA&topic=%E5%AD%A6%E7%94%9F%E4%BF%A1%E6%81%AF&num=10</field></shadow></value></block></value><next><block type="inout_print" id="A2ZOYjuOu[YO+Ts*g*gZ"><value name="VAR"><shadow type="text" id="ym-v/7adnOVdmmwe,DN8"><field name="TEXT">Hello</field></shadow><block type="requests_attribute" id="96h,Y-e}^b2W;xK4i|L:"><field name="ATTR">text</field><value name="VAL"><shadow type="variables_get" id="AdtR]W3v/iOCypzNVOSj"><field name="VAR">reponse</field></shadow></value></block></value><next><block type="variables_set" id="Ot^}7(YkgD_{31PSf3Us"><field name="VAR">mydict</field><value name="VALUE"><block type="json_to_dicts" id="aZe$eMg}a|ZC?f0$+,P;"><value name="VAR"><shadow type="text" id="w;}+z}IHx:f8^U^f^m`3"><field name="TEXT">{"name":"Mixly","color":"green"}</field></shadow><block type="requests_attribute" id="|[{p;twQDu!sVKE]|-]_"><field name="ATTR">text</field><value name="VAL"><shadow type="variables_get" id="l{+#9MhLb+G(FFSR`{qd"><field name="VAR">reponse</field></shadow></value></block></value></block></value><next><block type="variables_set" id="#.M275@COQ=m)C5Z,@DT"><field name="VAR">mylist</field><value name="VALUE"><block type="dicts_get" id="rAczq-[$/h08{-hSJ-kA"><value name="DICT"><shadow type="variables_get" id="^a/wGEysX_Yvr!*IGfo)"><field name="VAR">mydict</field></shadow></value><value name="KEY"><shadow type="text" id="j1pjHyArhuOJTY}T]4Y*"><field name="TEXT">data</field></shadow></value></block></value><next><block type="controls_forEach" id="#L2-2Ey~Wz16D**c5uop"><value name="LIST"><shadow type="list_many_input" id="LmQFE(}N3Ajf)$PAUQw1"><field name="CONTENT">0,1,2,3</field></shadow><block type="variables_get" id="!kK4xJe1O~[#P^ZIy!me"><field name="VAR">mylist</field></block></value><value name="VAR"><shadow type="variables_get" id="]9~;}VuQ!$is9=xx`)e;"><field name="VAR">i</field></shadow></value><statement name="DO"><block type="inout_print" id="tHK{pj^BshK#cBLY#}Yh"><value name="VAR"><shadow type="text" id="zIz(NTgEBA8@G`RQ`S5)"><field name="TEXT">Hello</field></shadow><block type="dicts_get" id="EqF[)6tAW@Z6jj.bvsyq"><value name="DICT"><shadow type="variables_get" id="A:z*$,y)RKd-bp_v~9X?"><field name="VAR">mydict</field></shadow><block type="variables_get" id="St,58XNt9|t]TXAP2q1G"><field name="VAR">i</field></block></value><value name="KEY"><shadow type="text" id="i]Vj|jfCPD:[:AWM+S#r"><field name="TEXT">值</field></shadow></value></block></value></block></statement></block></next></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IHJlcXVlc3RzCmltcG9ydCBqc29uCgoKcmVwb25zZSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9taXhpby5vcmcvYXBpL3YxL2dldERhdGE/dXNlcj1kZW1vQG1peGx5Lm9yZyZwYXNzd29yZD1iODFlNTNmNDQxZDkwMTUyY2RmYjk3MzFjNWRiOTJkYSZwcm9qZWN0PSVFOSU4MCU5QSVFNyU5NCVBOCVFNiVCQyU5NCVFNyVBNCVCQSZ0b3BpYz0lRTUlQUQlQTYlRTclOTQlOUYlRTQlQkYlQTElRTYlODElQUYmbnVtPTEwJykKcHJpbnQocmVwb25zZS50ZXh0KQpteWRpY3QgPSBqc29uLmxvYWRzKHJlcG9uc2UudGV4dCkKbXlsaXN0ID0gbXlkaWN0WydkYXRhJ10KZm9yIGkgaW4gbXlsaXN0OgogICAgcHJpbnQoaVsn5YC8J10pCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="1(^[.x=QKH$G*kJf2(8v" x="-224" y="-349"><field name="VAR">reponse</field><value name="VALUE"><block type="requests_get" id="u_*K}npNOZA@y+0x1DZu"><field name="TYPE">get</field><value name="URL"><shadow type="text" id="ym(3J{rt?6LtIQ?G#vc-"><field name="TEXT">https://mixio.mixly.cn/api/v1/getData?user=demo@mixly.org&password=b81e53f441d90152cdfb9731c5db92da&project=%E9%80%9A%E7%94%A8%E6%BC%94%E7%A4%BA&topic=%E5%AD%A6%E7%94%9F%E4%BF%A1%E6%81%AF&num=10</field></shadow></value></block></value><next><block type="inout_print" id="^o[gc73ivKq}BazPJfm5"><value name="VAR"><shadow type="text" id="mWe-fiDR(vV^add;YS=U"><field name="TEXT">Hello</field></shadow><block type="requests_attribute" id="FvPx`ek-~u[0r#JjCqq("><field name="ATTR">text</field><value name="VAL"><shadow type="variables_get" id="x0(;;r$!I;._CZmza8T$"><field name="VAR">reponse</field></shadow></value></block></value><next><block type="variables_set" id="l0N9!lak6eX9h+pcT6JO"><field name="VAR">mydict</field><value name="VALUE"><block type="json_to_dicts" id="~_]TS`v_^HyVI7(]_;*b"><value name="VAR"><shadow type="text" id="u}H-s]t|?-ktu7Gg)vOt"><field name="TEXT">{"name":"Mixly","color":"green"}</field></shadow><block type="requests_attribute" id="E]v*kL|*_jZYu8u0/bV?"><field name="ATTR">text</field><value name="VAL"><shadow type="variables_get" id="F9*2e*G5[r+D{@xaJ#Cs"><field name="VAR">reponse</field></shadow></value></block></value></block></value><next><block type="variables_set" id="BmH!YPxFV4XTCAk-@dhL"><field name="VAR">mylist</field><value name="VALUE"><block type="dicts_get" id="?h9ZSb^4u1=L_--,GKKj"><value name="DICT"><shadow type="variables_get" id="m?)T}C86R=x~XtmuCaI|"><field name="VAR">mydict</field></shadow></value><value name="KEY"><shadow type="text" id="7}bEDGFw^}hx5/?y:X]|"><field name="TEXT">data</field></shadow></value></block></value><next><block type="controls_forEach" id="eH@w/5a)s,CwnX!1rmf,"><value name="LIST"><shadow type="list_many_input" id="Lt8t)2?iH{o{VnxvRDKn"><field name="CONTENT">0,1,2,3</field></shadow><block type="variables_get" id="dJFcg_|*4z`:?erl0fdl"><field name="VAR">mylist</field></block></value><value name="VAR"><shadow type="variables_get" id="viUGcDRql$0L!/hU78~P"><field name="VAR">i</field></shadow></value><statement name="DO"><block type="inout_print" id="L36-rw69(cu/h{Kjs+cZ"><value name="VAR"><shadow type="text" id="6OB#Z6W$To?73U`c;`|6"><field name="TEXT">Hello</field></shadow><block type="dicts_get" id="70a.$$G=6kVWxz2}w5-:"><value name="DICT"><shadow type="variables_get" id="-N3y`TsgGR|YjdK.l*lw"><field name="VAR">mydict</field></shadow><block type="variables_get" id="e9JKa;eTV@`YY=nHdZuW"><field name="VAR">i</field></block></value><value name="KEY"><shadow type="text" id="`U8F0X+w+zV]hM37x{6M"><field name="TEXT">值</field></shadow></value></block></value></block></statement></block></next></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IHJlcXVlc3RzCmltcG9ydCBqc29uCgoKcmVwb25zZSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9taXhpby5taXhseS5jbi9hcGkvdjEvZ2V0RGF0YT91c2VyPWRlbW9AbWl4bHkub3JnJnBhc3N3b3JkPWI4MWU1M2Y0NDFkOTAxNTJjZGZiOTczMWM1ZGI5MmRhJnByb2plY3Q9JUU5JTgwJTlBJUU3JTk0JUE4JUU2JUJDJTk0JUU3JUE0JUJBJnRvcGljPSVFNSVBRCVBNiVFNyU5NCU5RiVFNCVCRiVBMSVFNiU4MSVBRiZudW09MTAnKQpwcmludChyZXBvbnNlLnRleHQpCm15ZGljdCA9IGpzb24ubG9hZHMocmVwb25zZS50ZXh0KQpteWxpc3QgPSBteWRpY3RbJ2RhdGEnXQpmb3IgaSBpbiBteWxpc3Q6CiAgICBwcmludChpWyflgLwnXSkK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="I:0^rkv]3U4CCtXK7P5u" x="51" y="54"><field name="VAR">reponse</field><value name="VALUE"><block type="requests_get" id="h`]x8NgM.I(9)M3AYN}I"><field name="TYPE">get</field><value name="URL"><shadow type="text" id="?]7I}B.O!f{OOF,K=UA6"><field name="TEXT">https://mixio.mixly.cn/api/v1/getData?user=@4DDJ53C9&password=MixIO_public&project=default&topic=%E5%85%89%E7%85%A7&num=10</field></shadow></value></block></value><next><block type="inout_print" id="Ng]F77,$[6f],9:r6$*5"><value name="VAR"><shadow type="text" id="LdQecJd:{Y:nF2#FRQF7"><field name="TEXT">Hello</field></shadow><block type="requests_attribute" id="//.n`hAf7.qlPJ}(-(6o"><field name="ATTR">text</field><value name="VAL"><shadow type="variables_get" id="IUnb|X]zjC?_]VQU8!)Q"><field name="VAR">reponse</field></shadow></value></block></value><next><block type="variables_set" id="n99Hu)(vX?3[^ajNa5yk"><field name="VAR">mydict</field><value name="VALUE"><block type="json_to_dicts" id="p)x*7|vY{I/^og6|Rq;D"><value name="VAR"><shadow type="text" id="V,8+mx]T=)lKJ(#MjNr0"><field name="TEXT">{"name":"Mixly","color":"green"}</field></shadow><block type="requests_attribute" id="@uFWhTK2XmWo__L{bG45"><field name="ATTR">text</field><value name="VAL"><shadow type="variables_get" id="#r?=Ef7(mTCQ*/~!oekA"><field name="VAR">reponse</field></shadow></value></block></value></block></value><next><block type="controls_forEach" id="0O9}@jaKQ)P2:^`Mfn*h"><value name="LIST"><shadow type="list_many_input" id="WB7lBlO)uVf.cE+@PhVz"><field name="CONTENT">0,1,2,3</field></shadow><block type="dicts_get" id="WAy0q{axjo`O$,E._+_t"><value name="DICT"><shadow type="variables_get" id="WEB-QZf.Zk[o_0H]c{,t"><field name="VAR">mydict</field></shadow></value><value name="KEY"><shadow type="text" id="~P:[IL2L,Tuq$m,p,Ci8"><field name="TEXT">data</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id="s+/J-diyzUD]i,gq^HCs"><field name="VAR">i</field></shadow></value><statement name="DO"><block type="inout_print" id="XqV.DAJ6E.0EMg@K#)b."><value name="VAR"><shadow type="text" id="6T/@t57.Dxw^[[{9LXU7"><field name="TEXT">Hello</field></shadow><block type="variables_get" id="RF*C0w#=WD^)_aQ$=l2q"><field name="VAR">i</field></block></value></block></statement></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IHJlcXVlc3RzCmltcG9ydCBqc29uCgoKcmVwb25zZSA9IHJlcXVlc3RzLmdldCgnaHR0cHM6Ly9taXhpby5taXhseS5jbi9hcGkvdjEvZ2V0RGF0YT91c2VyPUA0RERKNTNDOSZwYXNzd29yZD1NaXhJT19wdWJsaWMmcHJvamVjdD1kZWZhdWx0JnRvcGljPSVFNSU4NSU4OSVFNyU4NSVBNyZudW09MTAnKQpwcmludChyZXBvbnNlLnRleHQpCm15ZGljdCA9IGpzb24ubG9hZHMocmVwb25zZS50ZXh0KQpmb3IgaSBpbiBteWRpY3RbJ2RhdGEnXToKICAgIHByaW50KGkpCg==</code>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 rc4" board="Python 3 Lite@Python 3 Lite"><block type="variables_set" id="Sl?UyzNRb{UJUc!/SSq;" x="-542" y="-122"><field name="VAR">目标数</field><value name="VALUE"><block type="math_number" id="`j{/p{4UXX;[@JTF18JU"><field name="NUM">58</field></block></value><next><block type="controls_whileUntil" id="w#vIb;de{.a}V~x[Dn[M"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="RcC3dS3INSX)JJ{}mB1A"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="BLt}x4zrVxigb]~AwJag"><field name="VAR">n</field><value name="VALUE"><block type="inout_type_input" id="xph57#pTVPoh#tel3CP^"><field name="DIR">int</field><value name="VAR"><shadow type="text" id="F0#zp[l{zXF{l3f)/R56"><field name="TEXT">猜一个整数:</field></shadow></value></block></value><next><block type="controls_if" id="b+F5QD7cSCp9RE3b/S_I"><mutation elseif="1" else="1"></mutation><value name="IF0"><block type="logic_compare" id="ZB~P#)S1;f*Z(e+~|BBR"><field name="OP">LT</field><value name="A"><block type="variables_get" id="K85JIY,T(yZ$p8yj`S+1"><field name="VAR">n</field></block></value><value name="B"><block type="variables_get" id="zawjnF@A6PBaTM0u~GV3"><field name="VAR">目标数</field></block></value></block></value><statement name="DO0"><block type="inout_print_inline" id="rVJHmJWMIy(_r0!;qqy$"><value name="VAR"><shadow type="text" id="A~2^)$cRidZ2D55u+7J{"><field name="TEXT">猜小了!请继续。</field></shadow></value></block></statement><value name="IF1"><block type="logic_compare" id="=.)msv6YhX^(t+Z_nh=O"><field name="OP">GT</field><value name="A"><block type="variables_get" id="*+f4o@K8FWZTHlC,2g+q"><field name="VAR">n</field></block></value><value name="B"><block type="variables_get" id=")PZeh3up~^-!tAz:/cCs"><field name="VAR">目标数</field></block></value></block></value><statement name="DO1"><block type="inout_print_inline" id="NBO6_R@46wo2WW:eh_*#"><value name="VAR"><shadow type="text" id="oUKYteI4Lx/dZ*MX)-yK"><field name="TEXT">猜大了!请继续。</field></shadow></value></block></statement><statement name="ELSE"><block type="inout_print_inline" id="ohHE02!SPHIVf?l3WX+="><value name="VAR"><shadow type="text" id="s|-JmD#a^xbfWY9sR99$"><field name="TEXT">恭喜,猜对了!</field></shadow></value><next><block type="controls_flow_statements" id="YK.G1R4QZa^@,VBN[~{q"><field name="FLOW">BREAK</field></block></next></block></statement></block></next></block></statement></block></next></block></xml><config>{}</config><code>X0U3XzlCX0FFX0U2X0EwXzg3X0U2Xzk1X0IwID0gNTgKd2hpbGUgVHJ1ZToKICAgIG4gPSBpbnQoaW5wdXQoJ+eMnOS4gOS4quaVtOaVsO+8micpKQogICAgaWYgbiA8IF9FN185Ql9BRV9FNl9BMF84N19FNl85NV9CMDoKICAgICAgICBwcmludCgn54yc5bCP5LqG77yB6K+357un57ut44CCJyxlbmQgPSIiKQogICAgZWxpZiBuID4gX0U3XzlCX0FFX0U2X0EwXzg3X0U2Xzk1X0IwOgogICAgICAgIHByaW50KCfnjJzlpKfkuobvvIHor7fnu6fnu63jgIInLGVuZCA9IiIpCiAgICBlbHNlOgogICAgICAgIHByaW50KCfmga3llpzvvIznjJzlr7nkuobvvIEnLGVuZCA9IiIpCiAgICAgICAgYnJlYWsK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="Ke#]#S}$W23~kl5~=b?I" x="100" y="-182"><field name="VAR">year</field><value name="VALUE"><block type="inout_type_input" id="9`;~gq7A_^qPW!79YIu5"><field name="DIR">int</field><value name="VAR"><shadow type="text" id="PF4c9w4-GAWLUl-:~*dR"><field name="TEXT">请输入一个年份:</field></shadow></value></block></value><next><block type="controls_if" id=")BeaRghD.xYstRZ5)]t5"><mutation elseif="1" else="1"></mutation><value name="IF0"><block type="logic_operation" id="l9C.,Ln]{,#+O;FF[V-|"><field name="OP">AND</field><value name="A"><block type="logic_compare" id="kE-iiD]94@/+._62,`RL"><field name="OP">EQ</field><value name="A"><block type="math_arithmetic" id="rO,*6=vROcEjn`]CI~JY"><field name="OP">QUYU</field><value name="A"><shadow type="math_number" id="Ib{gA?W;xE~iolU3S1xp"><field name="NUM">1</field></shadow><block type="variables_get" id="s)?oitxFaD3EAswhp)gd"><field name="VAR">year</field></block></value><value name="B"><shadow type="math_number" id="A@-@B+d.)/Lpv=xAKt^3"><field name="NUM">4</field></shadow></value></block></value><value name="B"><block type="math_number" id="_+JbOyA[(+xP[bgsju0:"><field name="NUM">0</field></block></value></block></value><value name="B"><block type="logic_compare" id="rswrsuW)[|Ysin-4V-HE"><field name="OP">NEQ</field><value name="A"><block type="math_arithmetic" id=":+x)22Dqc@ja=jpD~A]P"><field name="OP">QUYU</field><value name="A"><shadow type="math_number" id="O56jL9mG]Gr!}F[yUPq}"><field name="NUM">1</field></shadow><block type="variables_get" id="`6g?-(S3E.IQ3Ib,]pwN"><field name="VAR">year</field></block></value><value name="B"><shadow type="math_number" id="_OX8Y0(EfSh)at_p`?}?"><field name="NUM">4</field></shadow></value></block></value><value name="B"><block type="math_number" id="z`ZBJm+Qxc{m^vS`LJGR"><field name="NUM">100</field></block></value></block></value></block></value><statement name="DO0"><block type="inout_print_many" id="b#2nmzHwjeX;~rbZ6Z!-"><mutation items="2"></mutation><value name="ADD0"><block type="variables_get" id="PS2a$unHIFYHBFm7B/Q3"><field name="VAR">year</field></block></value><value name="ADD1"><block type="text" id="T$Cf`I+Wa6o5r~m)D]@f"><field name="TEXT">这是闰年</field></block></value></block></statement><value name="IF1"><block type="logic_compare" id="OPfEI}J_whm34j__{sgy"><field name="OP">EQ</field><value name="A"><block type="math_arithmetic" id="Bgh[b]#+Z[kV`{TTYK8a"><field name="OP">QUYU</field><value name="A"><shadow type="math_number" id="_b1OJBp4av?.5dzCYRZ!"><field name="NUM">1</field></shadow><block type="variables_get" id="RMSqtfyhQ!}.g/v!5bZ,"><field name="VAR">year</field></block></value><value name="B"><shadow type="math_number" id="k@9dbso3zY8`8*dQvfR~"><field name="NUM">400</field></shadow></value></block></value><value name="B"><block type="math_number" id="[Xmp;{rOfP{ZD;_,7U9K"><field name="NUM">0</field></block></value></block></value><statement name="DO1"><block type="inout_print_many" id="*1UpKnL0{iD|c@M^dpox"><mutation items="2"></mutation><value name="ADD0"><block type="variables_get" id="gm]X[z;;n77hFig#;{Xf"><field name="VAR">year</field></block></value><value name="ADD1"><block type="text" id="oUCBP5N{bp|dG(ayMZg8"><field name="TEXT">这是闰年</field></block></value></block></statement><statement name="ELSE"><block type="inout_print_many" id="vNi{PgX(1,E`ormJabcf"><mutation items="2"></mutation><value name="ADD0"><block type="variables_get" id="]];V9jQMup^N698wD6{L"><field name="VAR">year</field></block></value><value name="ADD1"><block type="text" id="nb``t~0SWMIc]-.Jd|9L"><field name="TEXT">这是平年</field></block></value></block></statement></block></next></block></xml><config>{}</config><code>eWVhciA9IGludChpbnB1dCgn6K+36L6T5YWl5LiA5Liq5bm05Lu977yaJykpCmlmIHllYXIgJSA0ID09IDAgYW5kIHllYXIgJSA0ICE9IDEwMDoKICAgIHByaW50KHllYXIsICfov5nmmK/pl7DlubQnKQplbGlmIHllYXIgJSA0MDAgPT0gMDoKICAgIHByaW50KHllYXIsICfov5nmmK/pl7DlubQnKQplbHNlOgogICAgcHJpbnQoeWVhciwgJ+i/meaYr+W5s+W5tCcpCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="g7z1R!Nq8/iT@3/,UiFJ" x="-512" y="-172"><field name="VAR">temperature</field><value name="VALUE"><block type="inout_type_input" id="Cr;F;ttS0*MBKk|Fr1jh"><field name="DIR">float</field><value name="VAR"><shadow type="text" id="P7;woXfyLYA?ZKK;zI)C"><field name="TEXT">请输入气温:</field></shadow></value></block></value><next><block type="controls_if" id="I3)(QGxByDMaI?*;QdAC"><mutation elseif="1" else="1"></mutation><value name="IF0"><block type="logic_compare" id="C1TsjIN+_hD,Ht{,(cTS"><field name="OP">LT</field><value name="A"><block type="variables_get" id="]_w*MOV_R]}1811DZLoM"><field name="VAR">temperature</field></block></value><value name="B"><block type="math_number" id="ol`eW*RY?s8#M{8X}8oP"><field name="NUM">15</field></block></value></block></value><statement name="DO0"><block type="inout_print_inline" id="WLl~we3gQ[hfcf(ENSQ("><value name="VAR"><shadow type="text" id="[nhEqZppug/2WLJeh_VA"><field name="TEXT">今天有点冷,要穿厚一些的衣服</field></shadow></value></block></statement><value name="IF1"><block type="logic_compare_continous" id="gXDwEPz-k}xV,=gqY?:#"><field name="OP1">LTE</field><field name="OP2">LTE</field><value name="A"><shadow type="math_number" id="G1)}Nd(?RK.syCuInt!E"><field name="NUM">15</field></shadow></value><value name="B"><shadow type="variables_get" id="eNQz|~*8X8C:$=E$^w6]"><field name="VAR">x</field></shadow><block type="variables_get" id="s!jPQxQj^pKl*u9s+sZ6"><field name="VAR">temperature</field></block></value><value name="C"><shadow type="math_number" id="]Yb4yI$b:J5R@8/ZylER"><field name="NUM">30</field></shadow></value></block></value><statement name="DO1"><block type="inout_print_inline" id="tB)BQOrs:_Hx28J_/0iI"><value name="VAR"><shadow type="text" id=":|T3qVs_X!$RP;!XM{C)"><field name="TEXT">今天有点气候宜人,适合穿春秋装</field></shadow></value></block></statement><statement name="ELSE"><block type="inout_print_inline" id=";DiqvTY`)I{1Z^gj735]"><value name="VAR"><shadow type="text" id="tn|B=J}~??l@8p2`AMYo"><field name="TEXT">今天有点热,要穿薄一些的衣服并适当防晒</field></shadow></value></block></statement></block></next></block></xml><config>{}</config><code>dGVtcGVyYXR1cmUgPSBmbG9hdChpbnB1dCgn6K+36L6T5YWl5rCU5rip77yaJykpCmlmIHRlbXBlcmF0dXJlIDwgMTU6CiAgICBwcmludCgn5LuK5aSp5pyJ54K55Ya377yM6KaB56m/5Y6a5LiA5Lqb55qE6KGj5pyNJyxlbmQgPSIiKQplbGlmIDE1IDw9IHRlbXBlcmF0dXJlIDw9IDMwOgogICAgcHJpbnQoJ+S7iuWkqeacieeCueawlOWAmeWunOS6uu+8jOmAguWQiOepv+aYpeeni+ijhScsZW5kID0iIikKZWxzZToKICAgIHByaW50KCfku4rlpKnmnInngrnng63vvIzopoHnqb/oloTkuIDkupvnmoTooaPmnI3lubbpgILlvZPpmLLmmZInLGVuZCA9IiIpCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python 3 Online@Python 3 Online" shown="block"><block type="variables_set" id="Ke#]#S}$W23~kl5~=b?I" x="-173" y="-122"><field name="VAR">nl</field><value name="VALUE"><block type="inout_type_input" id="9`;~gq7A_^qPW!79YIu5"><field name="DIR">int</field><value name="VAR"><shadow type="text" id="PF4c9w4-GAWLUl-:~*dR"><field name="TEXT">请输入乘车人的年龄:</field></shadow></value></block></value><next><block type="controls_if" id=")BeaRghD.xYstRZ5)]t5"><mutation elseif="1" else="1"></mutation><value name="IF0"><block type="logic_compare" id="o7U/Spr8u#JTOkNq_pts"><field name="OP">GTE</field><value name="A"><block type="variables_get" id="q88GZ!;ya~OV|Yf$sqEu"><field name="VAR">nl</field></block></value><value name="B"><block type="math_number" id="T=piO9Z1`:{jS5IU6h~r"><field name="NUM">14</field></block></value></block></value><statement name="DO0"><block type="inout_print_many" id="b#2nmzHwjeX;~rbZ6Z!-"><mutation items="2"></mutation><value name="ADD0"><block type="variables_get" id="PS2a$unHIFYHBFm7B/Q3"><field name="VAR">nl</field></block></value><value name="ADD1"><block type="text" id="T$Cf`I+Wa6o5r~m)D]@f"><field name="TEXT">岁,请购买全价票</field></block></value></block></statement><value name="IF1"><block type="logic_compare_continous" id="TOwK/}AjESB4PcOYZQaR"><field name="OP1">LTE</field><field name="OP2">LT</field><value name="A"><shadow type="math_number" id="*Z#I)5JcRLR6(N`0b/Ik"><field name="NUM">6</field></shadow></value><value name="B"><shadow type="variables_get" id="HPT]nXrZvoNbzUr4,#Oq"><field name="VAR">x</field></shadow><block type="variables_get" id="xAPS`:.7H#!ha/GcG/b9"><field name="VAR">nl</field></block></value><value name="C"><shadow type="math_number" id="H(anXuPka*v#qMs}l|V("><field name="NUM">14</field></shadow></value></block></value><statement name="DO1"><block type="inout_print_many" id="*1UpKnL0{iD|c@M^dpox"><mutation items="2"></mutation><value name="ADD0"><block type="variables_get" id="gm]X[z;;n77hFig#;{Xf"><field name="VAR">nl</field></block></value><value name="ADD1"><block type="text" id="oUCBP5N{bp|dG(ayMZg8"><field name="TEXT">岁,请购买儿童优惠票</field></block></value></block></statement><statement name="ELSE"><block type="inout_print_many" id="vNi{PgX(1,E`ormJabcf"><mutation items="2"></mutation><value name="ADD0"><block type="variables_get" id="]];V9jQMup^N698wD6{L"><field name="VAR">nl</field></block></value><value name="ADD1"><block type="text" id="nb``t~0SWMIc]-.Jd|9L"><field name="TEXT">岁,由持票成年人免费携带</field></block></value></block></statement></block></next></block></xml><config>{}</config><code>bmwgPSBpbnQoaW5wdXQoJ+ivt+i+k+WFpeS5mOi9puS6uueahOW5tOm+hO+8micpKQppZiBubCA+PSAxNDoKICAgIHByaW50KG5sLCAn5bKB77yM6K+36LSt5Lmw5YWo5Lu356WoJykKZWxpZiA2IDw9IG5sIDwgMTQ6CiAgICBwcmludChubCwgJ+Wyge+8jOivt+i0reS5sOWEv+erpeS8mOaDoOelqCcpCmVsc2U6CiAgICBwcmludChubCwgJ+Wyge+8jOeUseaMgeelqOaIkOW5tOS6uuWFjei0ueaQuuW4picpCg==</code>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user