반응형
[C언어를 이용해서 슈팅게임을 만들어보자]
#4에서 적을 출현시켰고 이번에는 적의 총알을 구현해보겠다.
2022.03.14 - [프로젝트] - c언어를 이용한 슈팅게임#4(c언어 슈팅게임)
[#5-1 적의 총알 구현하기]
#define MAXENEMYBULLET 20 // 적 최대 총알 수
int enemybulletuse = 1; //적 총알 1초마다 생성
int enemybullet_frame_sync = 15; //적 총알 속도조절
struct {
int exist;
int x, y;
}EnemyBullet[MAXENEMYBULLET];
구현에 앞서 이번에도 적의 총알을 구조체로 선언해주자.
적의 총알은 화면에 총 20개까지 출력된다.
1초마다 적의 총알을 생성할 것이고 총알의 속도변수를 통해 적의 총알 속도를 조절할 수 있다.
[#5-2 EnemyBulletshow() 함수 구현하기]
void EnemyBulletshow(){
int j;
int random = rand() % MAXENEMY;
for(j=0;j<MAXENEMYBULLET&&EnemyBullet[j].exist==TRUE;j++){}
if (j != MAXENEMYBULLET&&Enemy[random].exist==TRUE) {
EnemyBullet[j].x = Enemy[random].x + 2;
EnemyBullet[j].y = Enemy[random].y + 1;
EnemyBullet[j].exist = TRUE;
}
}
난수 random을 발생시켜 적의 배열 번호를 정해준다.
EnemyBulletshow()함수가 호출되면 적의 총알 하나의 좌표가 적의 바로 앞에 설정되고 exist가 TRUE가 된다
[#5-3 EnemyBulletmove() 함수 구현하기]
void EnemyBulletdraw(int i) {
textcolor(RED2, BLACK);
gotoxy(EnemyBullet[i].x, EnemyBullet[i].y);
printf("*");
}
void EnemyBulleterase(int i) {
gotoxy(EnemyBullet[i].x, EnemyBullet[i].y);
printf(" ");
}
void EnemyBulletMove() {
int random;
random = 1;
for (int i = 0; i < MAXENEMYBULLET; i++) {
if (EnemyBullet[i].exist == TRUE) {
EnemyBulleterase(i);
if (EnemyBullet[i].y > HEIGHT - 3) {
EnemyBullet[i].exist = FALSE;
}
else {
if (random) {
if (EnemyBullet[i].x <= newx)
EnemyBullet[i].x++;
else
EnemyBullet[i].x--;
}
EnemyBullet[i].y++;
EnemyBulletdraw(i);
}
}
}
}
EnemyBulletMove()함수가 호출되면 EnemyBullet[i].exist가 TRUE 라면 EnemyBulleterase(i)함수를 통해 우선 지우고
다시 그려줄 것인지 아닌지 판단하면 된다. 만약 적의 총알의 위치가 맵 밖에 위치한다면 EnemyBullet[i].exist는
FALSE 가 된다. 그것이 아니라면 적의 총알의 Y좌표를 ++시켜주고 EnemyBulletdraw(i)함수를 호출하면 된다.
그 전에 적의 총알이 플레이어를 따라오게 하기 위해 조건문을 추가해주었다.
[#5-3 gamestart()함수에 위 구현한 함수 추가하기]
[#마무리]
적의 총알이 출력되고 적의 총알이 플레이어를 따라오는 내용까지 진행하였다.
다음 글에서는 충돌구현에 대해 구현해보도록 하겠다.
반응형
'프로젝트' 카테고리의 다른 글
c언어를 이용한 슈팅게임#7(c언어 슈팅게임)-아이템구현 (0) | 2022.03.17 |
---|---|
c언어를 이용한 슈팅게임#6(c언어 슈팅게임)-충돌구현 (0) | 2022.03.15 |
c언어를 이용한 슈팅게임#4(c언어 슈팅게임)-적 구현 (0) | 2022.03.14 |
c언어를 이용한 슈팅게임 #3(c언어 슈팅게임)-총알구현 (0) | 2022.03.13 |
C언어를 이용해 만든 슈팅게임 #2(c언어 슈팅게임)-플레이어 움직임 (0) | 2022.03.12 |
댓글