-
3. 플레이어와 에너미의 총알 만들기C,C++로 만드는 간단한 프로젝트/Invaders(Galaga) 게임 만들기 2021. 3. 26. 11:17
아래의 내용에 이어서 만들어 보도록 하자.
designatedroom87.tistory.com/391
총알에 대한 기본적인 내용은 아래와 같다.
약간 특이한 점은 플레이어와 에너미는 총알에 대해서는 같은 배열을 사용한다.
총알 입장에서는 누가 생성한 것인지에 대해서만 정확히 알고 있으면 된다.
1. InitialObject 함수
총알 배열을 초기화 하는 함수로, 배열 내의 총알들을 모두 비어 있는 상태로 초기화를 한다.
2. PlayerAction 함수
플레이어의 총알 생성 시점은 컨트롤 키를 눌렀을 때이다.
CreateShot함수는 밑에 정의 되어 있다.
CreateShot 함수의 매개변수로는 총알을 생성한 주체와 총알의 생성 위치를 넘겨 준다.
총알의 생성 위치는 플레이어의 위치로 선택한다.
여기서, 만약 플레이어의 한 칸 앞에서 생성을 원하면 Player.y대신 Player.y - 1을 하면 된다.
3. EnemyAction 함수
에너미의 총알 생성 시점은 에너미가 움직일 때 생성되도록 하는데,
움직인다고 무조건 생성하는 것이 아니라 2% 확률로 생성한다..
난이도를 올리고 싶으면 숫자를 높이면 된다.
4. CreateShot 함수
총알 배열에 비어 있는 공간을 찾아 총알을 생성하는 함수이다.
총알에 설정한 정보는 누가 쏜 것인지, 위치에 대한 정보가 들어가야 한다.
그리고 if 내에 return이 없다면
플레이어가 총알을 생성한 시점에 해당 함수가 호출되어,
이 배열의 비어 있는 모든 공간에 플레이어의 총알로 설정이 된다.
5. ShotAction 함수
생성된 총알에 대해서 위치를 업데이트를 하는 함수이다.
플레이어의 총알 입장에서는 위로 이동하고, 에너미의 총알 입장에서는 아래로 이동하며 된다.
즉, 위 아래는 이차원 배열에서는 행에 대한 정보이므로 y를 업데이트 하면 된다.
그리고 이 업데이트 된 총알이 맵을 벗어나면 없애도록 하자.
없앤다는 의미는 이 배열 내의 공간을 비어 있는 상태로 두는 것이다.
6. DrawShot 함수
총알 배열에 있는 내용을 이차원 배열에 저장하면 된다.
7. Draw 함수
DrawShot 함수를 호출한다.
8. main 함수
shotAction 함수를 호출과 srand 함수를 호출한다.
영상
헤더 파일 & 소스 파일
'C,C++로 만드는 간단한 프로젝트 > Invaders(Galaga) 게임 만들기' 카테고리의 다른 글
5 - (2). 에너미를 클래스화 하기 (0) 2021.03.26 5 - (1). 플레이어를 클래스화 하기 (0) 2021.03.26 4. 총알과 오브젝트의 충돌 체크 & 게임 종료 만들기 (0) 2021.03.26 2. 에너미의 움직임 만들기 (0) 2021.03.25 1. 콘솔 화면 구성 & 플레이어의 이동 구현하기 (0) 2021.03.25