Commit d789252f authored by 16이지혜's avatar 16이지혜

이쯤되면 프로토타입 씹가능인듯

parents b1f21e41 19715838
...@@ -8,21 +8,11 @@ BackGround.loadImage = function(scene) ...@@ -8,21 +8,11 @@ BackGround.loadImage = function(scene)
{ {
if (!this.isImageLoaded) if (!this.isImageLoaded)
{ {
scene.load.image('brainGround0', 'assets/platform.png'); // horizontal scene.load.image('brainGround0', 'assets/placeholder/playback.png');
scene.load.image('brainGround1', 'assets/platform2.png'); // vertical
} }
} }
BackGround.drawBrain = function(scene) BackGround.drawBrain = function(scene)
{ {
brains = scene.physics.add.staticGroup(); brains = scene.add.sprite(640, 360, 'brainGround0').setDisplaySize(1282, 722).setDepth(1);
brains.create(400, 500, 'brainGround0').setScale(1.5).refreshBody();
brains.create(400, 100, 'brainGround0').setScale(1.5).refreshBody();
brains.create(100, 300, 'brainGround1').setScale(0.5).refreshBody();
brains.create(700, 300, 'brainGround1').setScale(0.5).refreshBody();
brains.immovable = true;
this.brainGroup = brains;
} }
\ No newline at end of file
var grade3Array = new Array(); var grade3Array = grade3Array || {};
var grade2Array = new Array(); var grade2Array = grade2Array || {};
var grade1Array = new Array(); var grade1Array = grade1Array || {};
var grade0Array = new Array(); var grade0Array = grade0Array || {};
function CSVParse($data) { function CSVParse($data) {
var allRows = $data.split('\n') var allRows = $data.split('\n')
......
...@@ -7,6 +7,8 @@ Input.isShifted = false; ...@@ -7,6 +7,8 @@ Input.isShifted = false;
Input.pressCount = 0; Input.pressCount = 0;
Input.justPressed = ''; Input.justPressed = '';
Input.attackMode = false;
Input.reset = function() Input.reset = function()
{ {
Input.input = []; Input.input = [];
...@@ -61,6 +63,7 @@ Input.convert = function() ...@@ -61,6 +63,7 @@ Input.convert = function()
} }
} }
//console.log(vowels); //console.log(vowels);
//console.log(krInput);
this.convInput = ""; this.convInput = "";
let vowelIdx = 0; let vowelIdx = 0;
...@@ -70,10 +73,20 @@ Input.convert = function() ...@@ -70,10 +73,20 @@ Input.convert = function()
for (let i = 0; i <= vowels[vowelIdx] - 2; i++) this.convInput += krInput[i]; for (let i = 0; i <= vowels[vowelIdx] - 2; i++) this.convInput += krInput[i];
while (vowelIdx < vowels.length) while (vowelIdx < vowels.length)
{ {
if (krInput[vowels[vowelIdx] - 1] >= ''.charCodeAt(0)) // 모음 앞에 모음이 있을때 if (vowels[vowelIdx] - 1 < 0 || krInput[vowels[vowelIdx] - 1].charCodeAt(0) >= ''.charCodeAt(0)) // 모음 앞이 비거나 모음이 있을때
{ {
this.convInput += krInput[vowels[vowelIdx]]; if (vowelIdx + 1 < vowels.length) // 다음 모음이 있을때
vowelIdx++; {
this.convInput += krInput[vowels[vowelIdx]];
for (let i = vowels[vowelIdx] + 1; i <= vowels[vowelIdx + 1] - 2; ++i) this.convInput += krInput[i];
++vowelIdx;
}
else // 다음 모음이 없을때
{
this.convInput += krInput[vowels[vowelIdx]];
for (let i = vowels[vowelIdx] + 1; i < krInput.length; i++) this.convInput += krInput[i];
++vowelIdx;
}
} }
else // 모음 앞에 자음이 있을때 else // 모음 앞에 자음이 있을때
{ {
...@@ -92,27 +105,27 @@ Input.convert = function() ...@@ -92,27 +105,27 @@ Input.convert = function()
last = combLast; last = combLast;
this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last)); this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last));
for (var i = vowels[vowelIdx] + 3; i < krInput.length; i++) this.convInput += krInput[i]; for (var i = vowels[vowelIdx] + 3; i < krInput.length; i++) this.convInput += krInput[i];
vowelIdx++; ++vowelIdx;
} }
else // 뒤의 두 자음을 합칠수 없을때 else // 뒤의 두 자음을 합칠수 없을때
{ {
last = this.convertToLast(krInput[vowels[vowelIdx] + 1]); last = this.convertToLast(krInput[vowels[vowelIdx] + 1]);
this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last)); this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last));
for (var i = vowels[vowelIdx] + 2; i < krInput.length; i++) this.convInput += krInput[i]; for (var i = vowels[vowelIdx] + 2; i < krInput.length; i++) this.convInput += krInput[i];
vowelIdx++; ++vowelIdx;
} }
} }
else // 다다음 자음이 없을때 else // 다다음 자음이 없을때
{ {
last = this.convertToLast(krInput[vowels[vowelIdx] + 1]); last = this.convertToLast(krInput[vowels[vowelIdx] + 1]);
this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last)); this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last));
vowelIdx++; ++vowelIdx;
} }
} }
else // 다음 글자가 없을때 else // 다음 글자가 없을때
{ {
this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last)); this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last));
vowelIdx++; ++vowelIdx;
} }
} }
else // 다음 모음이 있을때 else // 다음 모음이 있을때
...@@ -120,13 +133,13 @@ Input.convert = function() ...@@ -120,13 +133,13 @@ Input.convert = function()
if (vowels[vowelIdx + 1] - vowels[vowelIdx] <= 2) // 다음 모음 사이에 자음이 0개거나 1개 if (vowels[vowelIdx + 1] - vowels[vowelIdx] <= 2) // 다음 모음 사이에 자음이 0개거나 1개
{ {
this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last)); this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last));
vowelIdx++; ++vowelIdx;
} }
else if (vowels[vowelIdx + 1] - vowels[vowelIdx] === 3) // 다음 모음 사이에 자음이 2개 else if (vowels[vowelIdx + 1] - vowels[vowelIdx] === 3) // 다음 모음 사이에 자음이 2개
{ {
last = this.convertToLast(krInput[vowels[vowelIdx] + 1]); last = this.convertToLast(krInput[vowels[vowelIdx] + 1]);
this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last)); this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last));
vowelIdx++; ++vowelIdx;
} }
else // 다음 모음 사이에 자음이 3개 이상 else // 다음 모음 사이에 자음이 3개 이상
{ {
...@@ -136,21 +149,21 @@ Input.convert = function() ...@@ -136,21 +149,21 @@ Input.convert = function()
last = combLast; last = combLast;
this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last)); this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last));
for (var i = vowels[vowelIdx] + 3; i < vowels[vowelIdx + 1] - 1; i++) this.convInput += krInput[i]; for (var i = vowels[vowelIdx] + 3; i < vowels[vowelIdx + 1] - 1; i++) this.convInput += krInput[i];
vowelIdx++; ++vowelIdx;
} }
else // 뒤의 두 자음을 합칠수 없을때 else // 뒤의 두 자음을 합칠수 없을때
{ {
last = this.convertToLast(krInput[vowels[vowelIdx] + 1]); last = this.convertToLast(krInput[vowels[vowelIdx] + 1]);
this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last)); this.convInput += String.fromCharCode(this.convertToCharCode(first, middle, last));
for (var i = vowels[vowelIdx] + 2; i < vowels[vowelIdx + 1] - 1; i++) this.convInput += krInput[i]; for (var i = vowels[vowelIdx] + 2; i < vowels[vowelIdx + 1] - 1; i++) this.convInput += krInput[i];
vowelIdx++; ++vowelIdx;
} }
} }
} }
} }
} }
} }
console.log('_____end_convert_____'); //console.log('_____end_convert_____');
} }
Input.convertToLast = function(word) Input.convertToLast = function(word)
...@@ -260,8 +273,8 @@ Input.inputField = ...@@ -260,8 +273,8 @@ Input.inputField =
{ {
generate: function(scene) generate: function(scene)
{ {
this.background = scene.add.sprite(400, 500, 'inputFieldBackground').setScale(0.2); this.background = scene.add.sprite(640, 550, 'inputfield').setDepth(10);
this.text = scene.add.text(400, 500, "안녕하세요", {font: '15pt 궁서'}).setOrigin(0.5, 0.5).setColor('#000000'); this.text = scene.add.text(640, 550, "안녕하세요", {font: '25pt 궁서'}).setOrigin(0.5, 0.5).setColor('#000000').setDepth(10);
scene.input.keyboard.on('keyup', function() {Input.pressCount--; Input.justPressed = ''}) scene.input.keyboard.on('keyup', function() {Input.pressCount--; Input.justPressed = ''})
scene.input.keyboard.on('keydown-SHIFT', function() {Input.isShifted = true}); scene.input.keyboard.on('keydown-SHIFT', function() {Input.isShifted = true});
...@@ -278,7 +291,8 @@ Input.inputField = ...@@ -278,7 +291,8 @@ Input.inputField =
}); });
scene.input.keyboard.on('keydown-ENTER', function() scene.input.keyboard.on('keydown-ENTER', function()
{ {
WordSpace.findWord(Input.convInput); if (Input.attackMode) WordSpace.attack(Input.convInput);
else WordSpace.findWord(Input.convInput);
Input.reset(); Input.reset();
}); });
// upside 10 keys // upside 10 keys
...@@ -313,7 +327,7 @@ Input.inputField = ...@@ -313,7 +327,7 @@ Input.inputField =
}, },
loadImage: function(scene) loadImage: function(scene)
{ {
scene.load.image('inputFieldBackground', 'assets/inputFieldBackground.png'); scene.load.image('inputfield', 'assets/placeholder/inputfield.png');
} }
} }
...@@ -339,7 +353,7 @@ Input.pushInput = function(inputKey) ...@@ -339,7 +353,7 @@ Input.pushInput = function(inputKey)
} }
else output = inputKey.charCodeAt(0); else output = inputKey.charCodeAt(0);
Input.input.push(output); Input.input.push(output);
console.log(Input.input ); //console.log(Input.input);
Input.convert(); Input.convert();
Input.inputField.text.setText(Input.convInput); Input.inputField.text.setText(Input.convInput);
this.pressCount++; this.pressCount++;
......
...@@ -15,9 +15,6 @@ class WordObject ...@@ -15,9 +15,6 @@ class WordObject
_wordGrade == 1 ? 7 : 10; _wordGrade == 1 ? 7 : 10;
return temp; return temp;
})(this.wordGrade); })(this.wordGrade);
WordSpace.totalWeight += this.wordWeight;
WordSpace.setGameOverTimer();
console.log("Total weight : " + WordSpace.totalWeight);
//console.log("wordTyping : " + this.wordTyping + '\n' + "wordGrade : " + this.wordGrade + '\n' + "wordWeight : " + this.wordWeight + '\n'); //console.log("wordTyping : " + this.wordTyping + '\n' + "wordGrade : " + this.wordGrade + '\n' + "wordWeight : " + this.wordWeight + '\n');
this.wordSpeed = 1; this.wordSpeed = 1;
//alert("wordTyping : " + this.wordTyping + '\n' + "wordGrade : " + this.wordGrade + '\n' + "wordWeight : " + this.wordWeight + '\n'); //alert("wordTyping : " + this.wordTyping + '\n' + "wordGrade : " + this.wordGrade + '\n' + "wordWeight : " + this.wordWeight + '\n');
...@@ -25,16 +22,19 @@ class WordObject ...@@ -25,16 +22,19 @@ class WordObject
instantiate(scene) instantiate(scene)
{ {
var randomX = Phaser.Math.Between(100, 700); var random = WordSpace.getSpawnPoint();
this.physicsObj = scene.physics.add.sprite(randomX, 100, 'wordBackground').setScale(0.3); 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.physicsObj.body.bounce.set(0.5);
this.wordObj = scene.add.text(randomX, 100, this.wordText, {fontFamily: '"궁서", 궁서체, serif'}).setColor('#000000'); this.wordObj = scene.add.text(random.x, random.y, this.wordText, {fontSize: '18pt', fontFamily: '"궁서", 궁서체, serif'}).setColor('#000000').setOrigin(0.5,0.5);
this.wordObj.setOrigin(0.5,0.5); WordSpace.totalWeight += this.wordWeight;
WordSpace.setGameOverTimer();
console.log("Total weight : " + WordSpace.totalWeight);
} }
destroy() destroy()
{ {
console.log(this.generationCode + ': ' + this.wordText + ' destroyed'); console.log(this.generationCode + ': ' + this.wordText + ' destroyed');
WordSpace.totalWeight -= this.wordWeight;
this.wordObj.destroy(); this.wordObj.destroy();
const groupIdx = WordSpace.wordGroup.findIndex(function(item) {return this.isEqualObject(item.generationCode)}, this); const groupIdx = WordSpace.wordGroup.findIndex(function(item) {return this.isEqualObject(item.generationCode)}, this);
if (groupIdx > -1) WordSpace.wordGroup.splice(groupIdx, 1); if (groupIdx > -1) WordSpace.wordGroup.splice(groupIdx, 1);
......
var WordSpace = WordSpace || {}; var WordSpace = WordSpace || {};
WordSpace.gameSceneForTest = null; // for test
WordSpace.isImageLoaded = false; WordSpace.isImageLoaded = false;
WordSpace.nextWordCode = 0; WordSpace.nextWordCode = 0;
WordSpace.totalWeight = 0; //현재 단어 무게 총합 WordSpace.totalWeight = 0; //현재 단어 무게 총합
WordSpace.brainCapacity = 20; //수용 가능한 단어 무게 최대치 WordSpace.brainCapacity = 200; //수용 가능한 단어 무게 최대치
WordSpace.defeatTime = 3000; WordSpace.defeatTime = 3000;
WordSpace.gameOverTimer = null; //게임 오버 판정 타이머 WordSpace.gameOverTimer = null; //게임 오버 판정 타이머
WordSpace.isTimerOn = false; WordSpace.isTimerOn = false;
...@@ -13,7 +15,16 @@ WordSpace.wordGroup = []; ...@@ -13,7 +15,16 @@ WordSpace.wordGroup = [];
WordSpace.wordForcedGroup = []; WordSpace.wordForcedGroup = [];
WordSpace.wordPhysicsGroup = null; WordSpace.wordPhysicsGroup = null;
WordSpace.gravityPoint = {x: 400, y: 300}; WordSpace.gravityPoint = {x: 640, y: 300};
WordSpace.getSpawnPoint = function()
{
let xLen = 600;
let yLen = 300;
const angle = Math.random() * Math.PI * 2;
let _x = xLen * Math.cos(angle) + this.gravityPoint.x;
let _y = yLen * Math.sin(angle) + this.gravityPoint.y;
return {x:_x, y:_y};
}
WordSpace.attackGauge = WordSpace.attackGauge =
{ {
...@@ -45,9 +56,9 @@ WordSpace.attackGauge = ...@@ -45,9 +56,9 @@ WordSpace.attackGauge =
}; };
this.currentCycle = scene.time.addEvent(option); this.currentCycle = scene.time.addEvent(option);
this.text = scene.add.text(100,100,'게이지: ' + this.value.toFixed(1)).setColor('#ffffff'); this.text = scene.add.text(100,100,'게이지: ' + this.value.toFixed(1)).setDepth(10).setColor('#000000');
}, },
pauseCycle: function(bool) {this.currentCycle.paused = bool;} pauseCycle: function(bool) {this.currentCycle.paused = bool;},
// showValue: 아래쪽에 바의 길이로 게이지 표시, 색으로 게이지의 강도 표현 // showValue: 아래쪽에 바의 길이로 게이지 표시, 색으로 게이지의 강도 표현
} }
...@@ -61,7 +72,8 @@ WordSpace.wordCycle = ...@@ -61,7 +72,8 @@ WordSpace.wordCycle =
delay: _delay, delay: _delay,
callback: function() callback: function()
{ {
WordSpace.generateWord(this) let wordIdx = Math.floor(Math.random() * WordSpace.wordCycle.wordList.length);
WordSpace.generateWord(this, WordSpace.wordCycle.wordList[wordIdx]);
}, },
callbackScope: scene, callbackScope: scene,
loop: true loop: true
...@@ -74,29 +86,40 @@ WordSpace.wordCycle = ...@@ -74,29 +86,40 @@ WordSpace.wordCycle =
{ {
this.currentCycle = scene.time.addEvent(option); this.currentCycle = scene.time.addEvent(option);
} }
} },
wordList: // 미개한 버전, 심심해서 만들어봄
[
'솽젠커', '통관', '맥주땡겨', '자료구조', '팡광우럮다'
]
} }
WordSpace.loadImage = function(scene) WordSpace.loadImage = function(scene)
{ {
if (!this.isImageLoaded) if (!this.isImageLoaded)
{ {
scene.load.image('wordBackground', 'assets/wordBackground.png'); for (let i = 0; i < 4; i++)
{
for (let j = 2; j < 7; j++)
{
scene.load.image(('wordBgr' + i + '_' + j), ('assets/placeholder/'+i + '_' + j + '.png'));
}
}
} }
WordSpace.gameSceneForTest = scene; // for test
} }
WordSpace.generateWord = function(scene) WordSpace.generateWord = function(scene, wordText)
{ {
word = new WordObject("솽젠커"); word = new WordObject(wordText);
word.instantiate(scene); word.instantiate(scene);
WordSpace.wordGroup.push(word); WordSpace.wordGroup.push(word);
WordSpace.wordForcedGroup.push(word); WordSpace.wordForcedGroup.push(word);
word.physicsObj.topObj = word; word.physicsObj.topObj = word;
scene.physics.add.collider(word.physicsObj, WordSpace.wordPhysicsGroup, function(object1) scene.physics.add.collider(word.physicsObj, WordSpace.wordPhysicsGroup, function(object1)
{ {
if (object1.topObj.wordSpeed > 0.5) object1.topObj.wordSpeed = 0.05; object1.topObj.wordSpeed = 0.1;
object1.topObj.attract();
}); });
scene.physics.add.collider(word.physicsObj, BackGround.brainGroup);
WordSpace.wordPhysicsGroup.add(word.physicsObj); WordSpace.wordPhysicsGroup.add(word.physicsObj);
} }
...@@ -118,15 +141,20 @@ WordSpace.setGameOverTimer = function() ...@@ -118,15 +141,20 @@ WordSpace.setGameOverTimer = function()
} }
} }
WordSpace.findWord = function(word) WordSpace.findWord = function(wordText)
{ {
var found = WordSpace.wordGroup.find(function(element) var found = WordSpace.wordGroup.filter(function(element)
{ {
return Input.isEqual(word, element.wordText); return Input.isEqual(wordText, element.wordText);
}); });
if (found != undefined) if (found.length != 0)
{ {
switch(found.wordGrade) // 이부분 나중에 더 효율적으로 바꿀수있지 않을까 let weightest = found[0];
found.forEach(function(element)
{
if (weightest.wordWeight < element.wordWeight) weightest = element;
});
switch(weightest.wordGrade) // 이부분 나중에 더 효율적으로 바꿀수있지 않을까
{ {
case 0: WordSpace.attackGauge.add(2.5); break; case 0: WordSpace.attackGauge.add(2.5); break;
case 1: WordSpace.attackGauge.add(1.5); break; case 1: WordSpace.attackGauge.add(1.5); break;
...@@ -134,6 +162,35 @@ WordSpace.findWord = function(word) ...@@ -134,6 +162,35 @@ WordSpace.findWord = function(word)
case 3: WordSpace.attackGauge.add(0.5); break; case 3: WordSpace.attackGauge.add(0.5); break;
default: console.log('[ERR] wrong grade of word'); break; default: console.log('[ERR] wrong grade of word'); break;
} }
found.destroy(); weightest.destroy();
}
else if (wordText === '공격' && WordSpace.attackGauge.value > 3) // 공격모드 진입.
{
console.log('attack mode');
// 이부분에서 최대 단어수 결정
Input.attackMode = true;
WordSpace.attackGauge.pauseCycle(true);
}
else
{
// 오타 체크
}
}
WordSpace.attack = function(wordText)
{
if (wordText != '')
{
console.log('attack ' + wordText);
WordSpace.generateWord(WordSpace.gameSceneForTest, wordText); // for test
// 이부분에서 게이지에 따라 급수 결정
// 이부분은 서버 잘써야함
WordSpace.attackGauge.resetValue();
}
else
{
WordSpace.attackGauge.cutValue(0.3);
} }
Input.attackMode = false;
WordSpace.attackGauge.pauseCycle(false);
} }
\ No newline at end of file
var config = { var config = {
type: Phaser.AUTO, type: Phaser.AUTO,
width: 800, width: 1280,
height: 600, height: 720,
physics: { physics: {
default: 'arcade', default: 'arcade',
arcade: { arcade: {
......
function selectstartWord() function selectstartWord()
{ {
var i; var i;
var grade3List = {}; var grade3List = [];
var grade2List = {}; var grade2List = [];
var grade1List = {}; var grade1List = [];
for(i=0;i<5;i++) for(i=0;i<5;i++)
{ {
...@@ -16,4 +16,27 @@ function selectstartWord() ...@@ -16,4 +16,27 @@ function selectstartWord()
} }
grade1List[0] = Phaser.Utils.Array.GetRandom(CSVParsing.grade1Array); 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