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