|
|
|
@@ -3,27 +3,74 @@ function ExtractWordManager() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.initVariables = function() {
|
|
|
|
|
this.koreanWordList = [];
|
|
|
|
|
this.koreanWordList[0] = koreanBasicWordList;
|
|
|
|
|
this.koreanWordList[1] = koreanLeftUpperWordList;
|
|
|
|
|
this.koreanWordList[2] = koreanRightUpperWordList;
|
|
|
|
|
this.koreanWordList[3] = koreanSecondFingerWordList;
|
|
|
|
|
this.koreanWordList[4] = koreanLeftLowerWordList;
|
|
|
|
|
this.koreanWordList[5] = koreanRightLowerWordList;
|
|
|
|
|
this.koreanWordList[6] = koreanLeftUpperDoubleWordList;
|
|
|
|
|
this.koreanWordList[7] = koreanRightUpperDoubleWordList;
|
|
|
|
|
// testContent = koreanWordList;
|
|
|
|
|
// testContent = koreanSentenceList;
|
|
|
|
|
this.easyWordList = [];
|
|
|
|
|
this.hardWordList = [];
|
|
|
|
|
|
|
|
|
|
this.englishWordList = [];
|
|
|
|
|
this.englishWordList[0] = englishBasicWordList;
|
|
|
|
|
this.englishWordList[1] = englishLeftUpperWordList;
|
|
|
|
|
this.englishWordList[2] = englishRightUpperWordList;
|
|
|
|
|
this.englishWordList[3] = englishSecondFingerWordList;
|
|
|
|
|
this.englishWordList[4] = englishLeftLowerWordList;
|
|
|
|
|
this.englishWordList[5] = englishRightLowerWordList;
|
|
|
|
|
// testContent = englishWordList;
|
|
|
|
|
// testContent = englishSentenceList;
|
|
|
|
|
if(isKoreanTypingApp()) {
|
|
|
|
|
this.easyWordList[0] = this.pickOutDifficulty(koreanBasicWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
this.easyWordList[1] = this.pickOutDifficulty(koreanLeftUpperWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
this.easyWordList[2] = this.pickOutDifficulty(koreanRightUpperWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
this.easyWordList[3] = this.pickOutDifficulty(koreanSecondFingerWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
this.easyWordList[4] = this.pickOutDifficulty(koreanLeftLowerWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
this.easyWordList[5] = this.pickOutDifficulty(koreanRightLowerWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
this.easyWordList[6] = this.pickOutDifficulty(koreanLeftUpperDoubleWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
this.easyWordList[7] = this.pickOutDifficulty(koreanRightUpperDoubleWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
// for(var i = 0; i < this.easyWordList.length; i++) {
|
|
|
|
|
// console.log("this.easyWordList[" + i + "] length : " + this.easyWordList[i].length);
|
|
|
|
|
// console.log("this.easyWordList[" + i + "] : " + this.easyWordList[i]);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
this.hardWordList[0] = this.pickOutDifficulty(koreanBasicWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
this.hardWordList[1] = this.pickOutDifficulty(koreanLeftUpperWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
this.hardWordList[2] = this.pickOutDifficulty(koreanRightUpperWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
this.hardWordList[3] = this.pickOutDifficulty(koreanSecondFingerWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
this.hardWordList[4] = this.pickOutDifficulty(koreanLeftLowerWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
this.hardWordList[5] = this.pickOutDifficulty(koreanRightLowerWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
this.hardWordList[6] = this.pickOutDifficulty(koreanLeftUpperDoubleWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
this.hardWordList[7] = this.pickOutDifficulty(koreanRightUpperDoubleWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
// for(var i = 0; i < this.hardWordList.length; i++) {
|
|
|
|
|
// console.log("this.hardWordList[" + i + "] length : " + this.hardWordList[i].length);
|
|
|
|
|
// console.log("this.hardWordList[" + i + "] : " + this.hardWordList[i]);
|
|
|
|
|
// }
|
|
|
|
|
} else {
|
|
|
|
|
this.easyWordList[0] = this.pickOutDifficulty(englishBasicWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
this.easyWordList[1] = this.pickOutDifficulty(englishLeftUpperWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
this.easyWordList[2] = this.pickOutDifficulty(englishRightUpperWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
this.easyWordList[3] = this.pickOutDifficulty(englishSecondFingerWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
this.easyWordList[4] = this.pickOutDifficulty(englishLeftLowerWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
this.easyWordList[5] = this.pickOutDifficulty(englishRightLowerWordList, ExtractWordManager.DIFFICULTY_EASY);
|
|
|
|
|
// for(var i = 0; i < this.easyWordList.length; i++) {
|
|
|
|
|
// console.log("this.easyWordList[" + i + "] length : " + this.easyWordList[i].length);
|
|
|
|
|
// console.log("this.easyWordList[" + i + "] : " + this.easyWordList[i]);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
this.hardWordList[0] = this.pickOutDifficulty(englishBasicWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
this.hardWordList[1] = this.pickOutDifficulty(englishLeftUpperWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
this.hardWordList[2] = this.pickOutDifficulty(englishRightUpperWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
this.hardWordList[3] = this.pickOutDifficulty(englishSecondFingerWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
this.hardWordList[4] = this.pickOutDifficulty(englishLeftLowerWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
this.hardWordList[5] = this.pickOutDifficulty(englishRightLowerWordList, ExtractWordManager.DIFFICULTY_HARD);
|
|
|
|
|
// for(var i = 0; i < this.hardWordList.length; i++) {
|
|
|
|
|
// console.log("this.hardWordList[" + i + "] length : " + this.hardWordList[i].length);
|
|
|
|
|
// console.log("this.hardWordList[" + i + "] : " + this.hardWordList[i]);
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.pickOutDifficulty = function(wordList, difficultyForLevel) {
|
|
|
|
|
var pickOutWordList = [];
|
|
|
|
|
|
|
|
|
|
var count = wordList.length;
|
|
|
|
|
var index = 0;
|
|
|
|
|
for(var i = 0; i < count; i++) {
|
|
|
|
|
var word = wordList[i];
|
|
|
|
|
if(this.isValidWordForLevel(word, difficultyForLevel)) {
|
|
|
|
|
pickOutWordList[index] = word;
|
|
|
|
|
index++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return pickOutWordList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -42,6 +89,8 @@ ExtractWordManager.prototype.isValidWordForLevel = function(word, difficultyForL
|
|
|
|
|
maxWordLength = ExtractWordManager.DIFFICULTY_EASY_KOREAN_WORD_LENGTH;
|
|
|
|
|
} else {
|
|
|
|
|
maxWordLength = ExtractWordManager.DIFFICULTY_EASY_ENGLISH_WORD_LENGTH;
|
|
|
|
|
// console.log("wordLength : " + wordLength);
|
|
|
|
|
// console.log("maxWordLength : " + maxWordLength);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(wordLength <= maxWordLength)
|
|
|
|
@@ -50,12 +99,14 @@ ExtractWordManager.prototype.isValidWordForLevel = function(word, difficultyForL
|
|
|
|
|
return false;
|
|
|
|
|
} else {
|
|
|
|
|
var minWordLength = 0;
|
|
|
|
|
// console.log("wordLength : " + wordLength);
|
|
|
|
|
|
|
|
|
|
if(isKoreanTypingApp()) {
|
|
|
|
|
minWordLength = ExtractWordManager.DIFFICULTY_EASY_KOREAN_WORD_LENGTH;
|
|
|
|
|
} else {
|
|
|
|
|
minWordLength = ExtractWordManager.DIFFICULTY_EASY_ENGLISH_WORD_LENGTH;
|
|
|
|
|
}
|
|
|
|
|
// console.log("minWordLength : " + minWordLength);
|
|
|
|
|
|
|
|
|
|
if(wordLength > minWordLength)
|
|
|
|
|
return true;
|
|
|
|
@@ -68,172 +119,39 @@ ExtractWordManager.prototype.isValidWordForLevel = function(word, difficultyForL
|
|
|
|
|
ExtractWordManager.prototype.getWord = function(wordLevel, difficultyForLevel) {
|
|
|
|
|
// console.log("wordLevel : " + wordLevel);
|
|
|
|
|
// console.log("difficultyForLevel : " + difficultyForLevel);
|
|
|
|
|
var word = "";
|
|
|
|
|
var wordLength = 0;
|
|
|
|
|
var count = 0;
|
|
|
|
|
while(word == "" || !this.isValidWordForLevel(word, difficultyForLevel)) {
|
|
|
|
|
if(isKoreanTypingApp())
|
|
|
|
|
word = this.getRandomWord(this.koreanWordList[wordLevel]);
|
|
|
|
|
else
|
|
|
|
|
word = this.getRandomWord(this.englishWordList[wordLevel]);
|
|
|
|
|
|
|
|
|
|
// console.log(word);
|
|
|
|
|
count++;
|
|
|
|
|
if(count > 100) {
|
|
|
|
|
console.log("warning : infinity loop!!!");
|
|
|
|
|
return "???";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var word = "";
|
|
|
|
|
if(difficultyForLevel == ExtractWordManager.DIFFICULTY_EASY)
|
|
|
|
|
word = this.spliceRandomWord(this.easyWordList[wordLevel]);
|
|
|
|
|
else
|
|
|
|
|
word = this.spliceRandomWord(this.hardWordList[wordLevel]);
|
|
|
|
|
|
|
|
|
|
return word;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.getRandomWord = function(wordList) {
|
|
|
|
|
ExtractWordManager.prototype.spliceRandomWord = function(wordList) {
|
|
|
|
|
// console.log("slice before : " + wordList);
|
|
|
|
|
var randomIndex = Math.floor(Math.random() * wordList.length);
|
|
|
|
|
return wordList[randomIndex];
|
|
|
|
|
word = wordList.splice(randomIndex, 1);
|
|
|
|
|
// console.log("slice after : " + wordList);
|
|
|
|
|
return word;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.removeWord = function(wordLevel, word) {
|
|
|
|
|
ExtractWordManager.prototype.giveBackWord = function(word, wordLevel, difficultyForLevel) {
|
|
|
|
|
// console.log("remove : " + wordLevel + ", " + word);
|
|
|
|
|
|
|
|
|
|
// console.log("push before : " + this.easyWordList[wordLevel]);
|
|
|
|
|
if(difficultyForLevel == ExtractWordManager.DIFFICULTY_EASY)
|
|
|
|
|
word = this.easyWordList[wordLevel].push(word);
|
|
|
|
|
else
|
|
|
|
|
word = this.hardWordList[wordLevel].push(word);
|
|
|
|
|
// console.log("push after : " + this.easyWordList[wordLevel]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.getContents = function() {
|
|
|
|
|
return this.contents;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.add = function(arr) {
|
|
|
|
|
this.contents = this.contents.concat(arr);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.slice = function(start, end) {
|
|
|
|
|
this.contents = this.contents.slice(start, end);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.getShuffledArray = function(arr) {
|
|
|
|
|
return Phaser.ArrayUtils.shuffle(arr);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.fillLeftRightBasicKey = function() {
|
|
|
|
|
var length = this.contents.length;
|
|
|
|
|
// console.log(length);
|
|
|
|
|
|
|
|
|
|
for(var i = length - 1; i > -1; i--) {
|
|
|
|
|
var char = this.contents[i];
|
|
|
|
|
// console.log(char);
|
|
|
|
|
if(this.isKoreanConsonant(char)) {
|
|
|
|
|
this.contents.splice(i + 1, 0, "ㅓ");
|
|
|
|
|
} else if(this.isKoreanVowel(char)) {
|
|
|
|
|
this.contents.splice(i, 0, "ㄹ");
|
|
|
|
|
} else if(this.isEnglishLeftHand(char)) {
|
|
|
|
|
this.contents.splice(i + 1, 0, "j");
|
|
|
|
|
} else if(this.isEnglishRightHand(char)) {
|
|
|
|
|
this.contents.splice(i, 0, "f");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.isKoreanConsonant = function(char) {
|
|
|
|
|
if(char.length != 1)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
if(ExtractWordManager.KOREAN_LETTER_CHO.indexOf(char) > -1)
|
|
|
|
|
return true;
|
|
|
|
|
else if(ExtractWordManager.KOREAN_LETTER_JONG.indexOf(char) > -1)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.isKoreanVowel = function(char) {
|
|
|
|
|
if(char.length != 1)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
if(ExtractWordManager.KOREAN_LETTER_JUNG.indexOf(char) > -1)
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.isEnglishLeftHand = function(char) {
|
|
|
|
|
if(char.length != 1)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
if(ExtractWordManager.ENGLISH_LETTER_LEFT.indexOf(char) > -1)
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.isEnglishRightHand = function(char) {
|
|
|
|
|
if(char.length != 1)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
if(ExtractWordManager.ENGLISH_LETTER_RIGHT.indexOf(char) > -1)
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.makePracticeContents = function(arr, repeatCount) {
|
|
|
|
|
this.init();
|
|
|
|
|
this.add(arr);
|
|
|
|
|
for(var i = 0; i < repeatCount; i++) {
|
|
|
|
|
this.add(this.getShuffledArray(arr));
|
|
|
|
|
}
|
|
|
|
|
this.fillLeftRightBasicKey();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.prototype.makeTestContents = function(arr) {
|
|
|
|
|
this.init();
|
|
|
|
|
this.add(this.getShuffledArray(arr));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.shuffledArray = function(arr) {
|
|
|
|
|
return Phaser.ArrayUtils.shuffle(arr);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.KOREAN_LETTER_CHO = [
|
|
|
|
|
"ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ",
|
|
|
|
|
"ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.KOREAN_LETTER_JUNG = [
|
|
|
|
|
"ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ",
|
|
|
|
|
"ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ", "ㅞ", "ㅟ", "ㅠ", "ㅡ", "ㅢ", "ㅣ"
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.KOREAN_LETTER_JONG = [
|
|
|
|
|
"", "ㄱ", "ㄲ", "ㄳ", "ㄴ", "ㄵ", "ㄶ", "ㄷ", "ㄹ", "ㄺ",
|
|
|
|
|
"ㄻ", "ㄼ", "ㄽ", "ㄾ", "ㄿ", "ㅀ", "ㅁ", "ㅂ", "ㅄ", "ㅅ",
|
|
|
|
|
"ㅆ", "ㅇ", "ㅈ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.ENGLISH_LETTER_LEFT = [
|
|
|
|
|
"q", "w", "e", "r", "t",
|
|
|
|
|
"a", "s", "d", "f", "g",
|
|
|
|
|
"z", "x", "c", "v", "b"
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.ENGLISH_LETTER_RIGHT = [
|
|
|
|
|
"y", "u", "i", "o", "p",
|
|
|
|
|
"h", "j", "k", "l",
|
|
|
|
|
"n", "m"
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.DIFFICULTY_EASY = 0;
|
|
|
|
|
ExtractWordManager.DIFFICULTY_HARD = 1
|
|
|
|
|
|
|
|
|
|
ExtractWordManager.DIFFICULTY_EASY_KOREAN_WORD_LENGTH = 2;
|
|
|
|
|
ExtractWordManager.DIFFICULTY_EASY_ENGLISH_WORD_LENGTH = 3;
|
|
|
|
|
ExtractWordManager.DIFFICULTY_EASY_ENGLISH_WORD_LENGTH = 4;
|