fallouthacking
Version:
Fallut series style hacking game.
62 lines (47 loc) • 1.29 kB
JavaScript
var prompt = require('prompt');
var q = require('q');
var print = require('./services/printer');
var words = require('./services/wordservice');
var choices = [];
var guesses = [];
var password = null;
var wordOptions = { length: 8, count: 10 };
print.welcome();
initialize()
.then(_showWordBank)
.then(_promptForGuesses);
function initialize() {
var getWords = q.defer();
_getWordsAndPassword(function() { getWords.resolve(); });
return q.all([getWords.promise]);
}
function _getWordsAndPassword(cb) {
words.get(wordOptions, function(words) {
choices = words;
password = choices[Math.floor(Math.random() * choices.length)];
cb();
});
}
function _showWordBank() {
var deferred = q.defer();
print.wordbank(choices);
deferred.resolve();
return deferred.promise;
}
function _promptForGuesses(deferred) {
deferred = (deferred === undefined) ? q.defer() : deferred;
prompt.start();
prompt.get('guess', function(err, response) {
var guess = response.guess.toUpperCase();
guesses.push(guess);
if(guess === password) {
print.correct(guess);
deferred.resolve();
} else {
print.incorrectWithComparison(guess, password);
_promptForGuesses(deferred);
}
});
return deferred.promise;
}