안드로이드 ArrayList / Random
안드로이드 ArrayList / Random |
▣ 슈팅 게임 만들기 4
■ 지금까지는 적의 등장과 움직임의 패턴만 만들어 봤는데요. 이것들을 효율적으로 적용시키는 방법에 대홰서 알아보겠습니다. 지난 포스팅에서 적을 만들고 GameState 클래스에서 적의 변수를 하나 만들어서 거기에 대입해가면서 테스트를 해봤습니다. 그런데 이런 방법으로 만들다보면 적이 수백개가 등장하는 이런 슈팅 게임에서 변수가 수백개가 되어야 할 것입니다. 이런 문제점을 해결해 주는것이 리스트 인데요.
자바에서 제공하는 ArrayList를 이용해서 관리하고, 등장하는 위치나 움직이는 패턴 등은 Random클래스를 이용해서 바꿔주도록 하겠습니다.
■ 먼저 GameState클래스를 살펴 보겠습니다. 지난번에 적을 만들어서 테스트를 해볼때 사용했던 변수가 선언되어 있습니다. 이런 변수를 수백개를 만들려면 힘들겠죠.
■ 이것을 리스트로 관리하기 위해서 ArrayList를 만들고, 적이 등장하는 로직을 만들겠습니다. 그리고 MakeEnemy()메서드와 스크롤 값을 가질 멤버 변수를 선언하겠습니다.
■ MakeEnemy()메서드를 Update에서 호출하도록 합니다. 이제는 MakeEnemey에서 스크롤 값에 속도 값을 추가하고 , 일정한 스크롤 간격으로 적을 생성하도록 코드를 작성하고 리스트의 모든 적을 업데이트 하고 화면에 그려주는 코드를 작성하겠습니다.
■ 컴파일하고 실행을 해보겠습니다. 실행을 해보면 시간을 두고 적이 생성되기는 하지만 같은 위치에서 등장해서 같은 패턴으로 사라지게 되는데요.
■ 이를 보완하기 위해서 적이 등장하는 x좌표를 랜덤으로 바꿔서 등장하는 위치를 바꿔주겠습니다. GmaeState클래스에서 랜덤 객체를 추가합니다.
■ 위와 같이 랜덤 객체를 먼저 생성하고 적의 등장을 담당하는 MakeEnemy()메서드에서 Rnadom클래스의 nextInt()메서드를 이용해서등장하는 x좌표값과 이동 패턴을 랜덤하게 설정을 했습니다.
■ 실행을 해보면 적의 등장 위치가 각각 다르고 움직이는 패턴도 앞에서 만들었던 세가지의 경우중에서 랜덤하게 적용이 되서 움직이게 됩니다. 이제 적들이 제대로 나타나는데요. 아직은 한 종류만 나타나는 상황입니다. 앞에서 세가지의 적을 만들어 놨는데요. 두번째, 세번째 적을 만들어 보도록 하겠습니다.
먼저 첫번째 적인 Enemy1클래스를 복사해서 두번째 세번째 적의 클래스를 만들고 준비한 이미지를 각각에 맞게 적용시키겠습니다.
■세개의 적 클래스를 만들었으면 다음으로는 MakeEnemy()메서드에서 랜덤하게 적을 생성할 수 있도록 수정합니다. 적을 생성하는 랜덤값을 담을 정수형 변수를 하나 생성한 뒤에 랜덤 값을 만들어 주겠습니다.
■ 이제 세가지의 적이 모두 등장을 하겠죠.
■ 세가지 종류의 적들이 모두 나타나게 되고, 각자 나타나는 위치도 다르고, 움직이는 패턴도 모두 다르게 됩니다. 여기까지 해서 적들의 등장과 움직이는 패턴까지 만들어 봤습니다. 다음 포스팅에서는 미사일을 만들고 발사하는 과정을 알아보도록 하겠습니다.