network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201...

27
Network 두두두 두두 두두 2조 9861081 두두두 9861009 두두두 9861012 두두두 9961201 두두두 0061060 두두두

Upload: priscilla-mccoy

Post on 18-Jan-2018

227 views

Category:

Documents


0 download

DESCRIPTION

Server – client socket ServerSocket ClientSocket connect()accept()

TRANSCRIPT

Page 1: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

Network 두더지 잡기 게임2 조

9861081 신흥섭 9861009 권석진 9861012 김관수 99612

01 최현식 0061060 김주호

Page 2: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

개발환경 및 개발 툴개발환경

j2sdk1.4.1_01mm.mysql-2.0.14-bin.jarMysql-3.24.54-nt

개발툴Edit plusphotoshop

Page 3: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

Server – client socket

ServerSocket

ClientSocket

connect() accept()

Page 4: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

서버 구조Server

Viewtext.java Info.java Server.java

Server 상태표시 Server 정보 Main()

Page 5: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

서버 상태 표시서버에서 서버의 상태를 보여주는 창Mysql 에 접속하여 접속한곳을 저장하고 사용자의 아이디와 password, 점수를 불러와 보여준다 .

Page 6: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

Server – info.java

Class UserClass RoomManagerClass ChatterClass TextManagementClass db

Page 7: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

TextManagement class

01 사용자 인증02 사용자 추가03 만들어진 방04 접속자 명당05 사용자정보06 방만들기07 선택한 방의 정보08 채팅 메시지 전달09 방에 들어가기10 방에서 나가기11 게임 시작하기

Page 8: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

TextManagement class 소스class TextManagement

