안녕하세요
이번 강좌에서는 콘솔창의 글자 색을 변경하는 기능구현에 대해 알아보도록 하겠습니다.
[ 목차 ]
1. 색 열거형 정의하기
2. 색 설정함수 구현하기
[1 색 열거형 정의하기]
먼저 util.h 에 아래 코드를 추가합니다.
3~25행까지의 내용을 추가해주세요
#ifndef 는 이제 무엇인지 아시겠죠?
열거형을 한번만 정의하기 위한 작업입니다.
그리고 29행에 보이는것처럼 int형 매개변수가 두개인 함수를 하나 정의합니다.
저는 setColor 라는 이름으로 정의했습니다.
함수를 정의했으면 구현해야겠죠?
util.c 소스코드로 와서 setColor 함수를 구현해봅시다.
맨 아래에 있는 함수입니다.
setColor 의 기능은 아까 위에서 열거형의 데이터를 전달해주면(결과적으로는 정수 0~15)
해당하는 글자색과 배경색으로 바꿔줍니다.
원래는 검정 배경에 흰 글씨만 출력되었지만 위와같이 색을 원하는대로 설정하여 출력할 수 있습니다.
함수를 구현하였으면 아래에서 사용방법을 알아보도록 합시다.
아래와 같이 사용해본다고 가정합시다.
함수의 인자로 전달하는 red, blue, yellow 와 같은 문자는 위에서 정의하였던 열거형의 멤버입니다.
열거형을 정의하지 않았다면 직접 숫자를 입력했어야하는데
편리하게 사용하기위해 열거형을 정의해놓은것입니다.
(위 소스코드 실행결과)
자신이 설정한 색상대로 출력된 모습입니다.
글자색은 물론 배경색도 지정할 수 있습니다.
이제 setColor 함수를 이용하여 다양하게 색을 설정할 수 있게되었습니다.
이제 맵을 출력하는 부분으로 이동하여 적용해봅시다.
game.c 소스코드로 이동합니다.
정의해둔 색상 코드 열거형을 사용하기위해
util.h 를 인클루드해줍니다.
아래로 내려와서 맵을 출력하는 함수에 setColor 함수를 추가해봅시다.
저는 빈 공간은 글자색, 배경색 모두 검정색으로 설정하여 아무것도 보이지않게 했습니다.
벽은 글자, 배경색 모두 흰색으로 설정하였고
플레이어는 청록색에 검정배경으로 설정했습니다.
마지막으로 목적지는 밝은초록색으로 하였고 배경은 검정색으로 했습니다.
출력하기 전에 setColor 함수로 콘솔창의 색깔을 변경시키면 됩니다.
사용법은 어렵지 않습니다.
그리고
46행부분을 잘 보셔야합니다.
맵 출력이 끝난 후 콘솔창의 색을
글자: 흰색
배경: 검정
으로 설정해둔 모습을 확인하실 수 있을겁니다.
맵을 그리던 과정에서 setColor로 인해 다양한 색깔로 설정되어있을겁니다.
맵을 다 그렸으니 기본값인 흰색글씨에 검정 배경으로 설정해주는 작업입니다.
맵을 원하는 색상으로 설정한것같다면
한번 실행시켜보세요
(실행결과)
조금 이쁘게 변했죠?
이런 방식으로 콘솔창의 색을 변경할 수 있습니다.
마지막으로 만약을 대비하여 메인함수에 코드를 추가합니다.
2행에 보이시는것처럼 열거형이 정의된 util.h 를 인클루드해야합니다.
23행을 보시면 setColor가 호출되고있습니다.
왜 굳이 메인에서까지 사용해야할까요?
게임을 마치고 메인으로 돌아왔을 때, 이전에 설정된 색상으로 글자가 출력되면 이상해질 수 있기때문에
타이틀을 그리기전에 기본값으로 설정하는 모습입니다.
이제 게임의 핵심 함수들은 모두 구현하였습니다.(짝짝)
다음 강좌에서는 게임의 중심부분인 게임 루프를 구현하는법에 대해 알아보도록 하겠습니다.
감사합니다.