Commit 4a3c47cb authored by 18신대성's avatar 18신대성

이건 진짜 프로토타입이다.

parents 2e89020e f8075b28
......@@ -9,6 +9,8 @@
<script src="js/WordSpace.js"></script>
<script src="js/WordObject.js"></script>
<script src="js/WordReader.js"></script>
<script src="js/CSVParsing.js"></script>
<script src="js/SelectWord.js"></script>
</head>
<body>
<script src="js/Main.js"></script>
......
var grade3Array = grade3Array || {};
var grade2Array = grade2Array || {};
var grade1Array = grade1Array || {};
var grade0Array = grade0Array || {};
var CSVParsing = CSVParsing || {};
function CSVParse($data) {
var allRows = $data.split('\n')
CSVParsing.gradeArray = {
grade3: [], //3급
grade2: [], //2급
grade1: [], //1급
grade0: [] //특급
}
CSVParsing.loadText = function(scene) {
scene.load.text('parseword','assets/KKUTU_word.txt');
}
CSVParsing.CSVParse = function(scene) {
var data = scene.cache.text.get('parseword');
console.log('xx' + data);
var allRows = data.split('\n')
for(var singleRow = 0; singleRow < allRows.length; singleRow++)
{
var typing;
var grade;
typing = WordReader.getWordTyping(allRows[singleRow]);
typing = WordReader.getWordTyping(allRows[singleRow].trim());
grade = WordReader.getWordGrade(typing);
if(grade==3) {
grade3Array.push(allRows[singleRow]);
CSVParsing.gradeArray.grade3.push(allRows[singleRow].trim());
} else if(grade==2) {
grade2Array.push(allRows[singleRow]);
CSVParsing.gradeArray.grade2.push(allRows[singleRow].trim());
} else if(grade==1) {
grade1Array.push(allRows[singleRow]);
CSVParsing.gradeArray.grade1.push(allRows[singleRow].trim());
} else {
grade0Array.push(allRows[singleRow]);
CSVParsing.gradeArray.grade0.push(allRows[singleRow].trim());
}
}
}
\ No newline at end of file
......@@ -6,8 +6,10 @@ Input.convInput = ''; // converted input
Input.isShifted = false;
Input.pressCount = 0;
Input.justPressed = '';
Input.maxInput = 5;
Input.attackMode = false;
Input.attackOption = null;
Input.reset = function()
{
......@@ -62,6 +64,7 @@ Input.convert = function()
if (this.input[i] >= ''.charCodeAt(0)) vowels.push(krInput.length - 1); // 모음일 경우
}
}
if (vowels.length > 5) return false;
//console.log(vowels);
//console.log(krInput);
......@@ -163,6 +166,7 @@ Input.convert = function()
}
}
}
return true;
//console.log('_____end_convert_____');
}
......@@ -291,8 +295,9 @@ Input.inputField =
});
scene.input.keyboard.on('keydown-ENTER', function()
{
if (Input.attackMode) WordSpace.attack(Input.convInput);
if (Input.attackMode) WordSpace.attack(Input.convInput, Input.attackOption.wordGrade);
else WordSpace.findWord(Input.convInput);
WordSpace.resetGameOverTimer();
Input.reset();
});
// upside 10 keys
......@@ -352,10 +357,13 @@ Input.pushInput = function(inputKey)
}
}
else output = inputKey.charCodeAt(0);
Input.input.push(output);
this.input.push(output);
//console.log(Input.input);
Input.convert();
Input.inputField.text.setText(Input.convInput);
this.pressCount++;
if (!this.convert() || this.convInput.length > this.maxInput)
{
this.input.pop();
this.convert();
}
this.inputField.text.setText(Input.convInput);
}
}
\ No newline at end of file
var SelectWord = SelectWord || [];
SelectWord.startWordList = [];
SelectWord.selectWord = function(grade) {
var selection = "";
switch(grade)
{
case 3: selection = Phaser.Utils.Array.GetRandom(CSVParsing.gradeArray.grade3); break;
case 2: selection = Phaser.Utils.Array.GetRandom(CSVParsing.gradeArray.grade2); break;
case 1: selection = Phaser.Utils.Array.GetRandom(CSVParsing.gradeArray.grade1); break;
case 0: selection = Phaser.Utils.Array.GetRandom(CSVParsing.gradeArray.grade0); break;
default: break;
}
return selection;
}
\ No newline at end of file
......@@ -7,28 +7,24 @@ class WordObject
//this.wordText = Input.removeConVow(text);
this.wordTyping = WordReader.getWordTyping(this.wordText);
this.wordGrade = WordReader.getWordGrade(this.wordTyping);
this.wordWeight = (function(_wordGrade)
{
var temp = 0;
temp = _wordGrade == 3 ? 3 :
_wordGrade == 2 ? 5 :
_wordGrade == 1 ? 7 : 10;
return temp;
})(this.wordGrade);
this.wordWeight = WordReader.getWordWeight(this.wordGrade);
//console.log("wordTyping : " + this.wordTyping + '\n' + "wordGrade : " + this.wordGrade + '\n' + "wordWeight : " + this.wordWeight + '\n');
this.wordSpeed = 1;
//alert("wordTyping : " + this.wordTyping + '\n' + "wordGrade : " + this.wordGrade + '\n' + "wordWeight : " + this.wordWeight + '\n');
}
instantiate(scene)
{
var random = WordSpace.getSpawnPoint();
this.physicsObj = scene.physics.add.sprite(random.x, random.y, 'wordBgr' + this.wordGrade + '_' + Math.min(Math.max(2, this.wordText.length), 6));
this.physicsObj.body.bounce.set(0.5);
this.wordObj = scene.add.text(random.x, random.y, this.wordText, {fontSize: '18pt', fontFamily: '"궁서", 궁서체, serif'}).setColor('#000000').setOrigin(0.5,0.5);
this.physicsObj = scene.physics.add.sprite(random.x, random.y, 'wordBgr' + this.wordGrade + '_' + Math.min(Math.max(2, this.wordText.length), 6)).setMass(this.wordWeight);
this.wordObj = scene.add.text(random.x, random.y, this.wordText,
{
fontSize: (this.wordWeight + 10) +'pt',
fontFamily: '"궁서", 궁서체, serif',
fontStyle: (this.wordWeight > 5 ? 'bold' : '')
}).setColor('#000000').setOrigin(0.5,0.5);
WordSpace.totalWeight += this.wordWeight;
WordSpace.setGameOverTimer();
console.log("Total weight : " + WordSpace.totalWeight);
//console.log("Total weight : " + WordSpace.totalWeight);
}
destroy()
......@@ -51,7 +47,5 @@ class WordObject
this.wordObj.setPosition(this.physicsObj.x, this.physicsObj.y);
}
getWordWeight() { return this.wordWeight; }
isEqualObject(_generationCode) { return _generationCode === this.generationCode; }
}
\ No newline at end of file
......@@ -51,3 +51,10 @@ WordReader.getWordGrade = function(_wordTyping)
7 <= _wordTyping && _wordTyping < 12 ? 2 :
12 <= _wordTyping && _wordTyping < 17 ? 1 : 0;
}
WordReader.getWordWeight = function(_wordGrade)
{
return _wordGrade == 3 ? 3 :
_wordGrade == 2 ? 5 :
_wordGrade == 1 ? 7 : 10;
}
\ No newline at end of file
var WordSpace = WordSpace || {};
WordSpace.gameSceneForTest = null; // for test
// for test
WordSpace.gameSceneForTest = null;
WordSpace.weightTextObjForTest = null;
WordSpace.isImageLoaded = false;
WordSpace.nextWordCode = 0;
WordSpace.totalWeight = 0; //현재 단어 무게 총합
WordSpace.brainCapacity = 200; //수용 가능한 단어 무게 최대치
WordSpace.defeatTime = 3000;
WordSpace.brainCapacity = 100; //수용 가능한 단어 무게 최대치
WordSpace.defeatTime = 5000;
WordSpace.gameOverTimer = null; //게임 오버 판정 타이머
WordSpace.isTimerOn = false;
......@@ -60,6 +62,14 @@ WordSpace.attackGauge =
},
pauseCycle: function(bool) {this.currentCycle.paused = bool;},
// showValue: 아래쪽에 바의 길이로 게이지 표시, 색으로 게이지의 강도 표현
getAttackOption: function()
{
if (this.value < 3) return {wordCount: 0, wordGrade: -1};
else if (this.value < 5) return {wordCount: 2, wordGrade: 3};
else if (this.value < 7) return {wordCount: 3, wordGrade: 2};
else if (this.value < 10) return {wordCount: 4, wordGrade: 1};
else return {wordCount: 5, wordGrade: 0};
}
}
WordSpace.wordCycle =
......@@ -74,9 +84,8 @@ WordSpace.wordCycle =
delay: _delay,
callback: function()
{
let wordIdx = Math.floor(Math.random() * WordSpace.wordCycle.wordList.length);
WordSpace.generateWord(this, WordSpace.wordCycle.wordList[wordIdx]);
WordSpace.wordCycle.resetCycle(this, WordSpace.wordCycle.delay - 50);
let wordIdx = Math.floor(Math.random() * 4);
WordSpace.generateWord(this, SelectWord.selectWord(wordIdx));
},
callbackScope: scene,
loop: true
......@@ -90,13 +99,6 @@ WordSpace.wordCycle =
this.currentCycle = scene.time.addEvent(option);
}
},
wordList: // 미개한 버전, 심심해서 만들어봄
[
'맥주', '게임', '넥슨', '광팡', '팡광', '샌즈', '군머', '작혼', '육회', '공격',
'블루홀', '동묘얖', '치또이', '컴퓨터', '네빔띤', '소고기', '비넴띤', '비빔면',
'네오위즈', '기기괴피', '스테이크', '상장폐지', '상장폐거',
'탑블레이드', '엔씨소프트', '가스레인지', '괄도네빔띤'
]
}
WordSpace.loadImage = function(scene)
......@@ -112,11 +114,17 @@ WordSpace.loadImage = function(scene)
}
}
WordSpace.gameSceneForTest = scene; // for test
WordSpace.weightTextObjForTest = scene.add.text(100, 75, '뇌의 무게: (현재) 0 / 100 (전체)').setDepth(10).setColor('#000000');
}
WordSpace.generateWord = function(scene, wordText)
WordSpace.generateWord = function(scene, wordText, grade)
{
word = new WordObject(wordText);
if (typeof grade != 'undefined')
{
word.wordGrade = grade;
word.wordWeight = WordReader.getWordWeight(grade);
}
word.instantiate(scene);
WordSpace.wordGroup.push(word);
WordSpace.wordForcedGroup.push(word);
......@@ -127,11 +135,13 @@ WordSpace.generateWord = function(scene, wordText)
object1.topObj.attract();
});
WordSpace.wordPhysicsGroup.add(word.physicsObj);
WordSpace.weightTextObjForTest.setText('뇌의 무게: (현재) '+WordSpace.totalWeight+' / 100 (전체)');
}
function gameOver()
{
this.wordCycle.currentCycle.paused = true;
WordSpace.wordCycle.currentCycle.remove();
//To Do
console.log('defeat');
}
......@@ -142,11 +152,27 @@ WordSpace.setGameOverTimer = function()
//만약 현재 단어 무게 총합이 뇌 용량보다 크다면 타이머를 시작함
if(this.brainCapacity < this.totalWeight && !this.isTimerOn)
{
this.gameOverTimer = setTimeout(gameOver.bind(this), this.defeatTime);
isTimerOn = true;
var timer =
{
delay: this.defeatTime,
callback: function()
{
gameOver();
},
callbackScope: WordSpace.gameSceneForTest,
loop: false
}
this.isTimerOn = true;
this.gameOverTimer = WordSpace.gameSceneForTest.time.addEvent(timer);
}
}
WordSpace.resetGameOverTimer = function()
{
if(this.brainCapacity >= this.totalWeight && this.isTimerOn)
this.gameOverTimer.remove();
}
WordSpace.findWord = function(wordText)
{
var found = WordSpace.wordGroup.filter(function(element)
......@@ -173,7 +199,8 @@ WordSpace.findWord = function(wordText)
else if (wordText === '공격' && WordSpace.attackGauge.value > 3) // 공격모드 진입.
{
console.log('attack mode');
// 이부분에서 최대 단어수 결정
Input.attackOption = this.attackGauge.getAttackOption();
Input.maxInput = Input.attackOption.wordCount;
Input.attackMode = true;
WordSpace.attackGauge.pauseCycle(true);
}
......@@ -183,12 +210,12 @@ WordSpace.findWord = function(wordText)
}
}
WordSpace.attack = function(wordText)
WordSpace.attack = function(wordText, grade)
{
if (wordText != '')
{
console.log('attack ' + wordText);
WordSpace.generateWord(WordSpace.gameSceneForTest, wordText); // for test
console.log('attack ' + wordText + ', grade: ' + grade);
WordSpace.generateWord(WordSpace.gameSceneForTest, wordText, grade); // for test
// 이부분에서 게이지에 따라 급수 결정
// 이부분은 서버 잘써야함
WordSpace.attackGauge.resetValue();
......@@ -197,6 +224,7 @@ WordSpace.attack = function(wordText)
{
WordSpace.attackGauge.cutValue(0.3);
}
Input.maxInput = 5;
Input.attackMode = false;
WordSpace.attackGauge.pauseCycle(false);
}
\ No newline at end of file
......@@ -24,6 +24,7 @@ function preload()
BackGround.loadImage(this);
WordSpace.loadImage(this);
Input.inputField.loadImage(this);
CSVParsing.loadText(this);
}
function create()
......@@ -33,6 +34,7 @@ function create()
WordSpace.wordPhysicsGroup = this.physics.add.group();
WordSpace.wordCycle.resetCycle(this, 3000);
WordSpace.attackGauge.resetCycle(this);
CSVParsing.CSVParse(this);
}
function update()
......
function selectstartWord()
{
var i;
var grade3List = [];
var grade2List = [];
var grade1List = [];
for(i=0;i<5;i++)
{
grade3List[i] = Phaser.Utils.Array.GetRandom(CSVParsing.grade3Array);
}
for(i=0;i<4;i++)
{
grade2List[i] = Phaser.Utils.Array.GetRandom(CSVParsing.grade2Array);
}
grade1List[0] = Phaser.Utils.Array.GetRandom(CSVParsing.grade1Array);
}
function selectWord()
{
var GradeProb = []; //default: ?
var rand = Math.random();
var selection;
if(rand<GradeProb[0]) {
//3급 단어 생성
selection = Phaser.Utils.Array.GetRandom(CSVParsing.grade3Array);
} else if(rand>=GradeProb[0] && rand<GradeProb[1]) {
//2급 단어 생성
selection = Phaser.Utils.Array.GetRandom(CSVParsing.grade2Array);
} else if(rand>=GradeProb[1] && rand<GradeProb[2]) {
//1급 단어 생성
selection = Phaser.Utils.Array.GetRandom(CSVParsing.grade1Array);
} else {
//특급 단어 생성
selection = Phaser.Utils.Array.GetRandom(CSVParsing.grade0Array);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment