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

Preview:

DESCRIPTION

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

Citation preview

Network 두더지 잡기 게임2 조

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

01 최현식 0061060 김주호

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

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

개발툴Edit plusphotoshop

Server – client socket

ServerSocket

ClientSocket

connect() accept()

서버 구조Server

Viewtext.java Info.java Server.java

Server 상태표시 Server 정보 Main()

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

Server – info.java

Class UserClass RoomManagerClass ChatterClass TextManagementClass db

TextManagement class

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

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

JDBCDriverManager

Jdbc:mysql

Mysql

getConnection()

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

DataBase 구조

Userinfo table

id name score lastlogindatepass

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;

}

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 - 경고창

LoginFrame.java

로그인 화면

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

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

LoginFrame.java

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

AccountFrame.java

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

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

WaitRoomFrame.java

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

뜬다 . – 아이디 , 점수

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

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);

cRoomFrmae.java

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

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

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

CreateRoomFrame.java

첫번째 User 의 Message

두번째 User 의Message

텍스트필드 입력창

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

GameRoom.java

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

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

GameRoom.java

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

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

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

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

Recommended