ImagePuzzle Game Java Application 노경섭 (1996301840) 게임 프로젝트 ImagePuzzle Game Java Application 노경섭 (1996301840)
차례 프로젝트 설명 프로젝트 기술 팀 및 자원 프로젝트 제작 기간 참고문헌 다음, 프로젝트 설명 다음 슬라이드
프로제트 설명 다음 슬라이드 자세한 정보는... 프로젝트의 전체적인 GUI JAVA (J2SDK 1.2x) 코딩 (약 1300 line) 메뉴구성 Game : 게임의 시작과 종료, 순위 Option : 게임에 필요한 옵션설정 Help : 프로그램 정보 특징 Block의 이동한 횟수에 따라 순위가 결정됨 순위는 파일로 특정 폴더에 저장되어 프로그램 종료 후에도 자료유지 블록의 개수를 사용자가 임의로 지정 프로그램이 인스톨된 시스템 내에 있는 모든 JPG, GIF파일을 게임에 적용할 수 있음 자세한 정보는... 다음 슬라이드
프로젝트 설명 새로 게임을 시작함 사용자 순위를 보여줌 순위 레코드 삭제 프로그램 종료 Game 메뉴 계속... 다음 슬라이드
프로젝트 설명 다음 슬라이드 계속... Block 크기를 설정함 Option 메뉴 사운드 On / Off Number On / Off 순위에 기록될 사용자 변경 Option 메뉴 계속... 다음 슬라이드
프로젝트 설명 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, getWidth(), 블록 단위로 이미지 자르기 g.drawImage( image_state, 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차원 배열 1 2 1 2 1 2 1 2 3 4 5 6 7 8 (1) 3 4 5 3 4 5 3 4 5 1 2 3 4 5 6 7 8 (2) 6 7 8 6 7 8 6 7 8 1 2 3 4 5 6 7 8 (3) (1) (2) (3) 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과 8을 swap해주고 Rnadom으로 6, 4 or 7중에 걸리는 숫자와 swap을 함 게임을 시작할 때 블록들을 뒤섞는 루틴 one=p.length-1; for(int j=0;j<(p.length*p.length*5);j++){ 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; } 1 2 1 2 1 2 3 4 5 3 4 5 3 8 5 6 7 8 6 8 7 6 4 7 전 단계에서 4가 Random으로 걸렸을 경우 빈 블록인 8과 4를 swap하면 다음에 랜덤으로 걸려서 swap될 수 있는 곳은 1, 3, 5, 4가 된다. 계속... 다음 슬라이드
프로젝트 기술 다음 슬라이드 계속... 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일 4일 8일 12일 16일 20일 24일 28일 32일 36일 40일 1 단계 2 단계 3 단계 단계 1단계 : 프로젝트 구상 및 이미지 컨트롤 시험 2단계 : 블록 단위로 이미지 맵핑과 3 By 3 완성 3단계 : 메뉴 항목들에 대한 루틴 완성 및 오류수정, 완성
참고문헌 참고 자료 문헌 The Java Programming Language, 3/E Arnold, Gosling, Holmes 저 조영임, 길준민, 한연희 공역 JAVA2 Programming Bible Deitel & Deitel 공저 유진희, 박성준 공역 JAVA 2 정의현, 김성진 공저 Java programming 김충석 저