졸업 논문 - jasu's blog

Download Report

Transcript 졸업 논문 - jasu's blog

게임 프로젝트
ImagePuzzle Game
Java Application
노경섭 (1996301840)
차례
프로젝트 설명
 프로젝트 기술
 팀 및 자원
 프로젝트 제작 기간
 참고문헌

다음, 프로젝트 설명
다음 슬라이드
프로제트 설명

프로젝트의 전체적인 GUI

JAVA (J2SDK 1.2x) 코딩 (약 1300 line)

메뉴구성
 Game : 게임의 시작과 종료, 순위
 Option : 게임에 필요한 옵션설정
 Help : 프로그램 정보

특징




자세한 정보는...
다음 슬라이드
Block의 이동한 횟수에 따라 순위가
결정됨
순위는 파일로 특정 폴더에 저장되어
프로그램 종료 후에도 자료유지
블록의 개수를 사용자가 임의로 지정
프로그램이 인스톨된 시스템 내에 있
는 모든 JPG, GIF파일을 게임에 적
용할 수 있음
프로젝트 설명

계속...
다음 슬라이드

새로 게임을 시작함
사용자 순위를 보여줌

순위 레코드 삭제

프로그램 종료

Game 메뉴
프로젝트 설명

Option 메뉴
계속...
다음 슬라이드

Block 크기를 설정함

사운드 On / Off

Number On / Off

순위에 기록될 사용자 변경
프로젝트 설명

Option 메뉴

계속...
다음 슬라이드
게임에 적용할 특정 이미지를 셋팅
프로젝트 설명

Help 메뉴
계속...
다음 슬라이드

제작자 홈페이지를 Explorer로 Open

프로그램 정보
프로젝트 설명

9 By 9 블록 설정, Number 설정시 Start 버튼을 누른 상태
다음, 프로젝트 기술
다음 슬라이드

원본 이미지 view

선택된 이미지의 파일명 표시

가장 좋은 점수 (가장 적은 불록 이
동횟수가 높은 점수임으로 9999로
Default 함)

현재 사용자의 점수 상황 표시

게임의 시작 버튼

선택된 폴더 안에서 다음 이미지로
바뀜 (특정 폴더에서 이미지를 선택
했을 시에 그 폴더 안에 있는 모든
이미지 파일만을 검출하여 게임에
적용하게 함)
프로젝트 기술





Java 에서 이미지를 다룰 수 있는 간단한 패키지를 이용하여 이미지를 pixel 단위로 컨트롤이
가능하다는 것에 착안, 블록 단위로 이미지 자르기 루틴
이동을 원하는 블록을 클릭했을 때 이동 경로
게임을 시작할 때 블록들을 뒤섞는 루틴
Image Setting에서 특정 폴더 안에서 이미지 파일만 축출하여 Next 버튼으로 순서대로 순회
하는 루틴
Number를 체크 했을 때 각각의 블록에 숫자를 뿌려주는 루틴
자세한 정보는...
다음 슬라이드
프로젝트 기술

블록 단위로 이미지 자르기
3 By 3
g.drawImage(
image_state,
0,
0,
getWidth(),
getHeight(),
(image_state.getWidth(this)/intcheck)*isize_loc,
(image_state.getHeight(this)/intcheck)*jsize_loc,
(image_state.getWidth(this)/intcheck)*isize_loc+(image_state.getWidth(this)/intcheck),
(image_state.getHeight(this)/intcheck)*jsize_loc+(image_state.getHeight(this)/intcheck),
this);
isize++;
계속...
다음 슬라이드
프로젝트 기술

이동을 원하는 블록을 클릭했을 때 이동 경로
화면에 보여지는 모양
내부에서 저장되는 1차원 배열
0 1 2
3 4 5
0 1 2
3 4 5
0 1 2
3 4 5
6 7 8
6 7 8
6 7 8
(1)
(2)
(3)
(1)
0 1 2 3 4 5 6 7 8
(2)
0 1 2 3 4 5 6 7 8
(3)
0 1 2 3 4 5 6 7 8
if(color.equals((Color)p[j].getBackground()))
if(j==i-1||j==i+1||j==i+intcheck||j==i-intcheck)
if(!(((i%intcheck)==0)&&(j==(i-1))))
if(!(((j%intcheck)==0)&&(j==(i+1)))){
블록을 바꿔줌;
}
계속...
다음 슬라이드
i : 클릭한 블록의 위치 값을 가지고 있음.
j : 빈 블록의 위치 값을 가지고 있음.
intcheck : 선택한 블록의 가로(세로) 개수
예에서는 3.
프로젝트 기술

