본문 바로가기
프로젝트

C언어를 이용해 만든 슈팅게임 #1(c언어 슈팅게임)

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

[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언어를 이용해 만든 슈팅게임 #2(c언어 슈팅게임)

[C언어를 이용해서 슈팅게임을 만들어보자] #1에서 배경색, 커서, 초기화면을 만들었다. 이번에는 사용자의 입력을 받아서 움직이는 게임 주인공을 만들어보겠다. https://dongkyung.tistory.com/15 C언어

dongkyung.tistory.com

 

반응형

댓글