diff options
author | Bryan Berry <bryan@olenepal.org> | 2010-03-15 08:43:52 (GMT) |
---|---|---|
committer | Bryan Berry <bryan@olenepal.org> | 2010-03-15 08:43:52 (GMT) |
commit | d03552a31d2b63b42084ae506fc94e6149a5440a (patch) | |
tree | 76608ccbe04fb941c9e4b69a205c957d29ac4b95 /js/lesson.js |
initial commit
Diffstat (limited to 'js/lesson.js')
-rwxr-xr-x | js/lesson.js | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/js/lesson.js b/js/lesson.js new file mode 100755 index 0000000..9585211 --- /dev/null +++ b/js/lesson.js @@ -0,0 +1,165 @@ +$(document).ready( + function(){ + + + //preloads assets into karma 'collections' + var k = Karma({ + audio: [{'name':'correct','file':'correct.ogg'}, + {'name':'incorrect','file':'incorrect.ogg'} + ], + image: [{name: 'bear', file: 'bear.png'}, + {name : 'goat', file: 'goat.png'}, + {name: 'tiger', file: 'tiger.png'}, + {name: 'elephant', file: 'elephant.png'}, + {name: 'horse', file: 'horse.png'}, + {name: 'cow', file: 'cow.png'} + ] + }); + + //this command will scale down the lesson if the user's browser window + //is smaller than 950px X 600px + k.scaleWindow(); + + //sets locale, otherwise defaults to English + //$.i18n.setLocale('en'); + + //put your main lesson code here + k.ready( + function(){ + + + $('#kHeader').kHeader({'title': 'English Animal Identification', + lessonPlan: true, teachersNote: true}); + + //Set up feedback widget, this shows the user a correct or incorrect + //icon and sound when triggered programmatically + var $feedback = $('#feedback').feedback(); + + var kFooter = $('#kFooter').kFooter({'winningScore': 6}); + + var score = 0; + var names = []; + var namesUsed = []; + var correctIndex = 0; + var $img = $('#imgObject'); + var $options = $('.option'); + + $.i18n.gettext("bear"); + $.i18n.gettext("goat"); + $.i18n.gettext("tiger"); + $.i18n.gettext("elephant"); + $.i18n.gettext("horse"); + $.i18n.gettext("cow"); + + var populateListNames = function() { + var i = 0; + $.each(k.image, function (img){ + names[i] = img; + i++; + }); + }; + + + var checkSelection = function(selectedOption){ + if(selectedOption === correctIndex){ + + score++; + kFooter.kFooter('inc'); + kFooter.kFooter('incTotal'); + + if (score === 6){ + $feedback.feedback('win'); + } else{ + $feedback.feedback('correct'); + game(); + } + } + else { + $feedback.feedback('incorrect'); + kFooter.kFooter('incTotal'); + } + }; + + var shuffleGlobal = function (list) { + var i = 0, j = 0, t = 0; + for (i = list.length - 1; i > 0; i -= 1) { + j = Karma.rand(0, i); + t = list[i]; + list[i] = list[j]; + list[j] = t; + } + }; + + var game = function(){ + correctIndex = 0; + + var pickCorrect = function(){ + var correct = 0; + + var used = function(index){ + var name = names[index]; + for (var i = 0; i < namesUsed.length; i++){ + if (namesUsed[i] === name){ + return true; + } + } + return false; + }; + + var getUnusedName = function(){ + correct = k.rand(0,3); + while(used(correct)){ + shuffleGlobal(names); + correct = k.rand(0,3); + } + return correct; + }; + + shuffleGlobal(names); + correct = getUnusedName(); + namesUsed.push(names[correct]); + + return correct; + }; + + correctIndex = pickCorrect(); + + for (var i = 0; i < 4; i++){ + $($options[i]).text($.i18n.gettext(k.image[names[i]].name)); + } + + $img.attr('src', k.image[names[correctIndex]].src) + .css('visibility', 'visible'); + + }; + + + kFooter.bind('kFooterWinGame', + function(){ + $('.optImg').hide(); + $('.imageBox').hide(); + $('#gameOver').show(); + }); + kFooter.bind('kFooterRestart', + function() { + namesUsed = []; + correctIndex = 0; + score = 0; + game(); + } + ); + + $options.click( + function(e){ + checkSelection(parseInt(e.target.id.slice(-1))); + } + ); + + + populateListNames(); + game(); //let the game begin + + + }); //end of games + +});
\ No newline at end of file |