-
2. 에너미의 움직임 만들기C,C++로 만드는 간단한 프로젝트/Invaders(Galaga) 게임 만들기 2021. 3. 25. 21:07
아래의 내용 뒤이어서 만들어 보도록 하자.
designatedroom87.tistory.com/390
1. 콘솔 화면 구성 & 플레이어의 이동 구현하기
게임의 기본 구성은 아래의 별 피하기 게임과 유사하다. 프로젝트의 개발 환경은 Visual Studio 2008 에서 구현을 하도록 한다. designatedroom87.tistory.com/349?category=913294 1. 콘솔화면 구성 & 그리는 함..
designatedroom87.tistory.com
플레이어에 대한 내용과 같은 부분이 많다.
아래는 에너미에 관련한 부분이다.
1. InitialObject 함수
에너미들을 배치하는 부분을 적어준다. 한 줄에 10기씩을 배치한다.
그리고 초기 이동 방향은 오른쪽 방향으로 이동할 것이다.
2. EnemyAction 함수
초기의 이동 방향은 오른쪽이며, 오른쪽으로 이동하다가 적당히 이동했으면 방향을 바꾼다.
여기서는 에너미들이 맵 밖을 벗어났는지 확인하는 내용이 별도로 존재하지 않는다.
좌,우로 14칸 정도 이동하면 방향을 변경하는데,
구현할 이동 패턴이 에너미 30마리 전체가 오른쪽으로 이동했다가 아래로 한칸 이동했다가
왼쪽으로 다시 이동하는 방식인데
쉽게 설명하면 각 좌,우 끝에 있는 에너미들이 오른쪽 혹은 왼쪽 화면 끝에 닿으면
이동 방향을 변경하고 한 칸 아래로 내리는 패턴이다.
쉽게 구현하기 위해서 대충 눈 대중으로 13칸이란 숫자를 사용한 것이다.
그리고 여기서의 에너미 x는 중심(열) 위치이다.
3. DrawEnemy 함수
플레이어와는 달리 EnemyAction 함수에서는 맵 밖을 벗어나는 예외처리가 없으므로
렌더를 할 시에 예외처리가 필요하다.
나머지는 플레이어의 Draw함수와 그 내용은 같다.
위 DrawEnemy함수의 아래의 for문을 잠깐 보도록 하자.
아래의 for문의 if문에서 맵 밖을 벗어난 경우에 대한 처리를 하고 있는데,
차라리 왼쪽 날개의 열과 오른쪽 날개의 열을 구한 후에
이 열 값이 이차원 배열의 가로 범위를 파악하면 될 것 같다.
즉, if ( x >= 0 && x + ENEMY_SIZE / 2 < WIDTH - 1 )
WIDTH가 아닌 WIDTH - 1인 이유는 이차원 배열의 각 행의 마지막 자리에는 NULL의 자리이다.
그러므로, 이 공간을 생각해야 한다.
4. Draw 함수
Draw함수에서 DrawEnemy함수를 호출한다.
5. main 함수
메인 함수에서 EnemyAction 함수를 호출한다.
실행 영상
소스 파일
'C,C++로 만드는 간단한 프로젝트 > Invaders(Galaga) 게임 만들기' 카테고리의 다른 글
5 - (2). 에너미를 클래스화 하기 (0) 2021.03.26 5 - (1). 플레이어를 클래스화 하기 (0) 2021.03.26 4. 총알과 오브젝트의 충돌 체크 & 게임 종료 만들기 (0) 2021.03.26 3. 플레이어와 에너미의 총알 만들기 (0) 2021.03.26 1. 콘솔 화면 구성 & 플레이어의 이동 구현하기 (0) 2021.03.25