error : "Expecting tuple from value"

1,142 views
Skip to first unread message

byach...@gmail.com

unread,
Mar 1, 2017, 10:34:17 AM3/1/17
to Blockly
Hello,
I'm coding a new block named "collision" and which verifies if two rectangles have or not an intersection.
But there is an error that I don't understand :
"AssertionError: Assertion failed: Expecting tuple from value block "collision".   "

If somebody could have a look at my code and could give me some explanation, it would be nice !

My code in the "my_javascript.js" file :

Blockly.JavaScript['collision'] = function(block) {
  var value_x1 = Blockly.JavaScript.valueToCode(block, 'x1', Blockly.JavaScript.ORDER_ATOMIC);
  var value_y1= Blockly.JavaScript.valueToCode(block, 'y1', Blockly.JavaScript.ORDER_ATOMIC);
  var value_largeur1 = Blockly.JavaScript.valueToCode(block, 'largeur1', Blockly.JavaScript.ORDER_ATOMIC);
  var value_hauteur1 = Blockly.JavaScript.valueToCode(block, 'hauteur1', Blockly.JavaScript.ORDER_ATOMIC);
  var value_x2 = Blockly.JavaScript.valueToCode(block, 'x2', Blockly.JavaScript.ORDER_ATOMIC);
  var value_y2= Blockly.JavaScript.valueToCode(block, 'y2', Blockly.JavaScript.ORDER_ATOMIC);
  var value_largeur2 = Blockly.JavaScript.valueToCode(block, 'largeur2', Blockly.JavaScript.ORDER_ATOMIC);
  var value_hauteur2 = Blockly.JavaScript.valueToCode(block, 'hauteur2', Blockly.JavaScript.ORDER_ATOMIC);

  var code='if('+value_x1+'+'+value_largeur1+'/2<'+value_x2+'-'+value_largeur2+'/2 || '+value_x2+'+'+value_largeur2+'/2<'+value_x1+'-'+value_largeur1+'/2 || '+value_y1+'+'+value_hauteur1+'/2<'+value_y2+'-'+value_hauteur2+'/2 || '+value_y2+'+'+value_hauteur2+'/2<'+value_y1+'-'+value_hauteur1+'/2) return true;\n  else return false;';

  return code;
};

My code in the "my_block.js" file :

Blockly.Blocks['collision'] = {
  init: function() {
    this.appendValueInput("x1")
        .setCheck("Number")
        .setAlign(Blockly.ALIGN_RIGHT)
        .appendField("rectangle 1 : x centre");
    this.appendValueInput("y1")
        .setCheck("Number")
        .setAlign(Blockly.ALIGN_RIGHT)
        .appendField("y centre");
    this.appendValueInput("largeur1")
        .setCheck("Number")
        .setAlign(Blockly.ALIGN_RIGHT)
        .appendField("largeur");
    this.appendValueInput("hauteur1")
        .setCheck("Number")
        .setAlign(Blockly.ALIGN_RIGHT)
        .appendField("hauteur");
    this.appendValueInput("x2")
        .setCheck("Number")
        .setAlign(Blockly.ALIGN_RIGHT)
        .appendField("rectangle 2 : x centre");
    this.appendValueInput("y2")
        .setCheck("Number")
        .setAlign(Blockly.ALIGN_RIGHT)
        .appendField("y centre");
    this.appendValueInput("largeur2")
        .setCheck("Number")
        .setAlign(Blockly.ALIGN_RIGHT)
        .appendField("largeur");
    this.appendValueInput("hauteur2")
        .setCheck("Number")
        .setAlign(Blockly.ALIGN_RIGHT)
        .appendField("hauteur");
    this.setOutput(true, 'Boolean');
    this.setTooltip('');
    this.setColour(210);
  }
};

Thank you !

byach...@gmail.com

unread,
Mar 9, 2017, 2:23:28 PM3/9/17
to Blockly
It's OK : my block has to return a table, because of an operator order of precedence is required.
Reply all
Reply to author
Forward
0 new messages