From e3ea3eceb8d24b1604f48569a2a0213acc17f43a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=A2=E1=84=91=E1=85=B3=E1=86=AF=20=E1=84=82?= =?UTF-8?q?=E1=85=A9=E1=84=90=E1=85=B3=E1=84=87=E1=85=AE=E1=86=A8?= Date: Wed, 9 Jan 2019 15:34:57 +0900 Subject: [PATCH] Fix: slice and push word list --- src/game/lib/util/record_util.js | 6 +- src/game/typing/lib/extract_word_manager.js | 264 ++++++------------ .../typing/word_flyingsaucer/flyingsaucer.js | 2 +- src/game/typing/word_flyingsaucer/game.js | 9 + src/game/typing/word_list/english_basic.js | 3 +- .../typing/word_list/korean_left_upper.js | 1 - src/web/client/word_flyingsaucer.html | 2 +- 7 files changed, 108 insertions(+), 179 deletions(-) diff --git a/src/game/lib/util/record_util.js b/src/game/lib/util/record_util.js index 7b68b7a..dd1dd9f 100644 --- a/src/game/lib/util/record_util.js +++ b/src/game/lib/util/record_util.js @@ -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 " 점"; diff --git a/src/game/typing/lib/extract_word_manager.js b/src/game/typing/lib/extract_word_manager.js index 75585b0..6cdce49 100644 --- a/src/game/typing/lib/extract_word_manager.js +++ b/src/game/typing/lib/extract_word_manager.js @@ -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; \ No newline at end of file +ExtractWordManager.DIFFICULTY_EASY_ENGLISH_WORD_LENGTH = 4; \ No newline at end of file diff --git a/src/game/typing/word_flyingsaucer/flyingsaucer.js b/src/game/typing/word_flyingsaucer/flyingsaucer.js index a8fc4be..fa5f3aa 100644 --- a/src/game/typing/word_flyingsaucer/flyingsaucer.js +++ b/src/game/typing/word_flyingsaucer/flyingsaucer.js @@ -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(""); diff --git a/src/game/typing/word_flyingsaucer/game.js b/src/game/typing/word_flyingsaucer/game.js index 16ba27f..1bcfe59 100644 --- a/src/game/typing/word_flyingsaucer/game.js +++ b/src/game/typing/word_flyingsaucer/game.js @@ -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(); diff --git a/src/game/typing/word_list/english_basic.js b/src/game/typing/word_list/english_basic.js index 15b9898..a38e59b 100644 --- a/src/game/typing/word_list/english_basic.js +++ b/src/game/typing/word_list/english_basic.js @@ -7,10 +7,11 @@ var englishBasicWordList = [ "all", "alaska", "salad", + "salal", "dash", "sag", "lash", "has", "dad", - "falls" + "falla" ]; diff --git a/src/game/typing/word_list/korean_left_upper.js b/src/game/typing/word_list/korean_left_upper.js index 2aef3f3..24ee2eb 100644 --- a/src/game/typing/word_list/korean_left_upper.js +++ b/src/game/typing/word_list/korean_left_upper.js @@ -67,7 +67,6 @@ var koreanLeftUpperWordList = [ "장기", "장난감", "저리다", - "적이", "정어리", "젖니", "지다", diff --git a/src/web/client/word_flyingsaucer.html b/src/web/client/word_flyingsaucer.html index f1f619a..c4c2fbb 100644 --- a/src/web/client/word_flyingsaucer.html +++ b/src/web/client/word_flyingsaucer.html @@ -42,7 +42,7 @@ - +