diff --git a/codingEnvironment.html b/codingEnvironment.html index 2110d6c..393b3be 100644 --- a/codingEnvironment.html +++ b/codingEnvironment.html @@ -79,6 +79,17 @@

CSE 190 Blockly Playground: Project 3

+ + + + + + + + + + + @@ -97,8 +108,14 @@

CSE 190 Blockly Playground: Project 3

- - + + + + + + + + @@ -144,7 +161,6 @@

CSE 190 Blockly Playground: Project 3

canvas.height = 480; var ctx = document.getElementById('catAnimation').getContext('2d'); - var animation = true; /********************* @@ -184,6 +200,9 @@

CSE 190 Blockly Playground: Project 3

var catImage = new Image(); catImage.src = "images/cat1.png"; + var chickenImage = new Image(); + chickenImage.src = "images/chicken1.png"; + var cat1 = sprite({ context: canvas.getContext("2d"), width: 500, @@ -193,20 +212,37 @@

CSE 190 Blockly Playground: Project 3

y: 0 }); + var chicken1 = sprite({ + context: canvas.getContext("2d"), + width: 500, + height: 500, + image: chickenImage, + x: 250, + y: 0 + }); + /****************** * Show the cat * ******************/ cat1.render(); + chicken1.render(); var indexToArrays = 0; var numOfInstructions = 0; - var arrayOfPoses = []; + var arrayOfCatPoses = []; + var arrayOfChickenPoses = []; + var words = []; /************************************** * RUN and STOP buttons on the canvas * **************************************/ function runCode() { code = Blockly.JavaScript.workspaceToCode(workspace); + arrayOfChickenPoses = []; + arrayOfCatPoses = []; + words = []; + indexToArrays = 0; + numOfInstructions = 0; var formattedCode = code.split(";"); console.log(formattedCode); document.getElementById('codeArea').innerHTML = ''; @@ -227,14 +263,33 @@

CSE 190 Blockly Playground: Project 3

window.requestAnimationFrame(animate); } - function updatePose(poseNum){ - arrayOfPoses.push(poseNum); + function updateCatPose(poseNum){ + arrayOfCatPoses.push(poseNum); + var prev = 1; + if (arrayOfChickenPoses.length > 0) { + prev = arrayOfChickenPoses[arrayOfChickenPoses.length-1]; + } + arrayOfChickenPoses.push(prev); numOfInstructions++; } + function updateChickenPose(poseNum){ + arrayOfChickenPoses.push(poseNum); + var prev = 1; + if (arrayOfCatPoses.length > 0) { + prev = arrayOfCatPoses[arrayOfCatPoses.length-1]; + } + arrayOfCatPoses.push(prev); + numOfInstructions++; + } function animate() { setTimeout(function() { - setcatImage(arrayOfPoses[indexToArrays]); + clearCanvas(); + setcatImage(arrayOfCatPoses[indexToArrays]); + setchickenImage(arrayOfChickenPoses[indexToArrays]); + + ctx.font = "30px Arial"; + ctx.fillText(words[indexToArrays % words.length], 250, 400); indexToArrays++; @@ -254,6 +309,7 @@

CSE 190 Blockly Playground: Project 3

function resetCanvas(){ clearCanvas(); setcatImage(1); + setchickenImage(1); } /************************************* @@ -275,13 +331,27 @@

CSE 190 Blockly Playground: Project 3

function setcatImage(catIndex){ if(!catIndex) catIndex = 1; - clearCanvas(); catImage.src = "images/cat"+catIndex+".png"; ctx.drawImage(cat1.image, cat1.x, cat1.y); ctx.save(); ctx.restore(); } + /***************************** + * Changing the chickens's Pose * + *****************************/ + function setchickenImage(chickenIndex){ + if(!chickenIndex) + chickenIndex = 1; + chickenImage.src = "images/chicken"+chickenIndex+".png"; + ctx.drawImage(chicken1.image, chicken1.x, chicken1.y); + ctx.save(); + ctx.restore(); + } + + function say(text){ + words.push(text); + } /*********************** * Clearing the Canvas * ***********************/ diff --git a/customBlocks.js b/customBlocks.js index be860fd..823b416 100755 --- a/customBlocks.js +++ b/customBlocks.js @@ -16,6 +16,20 @@ Blockly.Blocks['whenrunclicked'] = { } }; +Blockly.Blocks['say'] = { + init: function() { + this.appendValueInput("sayText") + .setCheck("String") + .appendField("Say"); + this.setInputsInline(true); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(330); + this.setTooltip("Say"); + this.setHelpUrl("Say"); + } +}; + Blockly.Blocks['clearscreen'] = { init: function() { this.appendDummyInput() @@ -31,7 +45,7 @@ Blockly.Blocks['clearscreen'] = { Blockly.Blocks['catpose'] = { init: function() { this.appendDummyInput() - .appendField("Change Pose") + .appendField("Change Cat Pose") .appendField(new Blockly.FieldDropdown([["1","1"], ["2","2"], ["3","3"]]), "catIndex"); this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -41,6 +55,19 @@ Blockly.Blocks['catpose'] = { } }; +Blockly.Blocks['chickenpose'] = { + init: function() { + this.appendDummyInput() + .appendField("Change Chicken Pose") + .appendField(new Blockly.FieldDropdown([["1","1"], ["2","2"], ["3","3"]]), "chickenIndex"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(175); + this.setTooltip(""); + this.setHelpUrl(""); + } +}; + Blockly.JavaScript['whenrunclicked'] = function(block) { var statements_name = Blockly.JavaScript.statementToCode(block, 'NAME'); var blockCode = statements_name; @@ -54,6 +81,18 @@ Blockly.JavaScript['clearscreen'] = function(block) { Blockly.JavaScript['catpose'] = function(block) { var dropdown_catindex = block.getFieldValue('catIndex'); - var blockCode = 'updatePose('+dropdown_catindex+');'; + var blockCode = 'updateCatPose('+dropdown_catindex+');'; return blockCode; }; + +Blockly.JavaScript['chickenpose'] = function(block) { + var dropdown_chickenindex = block.getFieldValue('chickenIndex'); + var blockCode = 'updateChickenPose('+dropdown_chickenindex+');'; + return blockCode; +}; + +Blockly.JavaScript['say'] = function(block) { + var text = Blockly.JavaScript.valueToCode(block, 'sayText', Blockly.JavaScript.ORDER_ATOMIC); + var blockCode = 'say('+ text +');'; + return blockCode; +}; \ No newline at end of file