Hangul Quiz Game
1) File
2) main.js
const STATE_INIT = 3000;
const STATE_READY = 3001;
const STATE_PLAYING = 3002;
const STATE_JUDGE = 3004;
const STATE_END = 3005;
const WORD_LINES = [
'νκΈλ ν΄κ²μ νκΈ°μ¦ νκ΄ν νΈλ λ νλλ¬Έ νλ
Έμ΄ ν«λκ·Έ νλκΉ¨ ν€λμ
ν΄λμ΄ νλΌλ΄ νλΌμ° νΈλμ΄ ν리λ νλ―Έκ²½ ν°λ¨Έλ¦¬ ν©λ¬΄μ§ νλ²κ±° νλΆλͺ¨ νλ°μ νλ²
μ§ νμꡬ νΈμ μ νμμ νμΉμ΄ νμ€ν€ νμ€ν° ν΄μ΄λ νμ£Όλ‘ ν΄μ§ν΅ νμ₯ν νμ΄λ¦¬ ν«ν¬μΈ ννν',
'νΌκ·μ΄ νκΏμΉ ν¬λμ£Ό νΌλΌλ νΌλΌλ―Έ νΌλ’°μΉ¨ ν리ν₯ νλΌν ν¬λ―Έλ ν₯λΉμ νλ°±μ νμ리 νΌμλ°© νμ¨λ¦ νΌμλ
Έ νΈμμ νμλ§ ν¬μ₯μ§ νμ§ν νμΆ©λ₯ νμΆλΆ νμΆμ ν¬μ²μ² ν¬ν΄λ½ ν¬μΌλ³Ό νΌμΉ΄μ νΌμΉ΄μΈ ννμ£Ό νΌν°ν¬',
'νκ·ΉκΈ° νκΆλ ν±κ±Έμ΄ ν
λμ€ νΈλ ν¬ ν°λ―Έλ ν΄λ§μ¬ ν λ§ν ν¬λ²λ¦° ν¬μκΈ° ν±μλ νμμ‘ ν μ€νΈ νμκ³ ν°μλΌ νμ΄λ° νμμ€ νΈμν° ν΄μ§κΈ ν΅μ‘°λ¦Ό νμ§μ ννμ ν
ν€λ',
'μΊ₯거루 μ½§κ΅¬λ© μ½λΌλ¦¬ μΊλλ€ μ½©λλ¬Ό μ½λν₯ 컨λμ
μ½λ¬μ€ μΉ΄λ©λΌ μΉ΄λ©μ€ ν€λ³΄λ μ½€λ°μΈ μ½λΏμ μΌμ΄ν¬ μ½μ½λ μΉ΄νλ₯΄ μΉ΅ν
μΌ μ»€νλ§',
'μ°ΈκΈ°λ¦ μ² κ°λ°© μ΄λ₯λ ₯ μΆλμ¦ μ·¨λλΆ μ²κ³μ² μ±
κ°νΌ μ±
κ½μ΄ μ΄λ₯λ ₯ μΆλμ¦ μ°½λκΆ μ°¨λ리 μ΅λ£¨ν μ΅λ©΄μ μΉ λ©΄μ‘° μ²λ°μ§ μ²μλ
μΆμλΆ μ°Ήμλ‘ μ²μλ 첫μΈμ μΉμμ μ΄μΈμ’
μΆμ΄ν μ΄μν μΉ¨μ λ¬Ό μ²μ²©μ₯ μ΄μ½λ¦Ώ μΉνΈν€ μΆνμ¬ μ±νΌμΈ μΉ¨ν¬μ§ μ΅νλ§',
'κ³κΈ°ν κ°λ리 κΈ°λ΄μ κ°λ콩 κ΅λκ΄ κ³ λλ¦ κ³¨λν κΈ°λ¬κΈ° κ°λ‘λ± κ°λλ‘ κΈλ¬λΈ κ·Έλ¦Όμ κΈ°λͺ¨λ
Έ κΈλ©λ¬ 거머리 κ΅λ¬΄μ€ 곡무μ 건λ§μ¦ κ΅¬λ―ΈνΈ κΉλ³λ§ κ΅λ°©λΆ κ±°λΆμ κ΄λ³΅μ κ³±λΉΌκΈ° κ°μλ κ°μ λ―Έ κΈ°μμ¬ κ°μ€λ¦¬ κ±Έμλ§ κ°μμ€ κ±°μ§λ§ κ΅μ°¨λ‘ 골ν€νΌ κ³Όνλ£ κΉνμ κΉνν¬ κ±΄ν¬λ κ³°ν‘μ΄ κ³¨νμ§ κ³΅ν¬ν κΉν₯κ΅ κ΄νλ¬Έ 곡ν΄μΌ κ³ νμ 꽹과리 κΉλ리 κΉλκΈ° κ½λ€λ° κ½λ±μ¬ κΌ½λ±μ΄ κΉλ§κ· κΉμΉλ° κΉνκΈ°',
'μΌμ²© νΉμΉ΄ νΉμ½© 컨λ μ±μ° μ°½λ¬Έ μ°ΈκΉ¨ μ²κ΅ μΆκ΅¬ μΆκ·Ό μΉκ΅¬ μΉκ³Ό μ·¨κΆ μ±κΆ μ΄κ³Ό μ‘±λ° μ λ²½ μ λ³ μ£ΌλΆ μ 볡 μ€λ³΅ μ 볡 μ λ° μ‘±λ³΄ μλ° μ£Όλ² μ’λΉ μ λΉ μ¬κ³Ό μ¬κΈ° μκΈ μκ³ μκΈ μ κ±° μλ₯ μ€λ μ€λ',
'λͺ¨λ λ―Έλ λ―Έλ‘ λ§λ£¨ λ‘λ°₯ λΈκΈ° λ‘κ΅ λμ λμ λ΄μ λ
Έμ λμ½ λ
Ήμ© λ
ΈμΈ λλ¬Ό λλ©΄ λλΉ λλ°© κ°μ κ±°μΈ κ·Όμ‘ κΈ°ν κΉνΈ ꡬν κ΅΄λ κ°λ
κ·Έλ€ κ΅¬λ¦ κΈ°λ¦° κ²½λ§ κ²½λ§€ κ³ λ§ κ°λ°© κ³΅λΆ κ³ λ°± κ°λ³ κ°λΉ κΉλ°₯ κ±°λ΄ κ΅°λ°€ κΈ°λΆ κ±΄λΉ΅ κ°μ'
];
let WORDS = [];
let _state = STATE_INIT;
let _stateTimer = 0;
let _timer = 0;
let _choanswer = '';
let _answer = '';
let _start = false;
let _widget = null; // using for contents UI
let _players = App.player;
let _result = '';
for(let w in WORD_LINES)
WORDS = WORDS.concat(WORD_LINES[w].trim().split(' '));
function cho_hangul(str) {
cho = ["γ±","γ²","γ΄","γ·","γΈ","γΉ","γ
","γ
","γ
","γ
","γ
","γ
","γ
","γ
","γ
","γ
","γ
","γ
","γ
"];
result = "";
for (let i = 0; i < str.length; ++i ) {
code = str.charCodeAt(i)-44032;
if(code>-1 && code<11172) result += cho[Math.floor(code/588)];
else result += str.charAt(i);
}
return result;
}
App.onStart.Add(function(){
startState(STATE_INIT);
});
// when chatting event
// player : person who chatted
// text : chat text
// return : enter chatting box
// return false or true : not appear in chatting box
App.onSay.add(function(player, text) {
if(_state == STATE_PLAYING)
{
if(_answer == text)
{
_result = player.name + 'λ μ λ΅!\nμ λ΅μ ' + _answer;
startState(STATE_JUDGE);
}
}
});
function startState(state) {
_state = state;
_stateTimer = 0;
switch(_state)
{
case STATE_INIT:
if(_widget)
{
_widget.destroy();
_widget = null;
}
_answer = WORDS[Math.floor(Math.random() * WORDS.length)];
_timer = 60;
_choanswer = cho_hangul(_answer);
// called html UI
// param1 : file name
// param2 : position
// [ top, topleft, topright, middle, middleleft, middleright, bottom, bottomleft, bottomright, popup ]
// param3 : width size
// param4 : height size
_widget = App.showWidget('widget.html', 'top', 200, 300);
_widget.sendMessage({
state: _state,
timer: _timer,
answer: _choanswer,
});
startState(STATE_READY);
break;
case STATE_READY:
_start = true;
startState(STATE_PLAYING);
break;
case STATE_PLAYING:
App.showCenterLabel('λͺ©ν: μ΄μ±ννΈλ‘ λ¨μ΄λ₯Ό μ°Ύμλ΄μΈμ.',0xFFFFFF, 0x000000, 115);
_widget.sendMessage({
state: _state,
timer: _timer,
answer: _choanswer,
});
break;
case STATE_JUDGE:
break;
case STATE_END:
if(_widget)
{
_widget.destroy();
_widget = null; // must to do for using again
}
_start = false;
break;
}
}
App.onLeavePlayer.Add(function(p) {
p.title = null;
p.sprite = null;
p.moveSpeed = 80;
p.sendUpdated();
});
App.onDestroy.Add(function() {
_start = false;
if(_widget)
{
_widget.destroy();
_widget = null;
}
});
App.onUpdate.Add(function(dt) {
if(!_start)
return;
_stateTimer += dt;
switch(_state)
{
case STATE_INIT:
break;
case STATE_READY:
_start = true;
break;
case STATE_PLAYING:
if(_stateTimer >= 1)
{
_stateTimer = 0;
_timer -= 1;
}
if(_timer == 0)
{
_result = 'μ λ΅μ ' + _answer + ' μ
λλ€.';
startState(STATE_JUDGE);
}
break;
case STATE_JUDGE:
App.showCenterLabel(_result, 0xFFFFFF, 0x000000, 115);
if(_stateTimer >= 3)
startState(STATE_END);
break;
case STATE_END:
break;
}
});
Last updated
Was this helpful?