[C언어를 이용해서 슈팅게임을 만들어보자]
#2에서 캐릭터의 움직임을 구현해보았는데 이번에는 스페이스바를 누를시 총알이 날아가는 기능을 구현해보겠다.
https://dongkyung.tistory.com/16
[#3-1 gamestart()함수에 총알 날아가는 기능 구현하기]
gamestart()에 기능을 추가하기에 앞서 플레이어의 총알을 나타내는 구조체를 선언해주도록하자
#define MAXBULLET 6//플레이어의 최대 총알 수
#define TRUE 1
#define FALSE 0
struct {
int exist;
int x, y;
}Bullet[MAXBULLET];
exist는 총알의 존재여부를 결정하는 변수이고
x,y는 총알의 위치를 나타내는 좌표이다.
이 구조체의 이름을 Bullet이라고 지었고 구조체의 크기는 6으로 설정하였다. 즉 화면에 나타날 수 있는 플레이어의
총알 최대 개수는 6개인 셈이다.
이제 gamestart()함수에 총알 기능을 구현해보자
속도조절 방식을 사용하여 bulletmove함수를 호출해주면 된다.
#define SPACE 0x20
void gamestart() {
unsigned char ch;
int i;
init_game()
while (1) {
if (kbhit() == 1) {
ch = getch();
if (ch == SPECIAL1 || ch == SPECIAL2) {
ch = getch();
switch (ch) {
case UP: case DOWN: case LEFT: case RIGHT:
playermove(ch);
if (frame_count % p1_frame_sync == 0)
playermove(0);
break;
default:
if (frame_count % p1_frame_sync == 0)
playermove(0);
}
}
if (ch == SPACE) {
for (i = 0; i < MAXBULLET && Bullet[i].exist == TRUE; i++) {}
if (i != MAXBULLET) {
Bullet[i].x = newx +1;
Bullet[i].y = newy - 1;
Bullet[i].exist = TRUE;
}
}
}
else {
//플레이어 무브 속도조절 함수
}
//총알 속도조절 함수
Sleep(Delay); // Delay 값을 줄이고
frame_count++;// frame_count 값으로 속도 조절을 한다.
}
}
void init_game() {
//나중에 게임이 종료되고 게임이 다시 시작될 때
변수 값들을 초기화 해주는 영역
//
system("cls"); //게임이 시작되면 초기화면을 사라지게함
removeCursor();
}
전과 같이 전역변수를 사용하여 속도조절 변수를 선언하고 속도조절 방식을 사용해 함수를 호출
[#3-2 bulletmove()함수 구현하기]
void DrawBullet(int i) {
textcolor(GREEN1,BLACK);
gotoxy(Bullet[i].x, Bullet[i].y); printf("│");
}
void EraseBullet(int i) {
gotoxy(Bullet[i].x, Bullet[i].y); printf(" ");
}
void bulletmove() {
int i;
for (i = 0; i < MAXBULLET; i++) {
if (Bullet[i].exist == TRUE) {
EraseBullet(i);
if (Bullet[i].y == 0) {
Bullet[i].exist = FALSE;
}
else {
Bullet[i].y--;
DrawBullet(i);
}
}
}
}
만약 Bullet[i].exist 즉 존재한다면
우선 EraseBullet(i)를 통해 총알을 지운다
[그 후 총알의 위치를 파악할 필요가 있다. 총알의 위치가 맵 밖으로 나갔다면 총알의 존재여부를 FALSE로하고
총알을 다시 그릴 필요가 없다
하지만 맵 밖이 아니라면 총알의 Y위치를 --해주고(총알이 올라가야하므로) 총알으 다시 그려준다]
[#마무리]
이번 내용까지 완성하였다면 위 그림처럼 총알이 발사되는 것까지 확인할 수 있을 것이다.
다음 내용에서는 적들을 구현하고 적들의 움직임을 구현해보겠다.
'프로젝트' 카테고리의 다른 글
c언어를 이용한 슈팅게임#6(c언어 슈팅게임)-충돌구현 (0) | 2022.03.15 |
---|---|
c언어를 이용한 슈팅게임#5(c언어 슈팅게임)-적 총알구현 (0) | 2022.03.15 |
c언어를 이용한 슈팅게임#4(c언어 슈팅게임)-적 구현 (0) | 2022.03.14 |
C언어를 이용해 만든 슈팅게임 #2(c언어 슈팅게임)-플레이어 움직임 (0) | 2022.03.12 |
C언어를 이용해 만든 슈팅게임 #1(c언어 슈팅게임) (0) | 2022.03.11 |
댓글