automatic-assessments
Version:
Automatic assessment of Marty and Scratch 3.0 projects
47 lines (46 loc) • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SPRITE_CLICKED_OPCODE = exports.GREEN_FLAG_CLICKED_OPCODE = void 0;
const Analyzer_1 = require("../Analyzer");
exports.GREEN_FLAG_CLICKED_OPCODE = 'event_whenflagclicked';
exports.SPRITE_CLICKED_OPCODE = 'event_whenthisspriteclicked';
class Interactivity extends Analyzer_1.default {
constructor(targets) {
super();
this.score = 0;
this.targets = targets;
}
execute() {
this.firstPointGreenFlag();
this.twoPointsSpriteClicked();
return this.score;
}
firstPointGreenFlag() {
// one point when a green flag block is used
for (const target of this.targets) {
for (const _blockKey of Object.keys(target.blocks._blocks)) {
const _block = target.blocks._blocks[_blockKey];
if (_block.opcode === exports.GREEN_FLAG_CLICKED_OPCODE && _block.next) {
this.score = 1;
break;
}
}
}
}
twoPointsSpriteClicked() {
// two points when a sprite clicked block was used
for (const target of this.targets) {
for (const _blockKey of Object.keys(target.blocks._blocks)) {
const _block = target.blocks._blocks[_blockKey];
if (_block.opcode === exports.SPRITE_CLICKED_OPCODE && _block.next) {
this.score = 2;
break;
}
}
}
}
threePoints() {
throw new Error("Haven't figured that out.");
}
}
exports.default = Interactivity;