{String control = null;String realText = null;String id=null , pass=null , name=null;

TextManagement(String text, int sid){control = text.substring(0,2);realText = text.substring(3, text.length());//System.out.print(control+" Send ");

if (control.equals("01")) // 01 사용자 인증부분{id = realText.substring(0,realText.indexOf(",",0));pass = realText.substring(realText.indexOf(",",0)+1,realText.length());boolean temp = User[sid].certify(id,pass);}

Page 9: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

JDBCDriverManager

Jdbc:mysql

Mysql

getConnection()

Page 10: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

Db classString url = "jdbc:mysql://localhost:3306/taza";con = DriverManager.getConnection(url,user,psw);Class.forName("org.gjt.mm.mysql.Driver");

- jdbc url 을 이용하여 커넥션을 열기위해 DriverManager 의 getConnection() 메소드를 호출한다

- Mysql 에서 mm 드라이버를 로드한다 .

Page 11: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

DataBase 구조

Userinfo table

id name score lastlogindatepass

Page 12: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

Db class – 소스 부분public String userName(String id)

{String te="";try{

stmt = con.createStatement();result = stmt.executeQuery("Select name from

userinfo Where id='"+id+"'");if(result.next()) te = result.getString(1);stmt.close();

}catch(Exception e) {System.out.println(e.toString());}return te;

}

Page 13: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

Client AccountFrame.java - user 추가CreateRoomFrame.java – 방 만들기cRoomFrame.java – chatting roomGameEnding.java – ending 화면GameRoom.java – 게임실LoginFrame.java - 로그인MoleGame.java – main() NetClient.java – client socketQuitDialog.java – Quit 버튼처리UserInfo.java – 게임에 관한 정보관리WaitRoomFrame.java - 대기실Warning.java - 경고창

Page 14: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

LoginFrame.java

로그인 화면

1. 가입버튼을 누르면 AccountFrame 이 호출

2. 기존의 가입자는 아이디와 비밀번호를 입력받아 info class 에서 usersearch() 를 통해 인증

Page 15: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

LoginFrame.java

아이디와 패스워드를 누르면 waring class 가 호출

Page 16: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

AccountFrame.java

가입버튼을 누르면 AccountFrame 이 활성화아이디 , 비밀번호 ,이름을 입력받아 Db에 저장후 다시 LoginFrame 활성화

Page 17: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

AccountFrame.java 소스netClient.sendMessage("02 "+id+","+pass1+"."+name);

w:while(true){if (!(netClient.readMessage==null)){String getMemo = netClient.readMessage,control=null;netClient.readMessage=null;

control = getMemo.substring(0,2);getMemo = getMemo.substring(3,getMemo.length());

if (control.equals("00")) // 유저 추가 실패{new Warning(this,getMemo);break w;}if (control.equals("01")) // 정확히 유저가 추가{new Warning(this,getMemo);LoginFrame_Window();break w;}}

Page 18: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

WaitRoomFrame.java

아이디를 클릭하면그 사용자의 정보가

뜬다 . – 아이디 , 점수

만들어져 있는 방이있다면 이 곳에 list 가 뜬다 .

Page 19: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

WaitRoomFrame.javaclass ServerInfo extends Thread // 서버와 계속적인 통신을 위해 ..

{String getMemo=null,control=null;String[] userList = new String[100];String[] sRoomList = new String[100];

public void run(){boolean temp = false;while (true){if (netClient.readMessage != null){getMemo = netClient.readMessage; // 메시지를 받아와서control = getMemo.substring(0,2); // 앞 2 문자만 때어내고

getMemo = getMemo.substring(3,getMemo.length()); // 나머지netClient.readMessage = null;if (control.equals("03" )) // 만들어진 방목록 받기{String buffer = null; boolean tmp = true;// 방리스트 갱신하기 - 없는 방목록 지우기sRoomList = roomList.getItems();for (int i=0; i<sRoomList.length;i++)if (getMemo.indexOf(sRoomList[i]) == -1) roomList.delItem(i);

Page 20: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

cRoomFrmae.java

방 이름을 적고 확인을 누르면 방이 만들어 진다 .

비밀번호를 만들고 싶으면 체크한 후 방을

만들면 비밀방을 만들 수 있다 .

Page 21: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

CreateRoomFrame.java

첫번째 User 의 Message

두번째 User 의Message

텍스트필드 입력창

Page 22: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

CreateRoomFrame.java 소스 class NetThread extends Thread

{public void run(){String getMemo="",control="";String[] temp = new String[8];String tID ="";int time=0;w:while(true){if (netClient.readMessage != null){ System.out.println(netClient.readMessage);getMemo=netClient.readMessage; // 메시지를 받아와서control = getMemo.substring(0,2); // 앞 2 문자만 때어내고getMemo = getMemo.substring(3,getMemo.length()); // 나머지 문자들netClient.readMessage=null;if (control.equals("07")) // 방 정보를 받아옴{int i=0;temp = textCutter("'", getMemo);label1.setText(" 방 이름 : "+temp[0]);user.roomMateID = textCutter(",",getMemo);}if (control.equals("08")) // 체팅 메시지를 받았을때{tID = getMemo.substring(0,getMemo.indexOf(","));getMemo = getMemo.substring(getMemo.indexOf(",")+1,getMemo.length());

Page 23: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

GameRoom.java

게임화면1. 두더지가 튀어나오면 마우스로 클릭하여 잡는다 .

2. 클릭하면 점수가 올라간다 .

Page 24: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

GameRoom.java

게임이 종료되면 점수를 표시하고 변경된 점수를 Db에 저장한 후 일정시간이 지나면 다시 채팅방으로 돌아간다 .

Page 25: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

GameRoom.java-Thread 부분public void run()

{while (true){if (user.start==6) {GameRoomFrame_End();this.stop();}if (netClient.readMessage != null){getMemo = netClient.readMessage; // 메시지를 받아와서control = getMemo.substring(0,2); // 앞 2 문자만 때어내고getMemo = getMemo.substring(3,getMemo.length()); // 나머지 문자 netClient.readMessage = null;if (control.equals("11")) // 게임준비{ user.start=1; System.out.println(" 게임준비 ");}else if (control.equals("12")) // 게임시작{ user.start=2; System.out.println(" 게임시작 ");}else if (control.equals("13")) // 게임중{ user.start=3; System.out.println(" 게임중 ");}

Page 26: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

GameRoom.java-Event 부분public void mouseClicked(MouseEvent me)

{if ((me.getX() > 45 && me.getX() < 65) && (me.getY() > 118 && me.getY() < 138) && user.moleC[0][0] == true){netClient.sendMessage("15 "+user.roomNum+","+user.id); // 서버에 내가 입력했다고 알려줌 ..user.roomMateScore[0]++;}if ((me.getX() > 140 && me.getX() < 160) && (me.getY() > 118 && me.getY() < 138) && user.moleC[0][1] == true){netClient.sendMessage("15 "+user.roomNum+","+user.id);user.roomMateScore[0]++;}if ((me.getX() > 235 && me.getX() < 255) && (me.getY() > 118 && me.getY() < 138) && user.moleC[0][2] == true){netClient.sendMessage("15 "+user.roomNum+","+user.id);user.roomMateScore[0]++;}

Page 27: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호

마치며…2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호