Network 두더지 잡기 게임

Download Report

Transcript 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
Viewtext.java
Info.java
Server상태표시
Server 정보
Server.java
Main()
서버 상태 표시
서버에서 서버의 상
태를 보여주는 창
Mysql에 접속하여
접속한곳을 저장하
고 사용자의 아이디
와 password, 점수
를 불러와 보여준다.
Server – info.java
Class
Class
Class
Class
Class
User
RoomManager
Chatter
TextManagement
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);
}
JDBC
DriverManager
getConnection()
Jdbc:mysql
Mysql
Db class
String url =
- jdbc url을 이용하여
"jdbc:mysql://local
커넥션을 열기위해
host:3306/taza";
DriverManager의
con =
getConnection() 메
DriverManager.get
소드를 호출한다
Connection(url,user
,psw);
Class.forName("org - Mysql 에서 mm 드
라이버를 로드한다.
.gjt.mm.mysql.Driv
er");
DataBase 구조
Userinfo table
id
pass
name
score
lastlogindate
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 room
GameEnding.java – ending 화면
GameRoom.java – 게임실
LoginFrame.java - 로그인
MoleGame.java – main()
NetClient.java – client socket
QuitDialog.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.java
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);
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 김주호