본문 바로가기
프로젝트

c언어를 이용한 슈팅게임#5(c언어 슈팅게임)-적 총알구현

by 핫동경 2022. 3. 15.
반응형

[C언어를 이용해서 슈팅게임을 만들어보자]

#4에서 적을 출현시켰고 이번에는 적의 총알을 구현해보겠다.

2022.03.14 - [프로젝트] - c언어를 이용한 슈팅게임#4(c언어 슈팅게임)

 

c언어를 이용한 슈팅게임#4(c언어 슈팅게임)

[C언어를 이용해서 슈팅게임을 만들어보자] #3에서 플레이어의 총알 구현을 하였고 이번에는 적들의 생성과 적들의 움직임을 구현해보겠다. https://dongkyung.tistory.com/17 c언어를 이용한 슈팅게임 #3(

dongkyung.tistory.com

 

 

[#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()함수에 위 구현한 함수 추가하기]

 

 

 

 

 

 

[#마무리]

적의 총알이 출력되고 적의 총알이 플레이어를 따라오는 내용까지 진행하였다.

다음 글에서는 충돌구현에 대해 구현해보도록 하겠다.

 

반응형

댓글