게임을 시작할 때 블록들을 뒤섞는 루틴
초기상태 8부분에서 옮 길수 있는 5 or 7중에
Random으로 걸리는 숫자와 빈 블록을 swap
7이 Random으로 걸렸을 경우, 초기상태의 7과
one=p.length-1;
8을 swap해주고 Rnadom으로 6, 4 or 7중에 걸
for(int j=0;j<(p.length*p.length*5);j++){
리는 숫자와 swap을 함
two=(int)(Math.random()*(p.length));
if(((one-1)==two)||((one+1)==two)||((one+intcheck)==two)||((one-intcheck)==two))
if(!(((one%intcheck)==0)&&(two==(one-1))))
if(!(((two%intcheck)==0)&&(two==(one+1)))){
빈 블록과 Random으로 걸린 블록을 Swap
one=two;
} else --j;
}
0 1 2
3 4 5
0 1 2
3 4 5
0 1 2
3 8 5
6 7 8
6 8 7
6 4 7
계속...
다음 슬라이드
전 단계에서 4가 Random으로 걸렸을 경우 빈
블록인 8과 4를 swap하면 다음에 랜덤으로 걸려
서 swap될 수 있는 곳은 1, 3, 5, 4가 된다.
프로젝트 기술

Next 버튼으로 폴더에 있는 이미지를 순서대로 순회하는 루틴
if(bb.getLabel()=="Next"){
if((list_list[list_count])!=null){
file_name=file.getAbsolutePath()+"/"+list_list[list_count++];
display_file.setText(list_list[list_count-1]);
image_state=Toolkit.getDefaultToolkit().getImage(file_name);
replay_proc();
}else{
display_file.setText("File Not Found");
next_button.setLabel("Previous");
list_count--;
}
}
list_list[] : 현재 폴더에 있는 gif, jpg 파일들의 파일명을
저장하고 있는 1차원 배열, 프로그램 초기 시작시에는 image
폴더.
계속...
다음 슬라이드
프로젝트 기술
Number를 체크 했을 때 각각의 블록에 숫자를 뿌려주는 루틴

 빈 블록이 아닐 경우에만 블록 위에 완성된 그림
이미지의 순서에 맞게 숫자를 뿌려줌.
g.setFont(font);
if(cont!=block_check)
if(number_check.getState()){
g.drawString(String.valueOf(cont),(getWidth()/2)-3,(getHeight()/2)+5);
}
 메뉴에서 Number가 체크되어 있을 경우에는 Panel의 paint 메소드를 이용
하여 cont(블록의 위치번호)를 자신의 블록 가로, 세로 중앙에 뿌려줌.
다음, 프로젝트 팀 및 자원
다음 슬라이드
프로젝트 팀 및 자원

프로젝트에 할당된 자원
– 인원
• 노경섭 1명
– 장비
• SENS 680 (펜티엄 III 850Mhz)
• Window XP Operating System
– 사용툴 및 언어
• Kawa version 3.51a, J2SDK 1.2x
– 지도교수
• 조영임 교수
프로젝트 제작 기간

프로젝트 제작 기간
1 단계
2 단계
3 단계
1일
4일
8일
12일
16일
20일 24일
단계



1단계 : 프로젝트 구상 및 이미지 컨트롤 시험
2단계 : 블록 단위로 이미지 맵핑과 3 By 3 완성
3단계 : 메뉴 항목들에 대한 루틴 완성 및 오류수정, 완성
28일 32일 36일
40일
참고문헌

참고 자료 문헌
–
The Java Programming Language, 3/E
•
•
–
JAVA2 Programming Bible
•
•
–
Deitel & Deitel 공저
유진희, 박성준 공역
JAVA 2
•
–
Arnold, Gosling, Holmes 저
조영임, 길준민, 한연희 공역
정의현, 김성진 공저
Java programming
•
김충석 저