Fix: slice and push word list

This commit is contained in:
2019-01-09 15:34:57 +09:00
parent f66c5eeabc
commit e3ea3eceb8
7 changed files with 108 additions and 179 deletions
+4 -2
View File
@@ -16,9 +16,11 @@ RecordUtil.getRecordValueText = function(record, appID) {
}
RecordUtil.getRecordUnit = function(appID) {
if(appID == 104)
if(appID == 104) // dodge
return " 초";
else if(appID < 100)
else if(appID == 52 || appID == 53) // word flyingsaucer
return " 점";
else if(appID < 100) // typing
return " 타";
else
return " 점";
+91 -173
View File
@@ -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;
@@ -273,7 +273,7 @@ FlyingSaucer.prototype.checkWord = function(inputText) {
if(this.word == inputText) {
this.gameLevelManager.clearWord(this.wordLevel, this.getLandingRatio());
this.extractWordManager.removeWord(this.wordLevel, this.word);
this.extractWordManager.giveBackWord(this.word, this.wordLevel, this.difficultyForLevel);
this.setActive(false);
this.setVisible(false);
this.setWord("");
@@ -35,6 +35,15 @@ var WordFlyingSaucer = {
(function() { this.gameOver(); }).bind(this)
);
// keyboard shortcut
this.keyboardShortcut = new KeyboardShortcut();
this.keyboardShortcut.addCallback(
Phaser.KeyCode.ESC, // keyCode
null, // keyDownHandler
(function() { this.back(); }).bind(this), // keyUpHandler
"keyboard_test" // callerClassName
);
// game stage
this.drawBackground();
+2 -1
View File
@@ -7,10 +7,11 @@ var englishBasicWordList = [
"all",
"alaska",
"salad",
"salal",
"dash",
"sag",
"lash",
"has",
"dad",
"falls"
"falla"
];
@@ -67,7 +67,6 @@ var koreanLeftUpperWordList = [
"장기",
"장난감",
"저리다",
"적이",
"정어리",
"젖니",
"지다",
+1 -1
View File
@@ -42,7 +42,7 @@
<script src="../../game/lib/global/global_variables.js?update_date=191224"></script>
<!-- library source files -->
<!-- <script src="../../game/lib/keyboard_shortcut.js"></script> -->
<script src="../../game/lib/keyboard_shortcut.js"></script>
<script src="../../game/lib/util/string_util.js"></script>
<script src="../../game/lib/util/number_util.js"></script>
<script src="../../game/lib/util/record_util.js"></script>