170 likes | 1.24k Views
게임 프로젝트. ImagePuzzle Game Java Application 노경섭 (1996301840). 차례. 프로젝트 설명 프로젝트 기술 팀 및 자원 프로젝트 제작 기간 참고문헌. 다음 , 프로젝트 설명. 다음 슬라이드. 프로제트 설명. 프로젝트의 전체적인 GUI. JAVA (J2SDK 1.2x) 코딩 ( 약 1300 line) 메뉴구성 Game : 게임의 시작과 종료 , 순위 Option : 게임에 필요한 옵션설정 Help : 프로그램 정보 특징
E N D
게임 프로젝트 ImagePuzzle Game Java Application 노경섭 (1996301840)
차례 • 프로젝트 설명 • 프로젝트 기술 • 팀 및 자원 • 프로젝트 제작 기간 • 참고문헌 다음, 프로젝트 설명 다음 슬라이드
프로제트 설명 • 프로젝트의 전체적인 GUI • JAVA (J2SDK 1.2x) 코딩 (약 1300 line) • 메뉴구성 • Game : 게임의 시작과 종료, 순위 • Option : 게임에 필요한 옵션설정 • Help : 프로그램 정보 • 특징 • Block의 이동한 횟수에 따라 순위가 결정됨 • 순위는 파일로 특정 폴더에 저장되어 프로그램 종료 후에도 자료유지 • 블록의 개수를 사용자가 임의로 지정 • 프로그램이 인스톨된 시스템 내에 있는 모든 JPG, GIF파일을 게임에 적용할 수 있음 자세한 정보는... 다음 슬라이드
프로젝트 설명 • 새로 게임을 시작함 • 사용자 순위를 보여줌 • 순위 레코드 삭제 • 프로그램 종료 • Game 메뉴 계속... 다음 슬라이드
프로젝트 설명 • Block 크기를 설정함 • 사운드 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, 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 0 1 2 0 1 2 0 1 2 3 4 5 6 7 8 (1) 3 4 5 3 4 5 3 4 5 0 1 2 3 4 5 6 7 8 (2) 6 7 8 6 7 8 6 7 8 0 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; } 0 1 2 0 1 2 0 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가 된다. 계속... 다음 슬라이드
프로젝트 기술 • 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일 28일 32일 36일 40일 프로젝트 제작 기간 • 프로젝트 제작 기간 단계 • 1단계 : 프로젝트 구상 및 이미지 컨트롤 시험 • 2단계 : 블록 단위로 이미지 맵핑과 3 By 3 완성 • 3단계 : 메뉴 항목들에 대한 루틴 완성 및 오류수정, 완성
참고문헌 • 참고 자료 문헌 • The Java Programming Language, 3/E • Arnold, Gosling, Holmes 저 • 조영임, 길준민, 한연희 공역 • JAVA2 Programming Bible • Deitel & Deitel 공저 • 유진희, 박성준 공역 • JAVA 2 • 정의현, 김성진 공저 • Java programming • 김충석 저