network 두더지 잡기 게임

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

Upload: courtney-erickson

Post on 30-Dec-2015

92 views

Category:

Documents


0 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Network  두더지 잡기 게임

Network 두더지 잡기 게임

2 조 9861081 신흥섭 9861009

권석진 9861012 김관수 9961201 최현식 0061060 김주호

Page 2: Network  두더지 잡기 게임

개발환경 및 개발 툴

개발환경j2sdk1.4.1_01mm.mysql-2.0.14-bin.jarMysql-3.24.54-nt

개발툴Edit plusphotoshop

Page 3: Network  두더지 잡기 게임

Server – client socket

ServerSocket

ClientSocket

connect() accept()

Page 4: Network  두더지 잡기 게임

서버 구조

Server

Viewtext.java Info.java Server.java

Server 상태표시 Server 정보 Main()

Page 5: Network  두더지 잡기 게임

서버 상태 표시

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

Page 6: Network  두더지 잡기 게임

Server – info.java

Class UserClass RoomManagerClass ChatterClass TextManagementClass db

Page 7: Network  두더지 잡기 게임

TextManagement class

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

Page 8: Network  두더지 잡기 게임

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.l

ength());boolean temp = User[sid].certify(id,pass);

}

Page 9: Network  두더지 잡기 게임

JDBC

DriverManager

Jdbc:mysql

Mysql

getConnection()

Page 10: Network  두더지 잡기 게임

Db class

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

Page 11: Network  두더지 잡기 게임

DataBase 구조

Userinfo table

id name score lastlogindatepass

Page 12: Network  두더지 잡기 게임

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  두더지 잡기 게임

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  두더지 잡기 게임

LoginFrame.java

로그인 화면

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

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

Page 15: Network  두더지 잡기 게임

LoginFrame.java

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

Page 16: Network  두더지 잡기 게임

AccountFrame.java

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

Page 17: Network  두더지 잡기 게임

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  두더지 잡기 게임

WaitRoomFrame.java

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

뜬다 . – 아이디 , 점수

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

뜬다 .

Page 19: Network  두더지 잡기 게임

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  두더지 잡기 게임

cRoomFrmae.java

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

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

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

Page 21: Network  두더지 잡기 게임

CreateRoomFrame.java

첫번째 User 의 Message

두번째 User 의Message

텍스트필드 입력창

Page 22: Network  두더지 잡기 게임

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  두더지 잡기 게임

GameRoom.java

게임화면1. 두더지가 튀어나오면

마우스로 클릭하여 잡는다 .

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

Page 24: Network  두더지 잡기 게임

GameRoom.java

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

Page 25: Network  두더지 잡기 게임

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.rea

dMessage = 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  두더지 잡기 게임

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

{if ((me.getX() > 45 && me.getX() < 65) && (me.getY() > 118 && me.getY() < 138) && user.mol

eC[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 김주호