1. 비쥬얼 프로그래밍 텀 프로젝트 최종 보고서
- Animal Evolving -
과 목 : 비쥬얼프로그래밍
2. 학 과 : 정보통신공학과
담당교수 : 박동규 교수님
이름 : 20163021 오창석
20163026 이종범
제출일 : 2019. 12. 17.(수)
목차
Animal Evolving
1. 메인 화면
2. 게임 설명 화면
3. 게임 내부 화면
4. 게임 패배시
5. 게임 성공시
3. 1. 메인 화면
설명
Evolving Animals라는 게임의 메인 화면이며 4개의 라디오버튼에 ItemListener를 사용하여
난이도를 조절할 수 있게 하였고 두 개의 JButton에 ActionListener를 사용하여 한 버튼에는
게임이 실행되게 설정 하였고 한 버튼에는 게임 설명창이 나타나도록 설정 하였다.
5. 설명
메인화면에서 게임설명 버튼을 눌렀을 때 ActionListener를 통해 게임설명 화면을 띄운다. 게임
설명 화면을 띄우면서 두가지 버튼이 나오는데 한 버튼은 다음 페이지로 넘어가는 버튼이며 또
다른 버튼은 다시 대기화면으로 돌아가는 버튼이다. 다음 페이지로 넘어가는 버튼을 누르게 되면
두 번째 그림과 같이 첫 페이지와 비슷하게 이전 페이지로 넘어가는 버튼 하나와 대기화면으로
돌아가는 버튼 하나가 나타 나게 된다.
흐름도
6. 3. 게임 내부 화면
(1) 메인 화면에서 3X3 라디오 버튼을 누른 후 게임 실행 버튼을 눌렀을 시
(2) 메인 화면에서 4X4 라디오 버튼을 누른 후 게임 실행 버튼을 눌렀을 시
(3) 메인 화면에서 5X5 라디오 버튼을 누른 후 게임 실행 버튼을 눌렀을 시
7. (4) 메인 화면에서 6X6 라디오 버튼을 누른 후 게임 실행 버튼을 눌렀을 시
설명
메인화면에서 누른 라디오버튼에 따라서 난이도가 바뀌는데 이는 ItemListener를 이용하여 게임의
빈 블락 개수를 정하는 변수인 side의 값을 각 라디오 버튼이 값을 입력 받을 때 마다 side = 3,
side = 4, side = 5, side = 6으로 바뀌도록 설정 해 주어서 3X3, 4X4, 5X5, 6X6의 틀을 만들어 낸
것이다.
흐름도
9. 방향키 입력 시 방향키 방향으로 모든 그림 이동 및 쥐 그림 랜덤 블록에 생성
같은 그림이 만날시 두 블록은 합쳐지고 원래의 그림은 다음 단계의 그림으로 바뀜
설명
난이도를 설정 후 게임에 들어오게 된다면 빈 블록중 하나의 블록에 랜덤으로 동물 그림이
담겨있는 배열 중 첫 번째 원소인 쥐가 생성되게 된다. 그리고 블록을 옮기려고 방향키’→’를
입력 한다면 KeyListener를 통하여 블록에 있는 모든 그림을 오른쪽으로 이동하게 하고
화면에 ’→’ 방향키를 입력하였다고 나타나게 된다. 블록을 이동시키는 방법은 for문을 통하여 한
방향으로 한 블록씩 계속하여 이동하는데 이동 중에 그림이 들어있는 블록을 만나거나 벽을
만나면 멈춘다. 이때 그림이 들어있는 블록을 만나는 경우에서 같은 그림의 블록을 만나는
경우에는 움직이던 방향으로 한 칸 더 움직여 두 블록이 합쳐지고 다음 배열의 그림을 나타냄과
동시에 점수가 오르지만 만약 다른 그림의 블록을 만나는 경우에는 단순하게 멈추기만 한다.
그렇게 이동을 마치면 또 다시 빈 블록중 하나의 블록에 랜덤으로 쥐의 그림이 생성되게 된다.
12. 4. 게임 패배 시
(1) 게임 패배 직전의 상황
설명
이 상황에서는 움직일 수 있는 방향이 ‘→’와 ‘↑’ 밖에 없는데(나머지 방향은 다 찼기 때문에 이동
불가) 이동한다 한들 빈칸에 쥐가 생성되면 그 다음 행동에서 빈 블록 없이 그림이 들어 있는
블록으로 꽉 차기 때문에 움직이지 못하는 상황이 되어 블록을 옮기는 메소드가 작동하지 않게
되면서 게임이 끝나 버리고 만다.
(2) 게임 패배 시 상황
설명
모든 블록이 가득 차고 움직일 수 없는 상태가 되어서 게임이 끝나게 된다면 화면에 이번
게임에서의 점수를 나타내고 만약 그 점수가 신기록, 이때까지의 플레이해서 얻은 점수 중
최고점 이라면 입출력 스트림을 통하여 텍스트파일에 점수를 저장하게 된다. 또 게임이 끝나게
13. 되면 두 개의 버튼이 생성 되는데 다시하기 버튼을 누른다면 같은 난이도로 다시 한번 플레이를
하게 되는 것이며 돌아가기 버튼을 누른다면 처음 메인화면으로 돌아가게 된다
흐름도
14. 5. 게임 승리 시
설명
위 그림과 같이 ‘호랑이’ 그림이 그려진 블록을 두 개 합한다면 게임 승리 화면이 나타나게 되고
게임 패배 화면과 같이 두 개의 버튼이 나타난다. 다시하기 버튼을 누른다면 같은 난이도의
게임으로 다시 플레이 하는 것이고 돌아가기 버튼을 누른다면 메인 화면으로 넘어가게 된다.
흐름도
15. 느낀점
오창석 : 살면서 많은 게임을 접해 왔지만 직접 만들어 보는 경험은 처음이라 신선했었고 수업
시간에 배운 것을 기반으로 게임을 만들어 보니 뿌듯했다. 막상 하기 전에는 뭐 하나 만들수나
있을까 걱정을 많이 했었는데 우여곡절 끝에 이렇게 결과물이 나온것에 대하여 신기했고 코딩을
직접 짜면서 한 문장 입력하는데 오류가 자꾸 나서 계속 고민하면서 힘들었던 적도 있었지만
결국 오류를 해결하고 코드를 한줄 한줄 완성해 가면서 실력도 향상된 것 같아서 기쁘다. 하지만
원래 계획에 있었던 쓰래드를 활용한 블록의 모션을 넣고 싶었는데 제대로 이해하지 못하고
오류를 해결하지 못하여 미구현 한 것이 아쉬었다. 그래도 이번 프로젝트를 통하여 자바 언어에
대해 더 많은 지식을 알게 되었으며 종강 후에도 계속해서 연습하면서 실력을 길러야 겠다..
이종범 : 평소 게임을 할 때 잘 신경 쓰지 않은 UI 디자인이 얼마나 어려운지를 뼈저리게 알게
되어 텀프로젝트를 시작하고, 사람들이 이걸 어떻게 만들었을까 유심히 바라보게 되었습니다.
또한 나중에 앱이나 프로그램을 만들 때에는 그래픽 디자인을 전문으로 하는 사람 1명 쯤을
알아놔야 살기 편하겠다는 생각이 들었습니다. 이클립스로 게임을 만들다보니 비록 3주동안
배워서 못 만들었지만 안드로이드 스튜디오가 이클립스보다 만들기 편했던 것을 느끼고,
안드로이드 앱 개발에 대해서 배울 생각이 생겼습니다. 아쉬운 점으로는 게임 내에서 블록의
움직임을 쓰레드를 이용하여 다이나믹하게 표현하고 싶었지만 끝내 여러 가지 오류로 인해
구현을 못한 점이 많이 아쉬웠습니다.
16. 역할분담
1. 게임 주제 및 진행 방법 기획 : 오창석
2. 게임 컨셉 구상 및 블록 제작 : 이종범
3. 게임 블록 생성 , 이동 , 승리, 패배 조건 등 핵심 기능 구현 : 오창석
4. 내부 화면 점수, 최고점수 입력 키, 뒤로 가기 버튼 등 구현 : 이종범
5. 시작 화면 난이도 선택, 시작, 설명 버튼 등 시작 화면 구현 : 오창석
6. 게임 승리, 패배 화면 구현 및 다시 하기, 돌아가기 버튼 제작 : 이종범
7. 게임 내 모든 이미지 제작 : 이종범