8
JAVA 네네네네 네네 네네 Superblr

Java network omok_project_PPT

Embed Size (px)

Citation preview

Page 1: Java network omok_project_PPT

JAVA네트워크 오목 게임Superblr

Page 2: Java network omok_project_PPT

오목 바둑판에 두 사람이 번갈아 돌을 놓아 가로나 세로 , 대각선으로 다섯 개의 연속된 돌을 놓으면 이기는 놀이

Page 3: Java network omok_project_PPT

입장 작동 흐름OK!

입장요청입장요청

오목방 인원 ( 최대 2 명 )- 2 명이하일 때

- 입장 Ok 시 ‘ Omok Msg’ 를 통해 전체 전달

입장 ! 입장 !

Page 4: Java network omok_project_PPT

게임 진행 통신 방법통신 프로토콜 만들기

OK!

[ 클라이언트 메시지 ]A 는 X, Y 에 오목을 뒀어 .

A B

[ 서버 메세지 ]A 가 X,Y 에 돌을 뒀다 .B 의 차례이다 .

[ 서버 메세지 ]A 가 X,Y 에 돌을 뒀다 .B 의 차례이다 .

아 ! 내차례구나 !

Page 5: Java network omok_project_PPT

게임 진행 통신 방법프로토콜 메세지 내용클라이언트

메시지 의미Room_msg 입장 요청

[NAME] 아이디 지정[START] 준비

[DROPGAME] 기권[STONE] 돌을 둔 좌표

[WIN] 승리[STOPGAME] 게임 중지

서버메시지 의미[EXIT] 상대방 퇴장

[ENTER] 상대방 입장[STONE] 상대방 돌을 둔 좌표[COLOR] 돌 색[FULL] 2 명이 된 방

[DROPGAME] 상대방 기권[WIN] 승리[LOSE] 패배

[DISCON-NECT] 상대방 접속 끊김

[PLAYERS] 유저 목록

Ex.

[STONE]3 5//x=3, y=5 인 곳에 돌을 두겠다 .

Page 6: Java network omok_project_PPT

DB TableNum(int) Winner

(varchar)Startdate(varchar)

Enddate(varchar)

Playdate(varchar)

1 A 2015 년 xx 월 xx 일xx 시 xx 분 xx 초

2015 년 xx 월 xx 일xx 시 xx 분 xx 초 xx 분 xx 초

2 B 2015 년 xx 월 xx 일xx 시 xx 분 xx 초

2015 년 xx 월 xx 일xx 시 xx 분 xx 초 xx 분 xx 초

…..

Page 7: Java network omok_project_PPT

클라이언트 다이어그램

public class OmokClient extends Frame implements Runnable, ActionListener

오목판을 객체하여 사용 각 돌의 위치 기억

Omok_pan 은 2 차원 배열로 각 클라이언트의 돌의 위치를 가지고 있다 .

Omok_pan[1][2]=BLACK; //x,y = 1,2 에 흑돌이 놓여져있다 . Omok_pan[4][5]=WHITE; //x,y = 4,5 에 백돌이 놓여져있다 . Omok_pan[7][6]=0; //x,y = 7,6 에 돌이 없다 .

private boolean check(Point p, int col){가로 , 세로 , 대각선 같은 돌이 연속으로 5 개 놓여 졌으면 true 반환아니면 false 반환

}

private int count(Point p, int dx, int dy, int col){

같은 색의 돌의 연속한 돌의 개수를 카운트}

if (check(new Point(x, y), color)) {

이겼을 시에 서버로 내가 이겼다는 메시지 ([WIN]) 를 전송 .

}

Page 8: Java network omok_project_PPT

서버 다이어그램

public class OmokServer

접속하는 클라이언트와 소켓을 연결 쓰레드를 실행 쓰레드를 OmokMessage 객체에게 추가

private OmokMessage OM = new OmokMessage(); // 메시지 객체while (true) {

TS = SS.accept(); // 접속자와 연결된 쓰레드를 대입OT = new Omok_Thread(TS); // 쓰레드 생성OT.start(); // 쓰레드 시작OM.add(OT); // OM 에 쓰레드를 추가

}

class Omok_Thread extends Thread

소켓과 입 · 출력 스트림 외에도 클라이언트에 대한 정보를 가짐 .

클라이언트가 보낸 메시지가 누구의 메시지인지 알기 위함 .

class OmokMessage extends Vector<Object>

쓰레드의 접속여부와 아이디를 참조하여 요소로 담기 위해 벡터 상속

void sendToOthers(Omok_Thread ot, String msg) {

쓰레드와 연결된 클라이언트로 메시지를 전달}