1 / 27

Network 두더지 잡기 게임

Network 두더지 잡기 게임. 2 조 9861081 신흥섭 9861009 권석진 9861012 김관수 9961201 최현식 0061060 김주호. 개발환경 및 개발 툴. 개발환경 j2sdk1.4.1_01 mm.mysql-2.0.14-bin.jar Mysql-3.24.54-nt 개발툴 Edit plus photoshop. Server – client socket. ServerSocket. connect(). accept(). ClientSocket. 서버 구조. Server.

Download Presentation

Network 두더지 잡기 게임

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 개발환경 및 개발 툴 • 개발환경 j2sdk1.4.1_01 mm.mysql-2.0.14-bin.jar Mysql-3.24.54-nt • 개발툴 Edit plus photoshop

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

  4. 서버 구조 Server Viewtext.java Info.java Server.java Server상태표시 Server 정보 Main()

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

  6. Class User Class RoomManager Class Chatter Class TextManagement Class db Server – info.java

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

  8. 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); }

  9. JDBC DriverManager getConnection() Jdbc:mysql Mysql

  10. String 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 드라이버를 로드한다. Db class

  11. DataBase 구조 Userinfo table id pass name score lastlogindate

  12. 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; }

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

  14. 로그인 화면 가입버튼을 누르면 AccountFrame이 호출 기존의 가입자는 아이디와 비밀번호를 입력받아 info class에서 usersearch()를 통해 인증 LoginFrame.java

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

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

  17. 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; } } AccountFrame.java 소스

  18. WaitRoomFrame.java 아이디를 클릭하면 그 사용자의 정보가 뜬다. –아이디,점수 만들어져 있는 방이 있다면 이 곳에 list가 뜬다.

  19. class 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); WaitRoomFrame.java

  20. cRoomFrmae.java 방 이름을 적고 확인 을 누르면 방이 만들 어 진다. 비밀번호를 만들고 싶으면 체크한 후 방을 만들면 비밀방을 만들 수 있다.

  21. CreateRoomFrame.java 첫번째 User의 Message 두번째 User의 Message 텍스트필드 입력창

  22. 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());

  23. 게임화면 두더지가 튀어나오면 마우스로 클릭하여 잡는다. 클릭하면 점수가 올라간다. GameRoom.java

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

  25. 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("게임중"); }

  26. 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]++; }

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

More Related