A+ PROJECT! Team #7 131773 신민석, 134245 김홍석, 130181 조대승, 134118 박승현 Dept. Electronics and Computer Engineering Chonnam National University Gwangju I. MOTIVATION III. FUNCTION SPECIFICATION 1. 교육과게임을접목시켜, 쉽게학습하는방법이존재. 2. 처음목표였던 똥피하기 게임과접목시키기로함. 3. 한컴타자연습 게임과같이, 정답이내려오면그에맞는정답을맞추는게임을생각함. 4. 똥피하기 게임의요소를생각하여오답은피하고정답은먹는교육적요소가포함된게임을생각함. 5. 당시연예계 긴또깡 사건을연상하여기본적인역사상식문제부터, 전공에부합되는과목까지아우르는교육적인요소를넣기로함. 6. 정답은먹고오답은피하게하는조작으로좀더재미있게공부하는교육적인게임을만들기로함. 1. 학번이름입력하는 Function 2. 게임스타트버튼 -> 버튼을입력을받아 ( 마우스이용 ) 다음화면으로넘어가는 Function 3. 이미지와음향을설정할수있는설정 4. 구획마다난이도별로입력할수있는 Function 4.1 입력후난이도를구분하여플레이어의선택지를출력하는 5. 게임화면 Function 5.1 교수님이미지를출력하는 5.2 시작전난이도, 문제와카운트를세는 5.3 문제를출력하는 II. CHARACTERISTICS 1. 똥피하기 게임에서똥이내려오는것처럼문제의보기가내려오는특징. 2. 문제의보기의오답과정답을구분하여오답은피하고정답은먹는특징. 5.3.1 난이도별로문제가다르게랜덤으로나오게하는 5.4 보기가내려오게하는 5.4.1 난이도별로다르게그에맞는문제에
대한보기를랜덤으로출력하는 5.4.2 난이도별로떨어지는보기의속도를다르게출력하는 5.5 학생이미지를출력하는 5.6 키보드방향키의입력을받아조작을출력하는 5.7 학생이보기에닿음을구분하여입력받는 5.8 학생이닿은보기가정답인지오답인지구분하여입력받는 5.8.1 정답인지오답인지구분을입력받아오 6. 게임결과 Function 6.1 hp를환산을입력받아성적을계산하는 6.2 성적마다다른오디오를출력하는 6.3 교수님이미지를출력하는 6.4 계산된성적을출력하는 6.4.1 Clear or Course Retake를출력하는 6.4.2 난이도선택창으로돌아가는값을입력받는. 답이면 hp 차감을출력하는 5.8.2 정답이면다음문제를출력하는 5.8.3 정답을제외한보기가모두땅에떨어졌을때 hp 차감을출력후다음문제를출력하는 5.9 학생 hp가모두차감될때결과화면을출력하는 5.10 학생상태를출력하는 5.11. 오디오 Function 5.11.1 정답과오답을먹었을때 ( 입력 ) 효과음출력 5.11.2 문제출력시효과음을출력하는 IV. REQUIREMENT LISTS 1. 사용자정보플레이어마다사용자정보게임에저장. 2. 게임설명조작법, 전체적게임흐름에대한설명. 3. 난이도선택원하는난이도와과목을선택. 4. 간단한조작교육적인목적을위한간단한조작법. 5. 플레이어상태시각적으로알기위한상태바. 6. 이미지배경화면, 교수님을형상한이미지. 7. 음향플레이어가보기를먹었을때의효과음. 게임배경음악.
플레이어의 hp. V. USECASES hp 총량 100. 1. 초기화면 1.1 학번이름을입력하는창이나온다. 1.2 게임시작버튼누르면난이도선택화면으로넘어간다. 2. 난이도및과목선택화면. 2.1 easy 한국사보기가떨어지는속도가제일느림. 2.2 normal 경제상식보기가떨어지는속도가두번째로느림. 2.3 hard 물리보기가떨어지는속도가세번째로느림. 2.4 hell 확률과통계보기가떨어지는속도가제일빠름. 3. 난이도및과목선택후시작. 4. 게임진행 4.1 교수님이미지나오고교수님옆에문제제출. 스테이지난이도를알려준후카운트 ( 3 2 1), 그리고보기가내려옴. 4.2 하단에플레이어의상태창. 플레이어의학번과이름. 4.3 플레이어캐릭터키보드로조작 ( 좌우조작 ). 4.3.1 캐릭터가정답을먹었을때. hp 안깎임. 다음문제로진행. 4.3.2 캐릭터가오답을먹었을때. hp 깎임. 정답먹을때까지계속내려옴. 정답을먹었을때. hp 안깎임. 다음문제로진행. 4.3.3 정답을먹지않고보기가모두땅에떨어졌을경우. hp 깎임. 다음문제로진행. 5. 문제종류 5.1 일반문제총 10문제제출오답하나먹었을때깎이는 hp양 - 10 보기가모두땅에떨어졌을경우깎이는 hp양 10 5.2 중간고사문제 10문제나올때 3번째문제가중간고사문제정답먹었을때.
hp 안깎임. 오답먹었을때. hp 가 2 배깎임. 성적이 B 미만인경우스테이지클리어실패. 6.3 게임결과창확인버튼누르면난이도선택화면창 으로넘어감. 5.3 기말고사문제 10 문제나올때 10 번째문제가기말고사문제. VI. USECASE DIAGRAM 정답먹었을때. hp 안깎임. 오답먹었을때. hp가 2배깎임. 6. 게임결과 6.1 게임결과창나오기전에 hp가모두소진된경우 F출력. 스테이지클리어실패. 6.2 hp를학점으로환산 6.2.1 hp가한번도깎이지않았을경우 A+ 성적출력. 6.2.2 hp 가 90 이상 100 미만인경우 VII. SEQUENCE DIAGRAM A 성적출력. 6.2.3 hp가 70이상 90미만인경우 B+ 성적출력. 6.2.4 hp가 55이상 70미만인경우 B 성적출력. 성적이 B이상인경우스테이지클리어. 6.2.5 hp가 55미만인경우 F 성적출력.
2. 난이도및과목선택화면 설정창 VIII. USER INTERFACE DESIGN 1. 게임실행화면
4. 게임진행화면 게임종료알림이미지 시험문제출력화면 5. 게임결과화면 다음문제알림화면
IX. CLASS DIAGRAM XI. SCREENSHOT OF APPLICATION DEMO X. SCREENSHOT OF API MANUAL
XII. 각팀원별 WORK DISTRIBUTION 및 RESULT 기능구현완료 ( 전체 ) 1. 초기화면기능 1.1 JTextField 를이용한학번, 이름입력. 1.2 buttonactionlistener 를이용한다음화면넘기기. 2. 난이도선택기능 2.1 Jbutton 을이용한선택후과목정보전달. 2.2 Qmanager 클래스를이용한메모장에저장된문제와보기를배열에저장. 3. 설정창기능 3.1 Jbutton 을이용한이미지선택. 3.2 선택된이미지정보를게임진행화면에전달. 3.3 배경음악및효과음 on/off 선택. 4. 게임진행기능 4.1 3,2,1 카운트를세고게임을시작하는기능. 4.2 배열에저장된문제를문제출력창에 Draw 하는기능. 4.3 문제에대한보기를 Ball 과 BallRect 의틀안에 Draw 하는기능. 4.4 BallGenerator 클래스를통해 Thread 로보기의위치가지정될랜덤한좌표를생성하고, 생성된좌표에보기 (Ball) 를 Drop 시키는기능. 4.5 난이도및과목에따라 Ball 을 Drop 시키는속도를다르게지정해주는기능. 4.6 Check 클래스로학생이미지와보기의충돌을확인해주는기능. 4.7 충돌확인후학생이미지와닿은 Ball 이정답인지아닌지를구분하여그값에따라 HP 값을조정하고다음문제또는게임종료를출력하는기능. 4.8 키보드의방향키입력값을받아학생이미지를좌우로움직이게하는기능. 4.9 문제출력순서가 3 번째, 10 번째인지를구분하여시험문제를출력시키는기능. 5. 게임결과기능 5.1 Student 클래스에저장된 HP 값을학점으로환산하여그값을 Jlabel 로출력하는기능. 5.2 Jbutton 을통해난이도선택창으로돌아가는버튼기능. 6. GUI 게임실행화면배경이미지. 난이도선택화면배경이미지. 난이도선택화면버튼이미지. 설정창버튼이미지. 설정창배경이미지. 게임진행창배경이미지. 학생이미지.
7. 음향 교수님이미지. Hp 차감이미지. 다음문제알림이미지. 시험문제알림이미지. 게임종료알림이미지. 게임결과화면배경이미지. Sound 메소드를통한배경음악설정. Sound 메소드를통해정답과오답충돌시효과음. Sound 메소드를이용해교수님음성출력. 1. Qmanager Class 게임진행을위해문제와보기를불러오게하는기능. Screen2 의버튼에서과목정보를받는 getsub 메소드. 텍스트파일로부터문제를받아저장하는 ArrayList 인 Qlist 와보기를받아저장하는 ArrayList 인 Alist 생성. Qlist 와 Alist 를가지고텍스트파일을저장하는 setqlist 메소드와 setalist 메소드. 기능구현완료 ( 개인 ) 조대승 (432 line) 1. First Class 초기화면배경이미지 JtextField 를통한학번이름을입력. setid 와 setname, getid, getname 메소드를통해 Student Class 에, 입력된학번과이름을저장. Button Action 을통해 Screen2 로넘어가는기능. 2. Setting Class 버튼별이미지. Action 을통해버튼을누르면눌러진이미지로교환후거기에따른설정값을저장. 저장된이미지설정값을 MyFrame 에 Setting. 3. Check Class 학생이미지와 Ball 의경계값을사각형간의충돌처리방법을이용해충돌체크, 그리고추가적으로 Ball 이바닥에떨어짐을감지하는 CollisionCheck 메소드구현. 신민석 (443 line) Qlist 와 Alist 에저장된문제와보기를받는 setqarr 메소드와 setaarr 메소드. 2. Screen2 Class 버튼별이미지넣기. Button Action 을통한눌러진버튼에대한과목정보를전달하는기능. 난이도선택창배경이미지. 3. MyCanvas Class 안시험문제기능 Render 메소드에서문제 3 번째와 10 번째를구분하여그때시험문제를 Draw 하게한다. 김홍석 (605 line) 1. MyCanvas Class Start_Timer 메소드를이용하여시작했을때 3,2,1 카운터를세고시작하게함. Thread 실행부 run 부분에문제와보기그리기, 충돌체크등모든작업이이루어짐. 난이도별로속도값을다르게주어줌. Check Class 의 CollisionCheck 값을받아바닥과충돌이면 0, 정답과충돌이면 1, 오답이면 -1 값을리턴받아각각상황에따라, -1 를리턴받으면오답이라판단하여 ball 과 ballrect 를모두지우고 hp 값을깎고, 0 을리턴받으면 ball 과 ballrect 을지운다. 1 을리턴받으면다음라운드로넘어가게하는 boolean 타입
new_round 변수값을 true 값으로바꾸어다음문제로넘어갈수있게하고 ball 과 ballrect 를전체적으로지운다. 그리고보기가모두바닥에충돌되었을때는 hp 값을깎고 new_round 값을 true 값을바꾸어다음문제로넘어갈수있게함. Render 메소드를이용하여문제와보기를 Draw 하게함. 2. BallGenerator Class BallGenerate 메소드를이용하여 Ball, BallRect 객체를생성하고문제와보기를넣게함. BallDrop 메소드를이용하여보기의좌표를조정하여보기를 Drop 시킴. Ball 객체의크기를계산하여세팅후경계값을가지게하는메소드구현. 4. MyKeyListener Class 키보드방향키값을입력받아학생의이미지를좌우로움직이게하는기능. 5. GameResult Class 게임결과화면배경이미지. showgrade 값을받아와 Jlabel 로성적출력. 돌아가기버튼을누르면난이도선택창으로돌아가게하는기능. 6. Sound 메소드배경음악과각효과음을배치. 3. MyFrame Class 게임진행배경화면이미지. 설정창에서설정된값에따른이미지 Draw. Hp 값에따라 Hp 이미지를깎음을 Draw. 박승현 (340 line) 1. Student Class 학생의정보를모두저장하는 Class. 게임에서의이미지좌표, 이미지크기, 입력받은학번, 이름을저장.(getX, gety, getname 등메소드 ) sethp, gethp 메소드를통해학생의 HP 을설정저장. showgrade 메소드를통해 HP 값을학점으로환산. 2. Ball Class 문제의보기를저장하기위한틀. 보기의좌표값과좌표값에대한메소드구현. 3. BallRect Class Ball 객체의경계값을생성.