Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sejong25
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Tear of Sejong
sejong25
Commits
b2b41594
Commit
b2b41594
authored
Jul 10, 2019
by
18신대성
Committed by
18류지석
Jul 10, 2019
Browse files
Options
Browse Files
Download
Plain Diff
중간발표본
parents
429e22d3
2fdf73fd
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
344 additions
and
30 deletions
+344
-30
GameServer.js
GameServer.js
+27
-5
BGM_twochae.ogg
assets/sound/BGM_twochae.ogg
+0
-0
index.html
index.html
+1
-0
BGMsound.js
js/BGMsound.js
+28
-0
Client.js
js/Client.js
+13
-0
Input.js
js/Input.js
+2
-4
ScenesData.js
js/ScenesData.js
+3
-1
WordObject.js
js/WordObject.js
+7
-5
WordSpace.js
js/WordSpace.js
+12
-4
package-lock.json
package-lock.json
+216
-0
package.json
package.json
+2
-1
server.js
server.js
+33
-10
No files found.
GameServer.js
View file @
b2b41594
var
GameServer
=
GameServer
||
{};
GameServer
.
Phase
=
{
READY
:
0
,
START
:
1
,
MAIN
:
2
,
MUSIC
:
3
};
GameServer
.
startCount
=
2
;
GameServer
.
startCount
=
4
;
GameServer
.
currentPlayer
=
[];
GameServer
.
playingRoom
=
[];
...
...
@@ -57,14 +57,32 @@ GameServer.findRoomIndex = function(roomNum)
GameServer
.
enterRoom
=
function
(
roomIdx
,
playerData
)
{
let
room
=
this
.
playingRoom
[
roomIdx
];
let
player
=
new
Player
(
room
.
currentPlayer
.
length
,
playerData
);
let
nextIdx
=
-
1
;
for
(
let
i
=
0
;
i
<
room
.
currentPlayer
.
length
;
i
++
)
{
if
(
room
.
currentPlayer
[
i
]
===
null
)
{
nextIdx
=
i
;
break
}
}
let
player
=
new
Player
((
nextIdx
!=
-
1
?
nextIdx
:
room
.
currentPlayer
.
length
),
playerData
);
room
.
currentPlayer
.
push
(
player
);
room
.
currentSocket
.
push
(
playerData
);
if
(
nextIdx
!=
-
1
)
{
room
.
currentPlayer
[
nextIdx
]
=
player
;
room
.
currentSocket
[
nextIdx
]
=
playerData
;
}
else
{
room
.
currentPlayer
.
push
(
player
);
room
.
currentSocket
.
push
(
playerData
);
}
playerData
.
playingData
=
player
;
playerData
.
currentRoom
=
room
;
console
.
log
(
'
[
'
+
playerData
.
id
+
'
] entered to room #
'
+
room
.
roomNum
);
playerData
.
socketId
.
emit
(
'
enterRoom
'
);
if
(
room
.
currentPlayer
.
length
>=
this
.
startCount
)
GameServer
.
startRoom
(
roomIdx
);
return
room
;
}
...
...
@@ -91,6 +109,10 @@ GameServer.startRoom = function(roomIdx)
room
.
currentPhase
=
this
.
Phase
.
START
;
room
.
maxTypingPlayer
=
room
.
currentPlayer
[
0
];
room
.
minTypingPlayer
=
room
.
currentPlayer
[
0
];
room
.
currentSocket
.
forEach
(
function
(
element
)
{
element
.
isReceivable
=
true
;
});
// sync roomData
let
toSync
=
...
...
@@ -118,7 +140,7 @@ GameServer.announceToTarget = function(roomIdx, targetNum, _message, _data = nul
{
return
element
.
id
===
targetNum
;
});
if
(
targetSocket
!=
undefined
)
targetSocket
.
socketId
.
emit
(
_message
,
_data
);
if
(
targetSocket
!=
undefined
&&
targetSocket
.
isReceivable
)
targetSocket
.
socketId
.
emit
(
_message
,
_data
);
}
// 데이터 동기화 함수 만들기
// 동기화할것: 유저리스트(id - nickname 쌍)
...
...
assets/sound/BGM_twochae.ogg
0 → 100644
View file @
b2b41594
File added
index.html
View file @
b2b41594
...
...
@@ -12,6 +12,7 @@
<script
src=
"js/WordReader.js"
></script>
<script
src=
"js/CSVParsing.js"
></script>
<script
src=
"js/SelectWord.js"
></script>
<script
src=
"js/BGMsound.js"
></script>
</head>
<body>
<script
src=
"js/Client.js"
></script>
...
...
js/BGMsound.js
0 → 100644
View file @
b2b41594
var
Audio
=
Audio
||
{}
Audio
.
loadSound
=
function
(
scene
)
{
scene
.
load
.
audio
(
'
menuBackground
'
,
'
assets/sound/BGM_twochae.ogg
'
)
}
Audio
.
playSound
=
function
(
scene
)
{
bgm
=
scene
.
sound
.
play
(
'
menuBackground
'
)
}
Audio
.
pauseSound
=
function
(
scene
)
{
bgm
=
scene
.
sound
.
pause
()
}
Audio
.
resumeSound
=
function
(
scene
)
{
bgm
=
scene
.
sound
.
resume
()
}
Audio
.
stopSound
=
function
(
scene
)
{
bgm
=
scene
.
sound
.
stop
()
}
// var Audio = new Audio('assets/sound/BGM_twochae.ogg');
// Audio.play();
\ No newline at end of file
js/Client.js
View file @
b2b41594
...
...
@@ -7,6 +7,14 @@ socket.on('setId', function(msg) // {str, num playerNum}
console
.
log
(
msg
.
str
);
PlayerData
.
idNum
=
msg
.
num
;
});
socket
.
on
(
'
errNicknameOverlaped
'
,
function
()
{
alert
(
'
이미 사용중인 닉네임입니다.
'
);
});
socket
.
on
(
'
enterRoom
'
,
function
()
{
game
.
scene
.
remove
(
'
menuScene
'
);
});
// init game
socket
.
on
(
'
syncRoomData
'
,
function
(
msg
)
// {num roomNum, [] players}
...
...
@@ -43,6 +51,11 @@ socket.on('defeat', function(msg) // object player
console
.
log
(
RoomData
.
players
[
msg
.
index
].
nickname
+
'
defeated
'
);
});
socket
.
on
(
'
attackSucceed
'
,
function
(
msg
)
{
WordSpace
.
nameGroup
.
push
(
new
NameWord
(
msg
.
victim
,
true
));
});
// out game
socket
.
on
(
'
userDisconnect
'
,
function
(
msg
)
// {num index , num id, str nickname}
{
...
...
js/Input.js
View file @
b2b41594
...
...
@@ -16,8 +16,7 @@ Input.gameSceneEnterReaction = function()
{
if
(
!
Input
.
isEntered
)
{
Input
.
convInput
=
Input
.
removeConVow
(
Input
.
convInput
);
if
(
Input
.
attackMode
)
WordSpace
.
attack
(
Input
.
convInput
,
Input
.
attackOption
.
wordGrade
);
if
(
Input
.
attackMode
)
WordSpace
.
attack
(
Input
.
removeConVow
(
Input
.
convInput
),
Input
.
attackOption
.
wordGrade
);
else
WordSpace
.
findWord
(
Input
.
convInput
);
Input
.
reset
();
Input
.
isEntered
=
true
;
...
...
@@ -26,12 +25,11 @@ Input.gameSceneEnterReaction = function()
Input
.
menuSceneEnterReaction
=
function
()
{
Input
.
convInput
=
Input
.
removeConVow
(
Input
.
convInput
);
if
(
Input
.
convInput
.
length
>
0
)
if
(
Input
.
convInput
.
length
>
1
)
{
socket
.
emit
(
'
setNickname
'
,
Input
.
convInput
);
PlayerData
.
nickname
=
Input
.
convInput
;
Input
.
reset
();
game
.
scene
.
remove
(
'
menuScene
'
);
}
else
{
...
...
js/ScenesData.js
View file @
b2b41594
...
...
@@ -13,12 +13,14 @@ var menuScene = new Phaser.Class(
{
Input
.
inputField
.
loadImage
(
this
);
BackGround
.
loadImage
(
this
);
Audio
.
loadSound
(
this
);
},
create
:
function
()
{
Input
.
inputField
.
generate
(
this
,
Input
.
menuSceneEnterReaction
);
BackGround
.
drawMenu
(
this
);
Audio
.
playSound
(
this
);
}
});
...
...
@@ -85,7 +87,7 @@ var gameScene = new Phaser.Class(
let
tempNames
=
''
;
WordSpace
.
nameGroup
.
forEach
(
function
(
element
)
{
tempNames
+=
element
.
wordText
+
element
.
isStrong
+
'
\n
'
;
tempNames
+=
element
.
wordText
+
(
element
.
isStrong
?
'
[강]
'
:
''
)
+
'
\n
'
;
});
WordSpace
.
nameWordTextForTest
.
setText
(
'
현재 가진 호패들 :
\n
'
+
tempNames
);
...
...
js/WordObject.js
View file @
b2b41594
...
...
@@ -135,13 +135,12 @@ class AttackWord extends WordObject
super
(
text
);
this
.
wordGrade
=
_wordGrade
;
this
.
wordWeight
=
WordReader
.
getWordWeight
(
this
.
wordGrade
);
if
(
WordReader
.
getWordTyping
(
_playerData
.
nickname
)
<=
9
)
if
(
WordReader
.
getWordTyping
(
_playerData
.
nickname
)
>
9
)
this
.
wordWeight
+=
this
.
wordWeight
*
0.2
*
(
WordReader
.
getWordTyping
(
_playerData
.
nickname
)
-
9
);
this
.
wordWeight
*=
isStrong
?
3
:
2
;
this
.
attacker
=
_playerData
;
//서버 사용하게 되면 PlayerTyping을 피격자의 것으로 바꿔야 함
this
.
counterTime
=
WordSpace
.
gameTimer
.
now
+
1000
*
(
this
.
wordTyping
<=
(
5
-
_wordGrade
)
*
2.5
?
this
.
wordTyping
*
(
WordSpace
.
playerTyping
/
60
)
*
2
:
((
5
-
_wordGrade
)
*
2.5
+
(
this
.
wordTyping
-
(
5
-
_wordGrade
)
*
2.5
)
*
3
)
*
(
WordSpace
.
playerTyping
/
60
)
*
2
);
this
.
counterTime
=
WordSpace
.
gameTimer
.
now
+
1000
*
(
this
.
wordTyping
<=
(
5
-
_wordGrade
)
*
2.5
?
this
.
wordTyping
/
(
Math
.
max
(
200
,
WordSpace
.
playerTyping
)
/
60
)
*
1.5
:
((
5
-
_wordGrade
)
*
3
+
(
this
.
wordTyping
-
(
5
-
_wordGrade
)
*
2.5
)
*
2.5
)
/
(
Math
.
max
(
200
,
WordSpace
.
playerTyping
)
/
60
)
*
1.5
);
console
.
log
(
'
Attack text :
'
+
text
+
'
, Attacker :
'
+
this
.
attacker
.
nickname
+
'
, Weight :
'
+
this
.
wordWeight
);
console
.
log
(
'
Counter time :
'
+
this
.
counterTime
);
}
...
...
@@ -155,7 +154,10 @@ class AttackWord extends WordObject
case
3
:
WordSpace
.
attackGauge
.
add
(
0.5
);
break
;
default
:
console
.
log
(
'
[ERR] wrong grade of word
'
);
break
;
}
if
(
WordSpace
.
gameTimer
.
now
<
this
.
counterTime
)
WordSpace
.
nameGroup
.
push
(
new
NameWord
(
this
.
attacker
,
true
));
if
(
WordSpace
.
gameTimer
.
now
<
this
.
counterTime
)
{
WordSpace
.
nameGroup
.
push
(
new
NameWord
(
this
.
attacker
,
true
));
}
//강호패 넣기 구현해야됨
//WordSpace.generateWord.Name(WordSpace.gameSceneForTest, true);
super
.
destroy
();
...
...
js/WordSpace.js
View file @
b2b41594
...
...
@@ -292,7 +292,7 @@ WordSpace.setGameOverTimer = function()
if
(
this
.
brainCapacity
<
this
.
totalWeight
&&
!
this
.
isTimerOn
)
{
this
.
isTimerOn
=
true
;
WordSpace
.
gameOverCycle
.
resetCycle
(
WordSpace
.
gameSceneForTest
,
WordSpace
.
delay
.
g
ameOver
,
0
,
false
);
WordSpace
.
gameOverCycle
.
resetCycle
(
WordSpace
.
gameSceneForTest
,
WordSpace
.
delay
.
G
ameOver
,
0
,
false
);
}
}
...
...
@@ -354,8 +354,14 @@ WordSpace.findWord = function(wordText)
{
if
(
WordSpace
.
getEditDistance
(
wordText
,
element
.
wordText
)
==
minDist
)
{
//강호패 보내야 함
console
.
log
(
'
Attack word :
'
+
element
.
wordText
+
'
of
'
+
element
.
attacker
.
nickname
+
'
오타임
'
);
let
victimData
=
{
roomNum
:
RoomData
.
roomNum
,
victim
:
RoomData
.
myself
,
target
:
element
.
attacker
.
idNum
}
socket
.
emit
(
'
defenseFailed
'
,
victimData
);
}
});
this
.
attackGauge
.
sub
(
2
);
...
...
@@ -400,6 +406,8 @@ WordSpace.attack = function(wordText, grade)
});
//테스트용, 자기 자신에게 공격함
//WordSpace.generateWord.Attack(WordSpace.gameSceneForTest, wordText, grade, PlayerData, false);
WordSpace
.
generateWord
.
Name
(
WordSpace
.
gameSceneForTest
,
false
);
WordSpace
.
generateWord
.
Name
(
WordSpace
.
gameSceneForTest
,
false
);
WordSpace
.
nameGroup
=
[];
WordSpace
.
attackGauge
.
resetValue
();
...
...
@@ -425,8 +433,8 @@ WordSpace.nameQueue =
tempQueue
[
tempLength
-
1
]
=
tempQueue
[
tempIdx
];
tempQueue
[
tempIdx
]
=
tempElement
;
}
tempQueue
.
forEach
(
function
(
element
)
{
//console.log(element.id + ' ' + PlayerData.idNum);
tempQueue
.
forEach
(
function
(
element
)
{
if
(
element
.
id
!=
PlayerData
.
idNum
&&
element
.
isAlive
)
WordSpace
.
nameQueue
.
queue
.
push
(
element
);
});
...
...
package-lock.json
View file @
b2b41594
...
...
@@ -78,6 +78,11 @@
"type-is"
:
"~1.6.17"
}
},
"browser-media-mime-type"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/browser-media-mime-type/-/browser-media-mime-type-1.0.0.tgz"
,
"integrity"
:
"sha1-oVNKitk48Lz0tkL1QPo1YFZT0Ok="
},
"bytes"
:
{
"version"
:
"3.1.0"
,
"resolved"
:
"https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz"
,
...
...
@@ -134,6 +139,14 @@
"ms"
:
"2.0.0"
}
},
"define-properties"
:
{
"version"
:
"1.1.3"
,
"resolved"
:
"https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz"
,
"integrity"
:
"sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ=="
,
"requires"
:
{
"object-keys"
:
"^1.0.12"
}
},
"depd"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
,
...
...
@@ -144,6 +157,11 @@
"resolved"
:
"https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz"
,
"integrity"
:
"sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
"dom-walk"
:
{
"version"
:
"0.1.1"
,
"resolved"
:
"https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz"
,
"integrity"
:
"sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg="
},
"ee-first"
:
{
"version"
:
"1.1.1"
,
"resolved"
:
"https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
,
...
...
@@ -222,6 +240,29 @@
"has-binary2"
:
"~1.0.2"
}
},
"es-abstract"
:
{
"version"
:
"1.13.0"
,
"resolved"
:
"https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz"
,
"integrity"
:
"sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg=="
,
"requires"
:
{
"es-to-primitive"
:
"^1.2.0"
,
"function-bind"
:
"^1.1.1"
,
"has"
:
"^1.0.3"
,
"is-callable"
:
"^1.1.4"
,
"is-regex"
:
"^1.0.4"
,
"object-keys"
:
"^1.0.12"
}
},
"es-to-primitive"
:
{
"version"
:
"1.2.0"
,
"resolved"
:
"https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz"
,
"integrity"
:
"sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg=="
,
"requires"
:
{
"is-callable"
:
"^1.1.4"
,
"is-date-object"
:
"^1.0.1"
,
"is-symbol"
:
"^1.0.2"
}
},
"escape-html"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"
,
...
...
@@ -283,6 +324,14 @@
"unpipe"
:
"~1.0.0"
}
},
"for-each"
:
{
"version"
:
"0.3.3"
,
"resolved"
:
"https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz"
,
"integrity"
:
"sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw=="
,
"requires"
:
{
"is-callable"
:
"^1.1.3"
}
},
"forwarded"
:
{
"version"
:
"0.1.2"
,
"resolved"
:
"https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz"
,
...
...
@@ -293,6 +342,28 @@
"resolved"
:
"https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"
,
"integrity"
:
"sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"function-bind"
:
{
"version"
:
"1.1.1"
,
"resolved"
:
"https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
,
"integrity"
:
"sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"global"
:
{
"version"
:
"4.3.2"
,
"resolved"
:
"https://registry.npmjs.org/global/-/global-4.3.2.tgz"
,
"integrity"
:
"sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8="
,
"requires"
:
{
"min-document"
:
"^2.19.0"
,
"process"
:
"~0.5.1"
}
},
"has"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/has/-/has-1.0.3.tgz"
,
"integrity"
:
"sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw=="
,
"requires"
:
{
"function-bind"
:
"^1.1.1"
}
},
"has-binary2"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz"
,
...
...
@@ -306,6 +377,11 @@
"resolved"
:
"https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz"
,
"integrity"
:
"sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
},
"has-symbols"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz"
,
"integrity"
:
"sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
},
"http-errors"
:
{
"version"
:
"1.7.2"
,
"resolved"
:
"https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz"
,
...
...
@@ -341,6 +417,56 @@
"resolved"
:
"https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz"
,
"integrity"
:
"sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
},
"is-callable"
:
{
"version"
:
"1.1.4"
,
"resolved"
:
"https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz"
,
"integrity"
:
"sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
},
"is-date-object"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz"
,
"integrity"
:
"sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
},
"is-dom"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz"
,
"integrity"
:
"sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ=="
,
"requires"
:
{
"is-object"
:
"^1.0.1"
,
"is-window"
:
"^1.0.2"
}
},
"is-function"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz"
,
"integrity"
:
"sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU="
},
"is-object"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz"
,
"integrity"
:
"sha1-iVJojF7C/9awPsyF52ngKQMINHA="
},
"is-regex"
:
{
"version"
:
"1.0.4"
,
"resolved"
:
"https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz"
,
"integrity"
:
"sha1-VRdIm1RwkbCTDglWVM7SXul+lJE="
,
"requires"
:
{
"has"
:
"^1.0.1"
}
},
"is-symbol"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz"
,
"integrity"
:
"sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw=="
,
"requires"
:
{
"has-symbols"
:
"^1.0.0"
}
},
"is-window"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz"
,
"integrity"
:
"sha1-LIlspT25feRdPDMTOmXYyfVjSA0="
},
"isarray"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz"
,
...
...
@@ -379,6 +505,14 @@
"mime-db"
:
"1.40.0"
}
},
"min-document"
:
{
"version"
:
"2.19.0"
,
"resolved"
:
"https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz"
,
"integrity"
:
"sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU="
,
"requires"
:
{
"dom-walk"
:
"^0.1.0"
}
},
"ms"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
,
...
...
@@ -389,11 +523,21 @@
"resolved"
:
"https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz"
,
"integrity"
:
"sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
"object-assign"
:
{
"version"
:
"4.1.1"
,
"resolved"
:
"https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
,
"integrity"
:
"sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"object-component"
:
{
"version"
:
"0.0.3"
,
"resolved"
:
"https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz"
,
"integrity"
:
"sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
},
"object-keys"
:
{
"version"
:
"1.1.1"
,
"resolved"
:
"https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz"
,
"integrity"
:
"sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
},
"on-finished"
:
{
"version"
:
"2.3.0"
,
"resolved"
:
"https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz"
,
...
...
@@ -402,6 +546,15 @@
"ee-first"
:
"1.1.1"
}
},
"parse-headers"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz"
,
"integrity"
:
"sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg=="
,
"requires"
:
{
"for-each"
:
"^0.3.3"
,
"string.prototype.trim"
:
"^1.1.2"
}
},
"parseqs"
:
{
"version"
:
"0.0.5"
,
"resolved"
:
"https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz"
,
...
...
@@ -428,6 +581,11 @@
"resolved"
:
"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
,
"integrity"
:
"sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
"process"
:
{
"version"
:
"0.5.2"
,
"resolved"
:
"https://registry.npmjs.org/process/-/process-0.5.2.tgz"
,
"integrity"
:
"sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
},
"proxy-addr"
:
{
"version"
:
"2.0.5"
,
"resolved"
:
"https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz"
,
...
...
@@ -458,6 +616,11 @@
"unpipe"
:
"1.0.0"
}
},
"right-now"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/right-now/-/right-now-1.0.0.tgz"
,
"integrity"
:
"sha1-bolgne69fc2vja7Mmuo5z1haCRg="
},
"safe-buffer"
:
{
"version"
:
"5.1.2"
,
"resolved"
:
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
,
...
...
@@ -511,6 +674,15 @@
"resolved"
:
"https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz"
,
"integrity"
:
"sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
"simple-media-element"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/simple-media-element/-/simple-media-element-1.1.0.tgz"
,
"integrity"
:
"sha1-TlfDozxg86IREqqN0L/GhDd4OKo="
,
"requires"
:
{
"browser-media-mime-type"
:
"^1.0.0"
,
"is-dom"
:
"^1.0.5"
}
},
"socket.io"
:
{
"version"
:
"2.2.0"
,
"resolved"
:
"https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz"
,
...
...
@@ -600,6 +772,16 @@
"resolved"
:
"https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
,
"integrity"
:
"sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
"string.prototype.trim"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz"
,
"integrity"
:
"sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo="
,
"requires"
:
{
"define-properties"
:
"^1.1.2"
,
"es-abstract"
:
"^1.5.0"
,
"function-bind"
:
"^1.0.2"
}
},
"to-array"
:
{
"version"
:
"0.1.4"
,
"resolved"
:
"https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz"
,
...
...
@@ -634,6 +816,19 @@
"resolved"
:
"https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
,
"integrity"
:
"sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
"web-audio-player"
:
{
"version"
:
"1.3.3"
,
"resolved"
:
"https://registry.npmjs.org/web-audio-player/-/web-audio-player-1.3.3.tgz"
,
"integrity"
:
"sha512-eeBz+aa6sI7jZ5GRRaTVrpTfMT2DC2aTbq7BXPRNkw49SJvPvQ8/T9QcZvknLhDwvLsHwkfnAS1lR/tF4VxFnw=="
,
"requires"
:
{
"browser-media-mime-type"
:
"^1.0.0"
,
"object-assign"
:
"^4.0.1"
,
"right-now"
:
"^1.0.0"
,
"simple-media-element"
:
"^1.0.0"
,
"xhr"
:
"^2.2.0"
,
"xhr-progress"
:
"0.0.0"
}
},
"ws"
:
{
"version"
:
"6.1.4"
,
"resolved"
:
"https://registry.npmjs.org/ws/-/ws-6.1.4.tgz"
,
...
...
@@ -642,11 +837,32 @@
"async-limiter"
:
"~1.0.0"
}
},
"xhr"
:
{
"version"
:
"2.5.0"
,
"resolved"
:
"https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz"
,
"integrity"
:
"sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ=="
,
"requires"
:
{
"global"
:
"~4.3.0"
,
"is-function"
:
"^1.0.1"
,
"parse-headers"
:
"^2.0.0"
,
"xtend"
:
"^4.0.0"
}
},
"xhr-progress"
:
{
"version"
:
"0.0.0"
,
"resolved"
:
"https://registry.npmjs.org/xhr-progress/-/xhr-progress-0.0.0.tgz"
,
"integrity"
:
"sha1-3oNDV/E3ZYJYPGS/c7MOrwXKZqY="
},
"xmlhttprequest-ssl"
:
{
"version"
:
"1.5.5"
,
"resolved"
:
"https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz"
,
"integrity"
:
"sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
},
"xtend"
:
{
"version"
:
"4.0.2"
,
"resolved"
:
"https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"
,
"integrity"
:
"sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"yeast"
:
{
"version"
:
"0.1.2"
,
"resolved"
:
"https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz"
,
...
...
package.json
View file @
b2b41594
...
...
@@ -14,6 +14,7 @@
"license"
:
"
ISC
"
,
"dependencies"
:
{
"
express
"
:
"
^4.17.1
"
,
"
socket.io
"
:
"
^2.2.0
"
"
socket.io
"
:
"
^2.2.0
"
,
"
web-audio-player
"
:
"
^1.3.3
"
}
}
server.js
View file @
b2b41594
...
...
@@ -28,8 +28,7 @@ io.on('connection', function(socket)
socketId
:
socket
,
currentRoom
:
null
,
playingData
:
null
,
playerTyping
:
0
isReceivable
:
false
};
GameServer
.
currentPlayer
.
push
(
socket
.
playerData
);
console
.
log
(
'
[
'
+
socket
.
playerData
.
id
+
'
] client request
'
);
...
...
@@ -42,9 +41,19 @@ io.on('connection', function(socket)
socket
.
on
(
'
setNickname
'
,
function
(
msg
)
// string new_nickname
{
socket
.
playerData
.
nickname
=
msg
;
console
.
log
(
'
[
'
+
socket
.
playerData
.
id
+
'
] nickname set to
'
+
msg
);
GameServer
.
enterEmptyRoom
(
socket
.
playerData
);
let
isAlreadyHave
=
false
;
GameServer
.
currentPlayer
.
forEach
(
function
(
element
)
{
if
(
element
.
nickname
===
msg
)
isAlreadyHave
=
true
;
});
if
(
isAlreadyHave
)
socket
.
emit
(
'
errNicknameOverlaped
'
);
else
{
socket
.
playerData
.
nickname
=
msg
;
console
.
log
(
'
[
'
+
socket
.
playerData
.
id
+
'
] nickname set to
'
+
msg
);
GameServer
.
enterEmptyRoom
(
socket
.
playerData
);
}
});
socket
.
on
(
'
setPlayerTyping
'
,
function
(
msg
)
// number playerTyping
...
...
@@ -72,16 +81,22 @@ io.on('connection', function(socket)
{
socket
.
playerData
.
playingData
.
isAlive
=
false
;
socket
.
playerData
.
playingData
.
rank
=
socket
.
playerData
.
currentRoom
.
nextRank
--
;
socket
.
playerData
.
isReceivable
=
false
;
// 패배단어 체크
GameServer
.
announceToRoom
(
socket
.
playerData
.
currentRoom
.
roomNum
,
'
defeat
'
,
socket
.
playerData
.
playingData
);
console
.
log
(
'
[
'
+
socket
.
playerData
.
id
+
'
]
'
+
'
defeated
'
);
});
socket
.
on
(
'
defenseFailed
'
,
function
(
msg
)
{
GameServer
.
announceToTarget
(
GameServer
.
findRoomIndex
(
msg
.
roomNum
),
msg
.
target
,
'
attackSucceed
'
,
msg
);
});
socket
.
on
(
'
disconnect
'
,
function
(
reason
)
{
let
data
=
socket
.
playerData
;
console
.
log
(
'
[
'
+
data
.
id
+
'
] client disconnected, reason:
'
+
reason
);
if
(
data
.
id
===
undefined
)
if
(
typeof
data
.
id
===
undefined
)
{
console
.
log
(
'
[ERROR] data.id is undefined
'
);
console
.
log
(
GameServer
.
currentPlayer
);
...
...
@@ -98,10 +113,18 @@ io.on('connection', function(socket)
// 룸에서도 제거
if
(
data
.
currentRoom
!=
null
)
{
data
.
playingData
.
isAlive
=
false
;
if
(
data
.
playingData
.
rank
===
-
1
)
data
.
playingData
.
rank
=
data
.
currentRoom
.
nextRank
--
;
data
.
currentRoom
.
currentSocket
.
splice
(
data
.
playingData
.
index
,
1
);
GameServer
.
announceToRoom
(
GameServer
.
findRoomIndex
(
data
.
currentRoom
.
roomNum
),
'
userDisconnect
'
,
data
.
playingData
);
if
(
data
.
currentRoom
.
currentPhase
===
GameServer
.
Phase
.
READY
)
{
data
.
currentRoom
.
currentPlayer
[
data
.
playingData
.
index
]
=
null
;
data
.
currentRoom
.
currentSocket
[
data
.
playingData
.
index
]
=
null
;
}
else
{
data
.
playingData
.
isAlive
=
false
;
if
(
data
.
playingData
.
rank
===
-
1
)
data
.
playingData
.
rank
=
data
.
currentRoom
.
nextRank
--
;
data
.
currentRoom
.
currentSocket
[
data
.
playingData
.
index
].
isReceivable
=
false
;
GameServer
.
announceToRoom
(
GameServer
.
findRoomIndex
(
data
.
currentRoom
.
roomNum
),
'
userDisconnect
'
,
data
.
playingData
);
}
}
}
console
.
log
(
'
[
'
+
data
.
id
+
'
] disconnect complete
'
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment