[C언어를 이용해서 슈팅게임을 만들어보자]
[#1-1 헤더파일 선언하기]
#include<stdio.h> //기본 입출력을 위한 라이브러리
#include<conio.h> //getch()함수를 쓰기위해 사용되는 라이브러리(키보드 입력값을 받을 때 사용)
#include<Windows.h> //글자색, 배경색을 바꾸기 위한 라이브러리
#include<time.h> //게임에 시간흐름을 나타내기 위한 라이브러리
#include<stdlib.h> // 난수를 발생시키기 위한 라이브러리
#include<stdbool.h> // 논리형 자료를 쓰기 위한 라이브러리
처음보는 라이브러리들이 있더라도 우선은 넘어가도록 하자.
main함수에 들어가기 앞서 c언어를 활용해 게임을 만들 때 기본적으로 알아야할 함수들을 알아보자
[#1-2 색상 변경함수]
void textcolor(int fg_color, int bg_color)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), fg_color | bg_color << 4);
}
c언어를 이용한 슈팅게임을 만드는 내용이니 SetConsoleTextAttruibute()의 자세한 내용은 다루지 않겠다.
SetConsoleTextAttruibute()를 쓰기 위해 #include<Windows.h>을 했다는 사실만 알고있자.
대충 fg_color에는 글씨의 색깔, bg_color에는 배경의 색깔이 들어간다고 보면 된다. 자세한 설명은 나중에 SetConsoleTextAttruibute함수를 다룰 때 설명하도록 하겠다.
#define BLACK 0
#define BLUE1 1
#define GREEN1 2
#define CYAN1 3
#define RED1 4
#define MAGENTA1 5
#define YELLOW1 6
#define GRAY1 7
#define GRAY2 8
#define BLUE2 9
#define GREEN2 10
#define CYAN2 11
#define RED2 12
#define MAGENTA2 13
#define YELLOW2 14
#define WHITE 15
위와 같이 색상들은 #define으로 정의해준 뒤
textcolor(WHITE, BLACK) 의 형태로 사용하면 된다.
cmd의 글씨 색깔이 노란색, 배경색이 검은색으로 설정된 것을 확인할 수 있다.
여기서 글씨의 색깔이나 배경색은 본인이 게임의 분위기를 어덯게 설정할 것인가에 따라 설정하면 되겠다.
[#1-3 커서 숨기기 함수]
이번에는 커서를 숨겨보자
슈팅게임이 실행될 때 커서가 깜빡깜빡 거린다면 매우 짜증이 날 것이다.
void removeCursor(void)
{
CONSOLE_CURSOR_INFO cursorInfo;
GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursorInfo);
cursorInfo.bVisible = 0;
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursorInfo);
}
구조체 cursorInfo를 선언한 뒤 세팅값을 설정해 커서에 대한 설정을 할 수 있는 함수이다
자세한 설명은 다루지 않겠다.
[#1-4 gotoxy 함수]
void gotoxy(int x, int y)
{
COORD pos = { x, y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
구조체 pos를 선언해준 뒤 SetConsoleCursorPosition()함수를 이용하면 원하는 좌표 x,y로 커서를 이동시킬 수 있다.
gotoxy(8,20)문을 이용해 커서의 위치를 이동시켜서 출력한 모습이다.
커서가 8,20의 위치로부터 시작되는 모습이다.
[#1-5 StartMenu함수 구현하기]
이제 사용자 정의함수 startMenu()함수를 구현할 차례이다.
[system("cls")] 함수
여기서 잠깐 system()함수를 설명하고 가겠다. #include<stdlib.h> 라이브러리에 있는 함수로
system() 괄호 안에 있는 문자열을 명령 프롬프트에 직접 입력하는 효과를 가진다.
명령 프롬프트의 명령어로 cls 는 화면을 깨끗하게 지워준다.
즉 system("cls")함수를 사용하면 콘솔에 있던 내용을 싹 다 지워주는 역활을 한다.
system("cls"); //화면 지우기
즉 StartMenu() 함수에서
system("cls")를 호출해서 앞에서 프린트했던 "C언어를 이용한 슈팅게임!!" 을 지워주고 게임 초기화면을 출력해보자.
gotoxy()함수를 사용해서 노가다 작업을 했다...
코드부분은 뻔하니 공개하지 않겠다.
1번을 누르면 게임시작 | 2번을 누르면 게임에 대한 도움말 | 3번을 누르면 게임 종료
[#1 마무리]
C언어를 이용해 색깔 바꾸기, 커서설정, 초기화면출력 까지 진행해보았다.
다음글에서는 슈팅게임의 비행기를 출력하고 키보드를 입력받아 움직이는 내용을 구현해보겠다.
2022.03.12 - [프로젝트] - C언어를 이용해 만든 슈팅게임 #2(c언어 슈팅게임)
'프로젝트' 카테고리의 다른 글
c언어를 이용한 슈팅게임#6(c언어 슈팅게임)-충돌구현 (0) | 2022.03.15 |
---|---|
c언어를 이용한 슈팅게임#5(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 |
댓글