728x90
๐ป ํ๋ก์ ํธ ๊ฐ์
๋๋ณด๊ธฐ
ํ๋ก์ ํธ๋ช | Mini Game Project |
๋ชฉํ | 3๊ฐ์ง์ ๋ฏธ๋๊ฒ์์ 2๋ช ์ด์ ์ง์ ์ง์ด์ ๊ฒ์์ ๊ตฌํํ๋ ๊ฒ์ ๋ชฉํ |
๊ตฌ์๋ฐฐ๊ฒฝ | ๋ฏธ๋๊ฒ์ ์ฒ๊ตญ๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ฒ์์ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ์ฌ ๋ค์ํ ์ฌ๋ฏธ๋ฅผ ์ฃผ๊ณ ์ถ๋ค. |
๐๏ธ ํ๋ก์ ํธ ๊ธฐ๊ฐ : 2024-02-19 ~ 2024-02-26(8์ผ)
๐จ๐ฉ๐ง๐ฆ ๊ตฌ์ฑ์ ์ญํ
๋๋ณด๊ธฐ
๋ฏธ๋๊ฒ์ ์ด๋ฆ | ์ญํ |
์งํ์ฒ ๊ฒ์ | ์์ฃผ์, ์ ๋ฒ์ |
ํด์ ๊ฒ์ | ์ ์ข ์ฑ, ์ด๊ฒฝ์ |
๋งํผ์ ๊ฒ์ | ๊น๊ฐํ, ๊น์ต |
๐ ๏ธ ์ฌ์ฉ์คํ
๋๋ณด๊ธฐ
Front & Back : Java
database : MySQL
๐๏ธ ํด๋์ค ๋ค์ด์ด ๊ทธ๋จ & ๊ตฌ์กฐ
๐ ๋ฉ์ธ ํฌ์ธํธ
- ์์ผ ํต์ ์ ๊ตฌํํ๋ค๋ ๊ฒ
- ์๋ฒ์์ผ์ ๋ง๋ค์ด ์ผ์ ์ธ์์ ๋ํด์๋ง ํ์ฉํ์ฌ ์ฐ๊ฒฐ์ ํ์ฉํ๊ฒ ํ์ต๋๋ค.
private static final int MAX_CLIENTS = 7;
// ์๋ฒ ์์ ๋ฉ์๋
public void startServer() {
try (ServerSocket serverSocket = new ServerSocket(90)) {
System.out.println("๋งํผ์ ๊ฒ์ ์๋ฒ ์์...");
while (true) {
Socket clientSocket = serverSocket.accept();
if (playerCount < MAX_CLIENTS) {
new Handler(clientSocket).start();
} else {
System.out.println("์ต๋ ํ์ฉ ํด๋ผ์ด์ธํธ ์๋ฅผ ์ด๊ณผํ์ฌ ์๋ก์ด ํด๋ผ์ด์ธํธ์ ์ ์์ ๊ฑฐ๋ถํฉ๋๋ค.");
clientSocket.close();
}
}
} catch (IOException e) {
System.err.println("90 ํฌํธ์์ ์๋ฒ๋ฅผ ์์ํ ์ ์์ต๋๋ค.");
}
}
- ์๋ฒ์์ ์ปจํธ๋กค๋ฌ์ ์์ ๋ฉ์๋๋ฅผ ์คํ์์ผ ์์ ๋๊ธฐ ์ ์ ์ํ๋ก ๋ง๋ค๊ณ ๊ฒ์์ด ์์๋๋ฉด ์ปจํธ๋กค๋ฌ ๋ด๋ถ์ ์๋ ํธ๋ค๋ฌ ํด๋์ค๋ฅผ ์คํ์ํต๋๋ค. ์ด ํธ๋ค๋ฌ๋ ์์ผ ์ฐ๊ฒฐ์ ์ฑ๊ณตํ ํด๋ผ์ด์ธํธ๊ฐ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ๊ตฌํํ์์ต๋๋ค.
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new PrintWriter(socket.getOutputStream(), true);
while(...){
...
if(!message.startsWith("/"))
broadcastMessage(userID,message);
...
}
๐ค ์ ๋งคํ ์
๊ทธ ์ํฉ์์ ๋๊ฒฌ์ค๋ฝ๊ธฐ๋ ํ๊ณ ์์ฌ์ด ๋ถ๋ถ์ด๊ธด ํด์ ์ ๋งคํ ์ ์ ์ ๊ฒ ์ต๋๋ค
์ฒ์์ Server์ Clientํ์ผ๋ง ์์ด์ Server์์ ๋ชจ๋ ๋ก์ง์ ํ ๊ณณ์์ ์ฒ๋ฆฌํ๋ค๊ฐ ์ค๊ฐ ๋ ์ง์ฏค์ ๋ค๋ฅธ ํ์๊ณผ ์งํ ์ํฉ์ ๊ณต์ ํ๋ ์์๋ณด๊ธฐ ํ๋ค๋ค๋ ํผ๋๋ฐฑ์ ๋ฐ๊ณ ๊ณ ๋ฏผํ๋ค Controller ํ์ผ์ ๋ง๋ค์ด์ ์ฌ๊ธฐ์์ ๋ฉ์๋ํ๋ก ๋ง๋ค์ด ๊ด๋ฆฌํ์์ต๋๋ค.
1. public void startServer() //์๋ฒ๋ฅผ ์์ํ๊ณ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ๊ธฐ๋ค๋ฆฐ๋ค.
2. private void dayTime(String userID, String message) throws IOException //์ฃผ๊ฐ ์๊ฐ์ ํน์ ํ๋ ์ด์ด์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ค.
3. private void night(String userID, String message) throws IOException // ์ผ๊ฐ ์๊ฐ์ ํน์ ํ๋ ์ด์ด์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ค.
4. private String UserSelection(String myID, String message) throws IOException //์ฌ์ฉ์๊ฐ ์ ํํ ๋์์ ์ ๋ณด๋ฅผ ๋ฐํํ๋ค.
5. private String selectedInformation(String target) //๋์ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ฐํํ๋ค.
6. private void ClientOut(String dUser) //ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๊ณ ๊ด๋ จ ์์์ ํด์ ํ๋ค.
7. private boolean gameEndCheck() //๊ฒ์์ด ์ข
๋ฃ๋์๋์ง ํ์ธํ๋ค.
8. private void Initialization(String dUser) //์ฌ์ฉ์๋ฅผ ์ด๊ธฐํํ๊ณ ๊ฒ์ ์ํ๋ฅผ ๋ฆฌ์
ํ๋ค.
9. private void assignRolesRandomly() throws IOException // ํ๋ ์ด์ด๋ค์๊ฒ ์ญํ ์ ๋๋คํ๊ฒ ๋ถ์ฌํ๋ค.
10. private void broadcastMessage(String userID, String message) // ํด๋ผ์ด์ธํธ์ ๋ฉ์์ง๋ฅผ ๋ชจ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํ๋ค
11. private void broadcast(String message) // ๋ฉ์์ง๋ฅผ ๋ชจ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํ๋ค.
12. private void updateVoteCounts(String votee) // ํด๋ผ์ด์ธํธ๊ฐ ํฌํํ๋ฉด ์
๋ฐ์ดํธ๋๋ค.
13. private boolean isTie(int maxVotes) // ์ต๊ณ ๋ํ์๊ฐ ๋์ ์ธ์ง ํ์ธํ๋ค.
14. public void saveToDatabase(boolean mafiaWin, boolean civilWin) // ๊ฒ์๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ค.
๐ ์์ฌ์ด ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ๋ง ๊ตฌํ๋์ด ์์ด, ๋ค๋ฅธ CRUD ๊ธฐ๋ฅ์ด ๋ถ์กฑํ ์ ์ด ์์ฌ์ ๋ค.
- ํ ํ๋ก์ ํธ ์งํ ์ค ํ์ ์ฌ๊ตฌ์ฑํ์ฌ ํ๋ก์ ํธ์ ๋ณธ๋ ๋ชฉ์ ์ ํด์์์ผฐ๋ค.
- ํด๋์ค ๋ค์ด์ด๊ทธ๋จ ์์ฑ์ด ๋ฏธ์ํ๊ณ , ์ ์ฒด์ ์ผ๋ก ๋ฌธ์ ์์ ์ด ๋ถ์กฑํ์ฌ ๊ด๋ จ ๊ธฐ๋ก์ด ์์๋ ์ ์ด ์์ฌ์ ๋ค.
- ํ๋ก์ ํธ ํ์๊ด๋ฆฌ๋ฅผ ์นด์นด์คํก๊ณผ, ๋์ค์ฝ๋๋ก๋ง ์ฌ์ฉํ์ฌ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์์งํ์ง ๋ชปํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ฒ์ ์ฐ๊ฒฐ์ ํด๋ณด์ง ๋ชปํ๊ณ ์ฝ๋๋ฅผ ์์ฑ์ ๋ชปํด ์์ฌ์ ๋ค.
- ๊ฒ์๋ฐฉ์ 1๊ฐ๋ก ์ ํํ์ฌ ๋ง๋ ๊ฒ, ๋ฉ์์ง๋ฅผ ํ์ฌ ๊ฒ์์ค์ธ ์ ์ ๋ค์๊ฒ๋ง ๋ณด์ด๋ ๋ฉํฐ์บ์คํธ๋ฅผ ์ ์ฉํ์ง ๋ชปํ๊ฒ
๐ ์ํ ์ ๊ณผ ์์ฌ์ด ์ ์ ํตํด ๋ฌด์์ ํ ์ง?
- ํ ํ๋ก์ ํธ์ ์๋ฏธ์ ๋ง๊ฒ ํ์ ์ ๋ฐฐ์์ผ๊ฒ ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ฒ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ SQL๋ฌธ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ณด๊ณ ์ถ๋ค.
- ๋ฌธ์ํํ๋ ์์ ์ ๋ฐฐ์์ ํญ์ ๊ธฐ๋ก์ ๋จ๊ฒจ๋๊ณ ์ถ๋ค.
- ํ์๊ด๋ฆฌ์ ๊น ์ฌ์ฉ๋ฒ์ ํ๋ก์ ํธ์ ์ ์ฉ์์ผ๋ณด๊ณ ์ถ๋ค.
- ์ฌ๋ฌ ํ์ ํด์ ์ฌ์ฉํด๋ณด๊ณ ์ถ๋ค.
728x90
'๐ฅ๏ธํ๋ก์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๋ชจ์(TheMore) - Team Project (0) | 2024.04.01 |
---|