[C언어를 이용해서 슈팅게임을 만들어보자]
#3에서 플레이어의 총알 구현을 하였고 이번에는 적들의 생성과 적들의 움직임을 구현해보겠다.
https://dongkyung.tistory.com/17
[#4-1 적들 출현시키기]
함수 구현에 앞서 적들에 대한 구조체를 선언을 먼저하자.
또한 Enemyunit[] 배열을 통해 적의 생김새를 구현해보았다. 많이 못생겼다....
○ exist 는 적의 존재 여부를 확인하기 위한 변수이다
○ x,y는 적의 x,y 좌표값 변수이다
○ move는 적의 이동경로 변수이다. 1이면 오른쪽으로 -1이면 왼쪽으로 움직이게 설정할 것이다
○ type은 적의 생김새를 결정하는 변수이다. type의 숫자에 따라 Enemyunit의 배열의 적이 나타나게 된다
#define MAXENEMY 6
struct {
int exist;
int x, y;
int number;
int move;
int type;
}Enemy[MAXENEMY];
char* Enemyunit[] = { "⊙★⊙","@▒@","♨▣♨","◐▼◑" };
[#4-2 showenemy()함수 구현하기]
○ 난수를 설정해 랜덤한 위치에 적을 위치시킬 것이다
○ location은 move에 영향을 준다. 1이면 move에 1을(오른쪽 이동) 1이 아니라면 move에 -1을(왼쪽으로 이동)
○ 적들의 설정값들을 설정하고 적의 유형을 설정해서 존재여부를 TRUE 시켜준다
void showenemy() {
int i, location, direct, hieght;
location = rand() % 2;
direct = 5 + rand() % 55;
hieght = 1 + rand() % 8;
for (i = 0; i < MAXENEMY && Enemy[i].exist == TRUE; i++) {}
if (i != MAXENEMY) {
if (location == 1) {
Enemy[i].x = direct;
Enemy[i].y = hieght;
Enemy[i].move = 1;
}
else {
Enemy[i].x = direct;
Enemy[i].y = hieght;
Enemy[i].move = -1;
}
Enemy[i].type = rand() % 4;
Enemy[i].exist = TRUE;
}
}
[#4-3 Enemymove()함수 구현하기]
○ Enemy[i].type==-1 이 경우는 적이 나의 총알에 맞아 죽었을 때를 나타내는 설정인데 나중에 충돌구현에서
다루도록 하겠다. 간단히 얘기해 적이 총에 맞아 죽었으면 화면에서 지워줘야한다. 그러므로 printf("공백")으로
적을 지워주고 존재여부를 FALSE 시킨다.
○ 여기서 적이 이동을하게되는데 벽에 부딪히면 반대로 가는 움직이는 것을 구현했다.
x좌표가 맵보다 크다면 move를 상반시켜 반대로 움직이게 해주었다.
○ 맵 밖으로 나가지 않았다면 printf(Enemyunit[Enemy[i].type])으로 적을 출력시켜준다.
void Enemymove() {
int i;
for (i = 0; i < MAXENEMY; i++) {
if (Enemy[i].exist == TRUE) {
if (Enemy[i].type == -1) {
gotoxy(Enemy[i].x - 1, Enemy[i].y);
printf(" ");
Enemy[i].exist = FALSE;
continue;
}
if (Enemy[i].x > 52) {
Enemy[i].x -= 1;
Enemy[i].move = -1;
}
else if (Enemy[i].x <= 3) {
Enemy[i].move = 1;
Enemy[i].x += 1;
gotoxy(Enemy[i].x, Enemy[i].y);
printf(" ");
}
else {
Enemy[i].x += Enemy[i].move;
gotoxy(Enemy[i].x, Enemy[i].y);
printf(Enemyunit[Enemy[i].type]);
printf(" ");
}
}
}
}
[#마무리]
이번 내용까지 완성하였다면 캐릭터의 움직임, 총알발사 , 적의 생성, 적의 움직임 까지 구현되는 것을
확인할 수 있을 것이다.
다음 내용에서는 적들의 총알을 구현해보겠다.
'프로젝트' 카테고리의 다른 글
c언어를 이용한 슈팅게임#6(c언어 슈팅게임)-충돌구현 (0) | 2022.03.15 |
---|---|
c언어를 이용한 슈팅게임#5(c언어 슈팅게임)-적 총알구현 (0) | 2022.03.15 |
c언어를 이용한 슈팅게임 #3(c언어 슈팅게임)-총알구현 (0) | 2022.03.13 |
C언어를 이용해 만든 슈팅게임 #2(c언어 슈팅게임)-플레이어 움직임 (0) | 2022.03.12 |
C언어를 이용해 만든 슈팅게임 #1(c언어 슈팅게임) (0) | 2022.03.11 |
댓글