Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 78 additions & 8 deletions codingEnvironment.html
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,17 @@ <h1>CSE 190 Blockly Playground: Project 3</h1>
<img src="images/cat3_numbered.png" style="margin-left:5px;margin-top:5px;outline-style: solid;outline-width: 1px;height:180px;" />
</td>
</tr>
<tr>
<td>
<img src="images/chicken1_numbered.png" style="margin-left:5px;margin-top:5px;outline-style: solid;outline-width: 1px;height:180px;" />
</td>
<td>
<img src="images/chicken2_numbered.png" style="margin-left:5px;margin-top:5px;outline-style: solid;outline-width: 1px;height:180px;" />
</td>
<td>
<img src="images/chicken3_numbered.png" style="margin-left:5px;margin-top:5px;outline-style: solid;outline-width: 1px;height:180px;" />
</td>
</tr>
</table>
</div>
</div>
Expand All @@ -97,8 +108,14 @@ <h1>CSE 190 Blockly Playground: Project 3</h1>
<block type="whenrunclicked"></block>
<block type="clearscreen"></block>
</category>
<category name="cats" colour="175">
<block type="catpose"></block>
<category name="animals" colour="175">
<block type="say"></block>
<category name="cats" colour="175">
<block type="catpose"></block>
</category>
<category name="chickens" colour="175">
<block type="chickenpose"></block>
</category>
</category>

<sep></sep>
Expand Down Expand Up @@ -144,7 +161,6 @@ <h1>CSE 190 Blockly Playground: Project 3</h1>
canvas.height = 480;

var ctx = document.getElementById('catAnimation').getContext('2d');

var animation = true;

/*********************
Expand Down Expand Up @@ -184,6 +200,9 @@ <h1>CSE 190 Blockly Playground: Project 3</h1>
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,
Expand All @@ -193,20 +212,37 @@ <h1>CSE 190 Blockly Playground: Project 3</h1>
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 = '';
Expand All @@ -227,14 +263,33 @@ <h1>CSE 190 Blockly Playground: Project 3</h1>
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++;

Expand All @@ -254,6 +309,7 @@ <h1>CSE 190 Blockly Playground: Project 3</h1>
function resetCanvas(){
clearCanvas();
setcatImage(1);
setchickenImage(1);
}

/*************************************
Expand All @@ -275,13 +331,27 @@ <h1>CSE 190 Blockly Playground: Project 3</h1>
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 *
***********************/
Expand Down
43 changes: 41 additions & 2 deletions customBlocks.js
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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);
Expand All @@ -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;
Expand All @@ -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;
};