![Page 1: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/1.jpg)
Network 두더지 잡기 게임2 조
9861081 신흥섭 9861009 권석진 9861012 김관수 99612
01 최현식 0061060 김주호
![Page 2: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/2.jpg)
개발환경 및 개발 툴개발환경
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 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/3.jpg)
Server – client socket
ServerSocket
ClientSocket
connect() accept()
![Page 4: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/4.jpg)
서버 구조Server
Viewtext.java Info.java Server.java
Server 상태표시 Server 정보 Main()
![Page 5: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/5.jpg)
서버 상태 표시서버에서 서버의 상태를 보여주는 창Mysql 에 접속하여 접속한곳을 저장하고 사용자의 아이디와 password, 점수를 불러와 보여준다 .
![Page 6: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/6.jpg)
Server – info.java
Class UserClass RoomManagerClass ChatterClass TextManagementClass db
![Page 7: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/7.jpg)
TextManagement class
01 사용자 인증02 사용자 추가03 만들어진 방04 접속자 명당05 사용자정보06 방만들기07 선택한 방의 정보08 채팅 메시지 전달09 방에 들어가기10 방에서 나가기11 게임 시작하기
![Page 8: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/8.jpg)
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 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/9.jpg)
JDBCDriverManager
Jdbc:mysql
Mysql
getConnection()
![Page 10: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/10.jpg)
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 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/11.jpg)
DataBase 구조
Userinfo table
id name score lastlogindatepass
![Page 12: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/12.jpg)
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 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/13.jpg)
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 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/14.jpg)
LoginFrame.java
로그인 화면
1. 가입버튼을 누르면 AccountFrame 이 호출
2. 기존의 가입자는 아이디와 비밀번호를 입력받아 info class 에서 usersearch() 를 통해 인증
![Page 15: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/15.jpg)
LoginFrame.java
아이디와 패스워드를 누르면 waring class 가 호출
![Page 16: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/16.jpg)
AccountFrame.java
가입버튼을 누르면 AccountFrame 이 활성화아이디 , 비밀번호 ,이름을 입력받아 Db에 저장후 다시 LoginFrame 활성화
![Page 17: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/17.jpg)
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 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/18.jpg)
WaitRoomFrame.java
아이디를 클릭하면그 사용자의 정보가
뜬다 . – 아이디 , 점수
만들어져 있는 방이있다면 이 곳에 list 가 뜬다 .
![Page 19: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/19.jpg)
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 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/20.jpg)
cRoomFrmae.java
방 이름을 적고 확인을 누르면 방이 만들어 진다 .
비밀번호를 만들고 싶으면 체크한 후 방을
만들면 비밀방을 만들 수 있다 .
![Page 21: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/21.jpg)
CreateRoomFrame.java
첫번째 User 의 Message
두번째 User 의Message
텍스트필드 입력창
![Page 22: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/22.jpg)
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 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/23.jpg)
GameRoom.java
게임화면1. 두더지가 튀어나오면 마우스로 클릭하여 잡는다 .
2. 클릭하면 점수가 올라간다 .
![Page 24: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/24.jpg)
GameRoom.java
게임이 종료되면 점수를 표시하고 변경된 점수를 Db에 저장한 후 일정시간이 지나면 다시 채팅방으로 돌아간다 .
![Page 25: Network 두더지 잡기 게임 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/25.jpg)
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 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/26.jpg)
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 김주호](https://reader030.vdocuments.site/reader030/viewer/2022020714/5a4d1b5a7f8b9ab0599aac17/html5/thumbnails/27.jpg)
마치며…2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호