국비 학원에서 강의를 들은지 2개월이 지나 자바 미니 프로젝트를 진행하게 되었습니다.
자바 자체는 학원에서 수강하기 전 2~3개월 전 간단히 유튜브를 통해 학습한 바 있긴 하지만, 처음 주제 선정 및 기능을 추가로 배우면서 뭔가 마음에 안드는 부분도 많이 있어 몇번 엎고 완전히 새로 시작한 결과 실제로 만든 기간은 짧지만 그래도 어느정도 구색은 갖추게 되었습니다.
만든 프로젝트 깃허브 링크는 아래와 같습니다.
https://github.com/red-sprout/TCP_6mok
이때까지 배운 자바의 모든 기능들을 활용해보고자 했고, 특히 TCP 통신을 활용하고 싶었습니다. 이를 활용한게 어떤게 적절할까 생각하다가 아예 온라인 게임을 만들면 어떨까 생각했고, 학원 이전에 학습했던 알고리즘도 한번 적용하기 편한 오목이 어떨까 생각했습니다.
그런데, 오목은 불공정한 게임임이 알려져 있습니다. 따라서 이런 요소는 마음에 들지 않았기에 육목을 진행하게 되었습니다.
2024.02.26 ~ 2024.03.05
까지 기능을 구현하였습니다.
그 이후로는 리펙토링 진행 및 개선점을 찾고 있는 중입니다.
Java, Oracle, JDBC로 진행하였습니다.
육목의 규칙은 다음과 같습니다.
- 흑이 선으로 1개의 수를 둡니다.
- 백이 다음으로 2개의 수를 둡니다.
- 흑이 다음으로 2개의 수를 둡니다.
(회원명)님 환영합니다
를 출력합니다.SixmokGameService.java
에 반영하였습니다.// TCPService.java
public String getIP() {
String serverIP = null;
try {
serverIP = InetAddress.getLocalHost().getHostAddress(); // 본인의 IP로 설정
} catch (UnknownHostException e) {
e.printStackTrace();
}
return serverIP;
}
// TCPService.java
public int getPort(String serverIP) {
int port = 1000; // 포트는 1000으로 우선 설정
for(int i = 1000; i <= 65535; i++) {
if(availablePort(serverIP, i)) {
port = i;
break;
}
}
return port;
}
public boolean availablePort(String host, int port) {
try {
(new Socket(host, port)).close();
return false;
} catch(Exception e) {
return true;
}
}