이근둥
근둥이의 블로그
이근둥
전체 방문자
910,179
오늘
319
어제
625

공지사항

  • 전체보기 (110)
    • 웹 (9)
    • 언어 & 프레임워크 (53)
      • JavaScript (7)
      • TypeScript (0)
      • Node.js (11)
      • Vue.js (3)
      • React (0)
      • React Native (0)
      • C & C++ (19)
      • Java & JSP (9)
      • Python (4)
    • 컴퓨터 과학 (3)
      • 알고리즘 (0)
      • 자료구조 (3)
    • 기타 (9)
      • Linux (1)
      • Git (2)
      • DialogFlow (4)
    • 일상 (13)
      • 게임 (13)
    • 칼럼 (11)
      • 회고 (2)
      • 나만의 글 (0)
      • 제품 리뷰 (9)
    • __Dev__ (9)
      • Release (9)
반응형

인기 글

  • 웹 푸시 알림(Web Push Notification)
    2022.06.13
    웹 푸시 알림(Web Push Notification)
  • [C/C++] 콘솔게임 프로그래밍 (1) - 프로젝트 생성⋯
    2017.12.19
    [C/C++] 콘솔게임 프로그래밍 (1) - 프로젝트 생성⋯
  • [Node.js] 실시간 채팅 서비스 만들기(5) - 채팅⋯
    2018.05.31
    [Node.js] 실시간 채팅 서비스 만들기(5) - 채팅⋯
  • [C/C++] 콘솔게임 프로그래밍 (2) - 메뉴 선택기능
    2017.12.19
    [C/C++] 콘솔게임 프로그래밍 (2) - 메뉴 선택기능
  • [Tomcat] 아파치 톰캣 서버 포트 변경하기
    2018.08.24
    [Tomcat] 아파치 톰캣 서버 포트 변경하기

태그

  • vue
  • Vue 3
  • Java FX
  • 프로그레시브 웹 앱
  • 자기계발
  • Deemo
  • ES6
  • vue3
  • 사이드 프로젝트
  • 이클립스
  • 성장
  • 자바 프로젝트
  • Composition API
  • spread syntax
  • WWDC20
  • 회고
  • Up
  • vue-next
  • vue.js
  • java
  • 자바
  • vuex
  • 출간
  • 전개 구문
  • WWDC
  • 웹 확장
  • AstroWar
  • composition-api
  • javascript
  • pwa

최근 댓글

  • 말씀해주신 책 사려고 하는데요, 환경 설치부터 자세하게 습⋯
    신기준
  • 늦게 답변드려 죄송합니다. iOS Safari 의 경우 웹⋯
    이근둥
  • 안녕하세요 혹시 전체 방문자는 어떻게 구현하셨나요?
    jj123
  • 안녕하세요. 아래 익명 댓글 작성자인데 암호를 잘못 입력했⋯
    이재원
  • 선생님 잘배우고 있습니다. 저는 LINUX 환경에서 작⋯
    전마머꼬

최근 글

  • Up 개발기 그리고 회고 - 3
    2023.05.31
    Up 개발기 그리고 회고 - 3
  • Up 개발기 그리고 회고 - 2
    2023.05.31
    Up 개발기 그리고 회고 - 2
  • Up 개발기 그리고 회고 - 1
    2023.05.31
    Up 개발기 그리고 회고 - 1
  • 웹 푸시 알림(Web Push Notification)
    2022.06.13
    웹 푸시 알림(Web Push Notification)
  • 스택(Stack)
    2022.05.26
    스택(Stack)

블로그 메뉴

  • 홈
  • 미디어로그
  • 방명록
hELLO · Designed By 정상우.
이근둥

근둥이의 블로그

[C/C++] 콘솔게임 프로그래밍 (7) - 텍스트 색상 변경
언어 & 프레임워크/C & C++

[C/C++] 콘솔게임 프로그래밍 (7) - 텍스트 색상 변경

2017. 12. 20. 20:25
반응형

안녕하세요


이번 강좌에서는 콘솔창의 글자 색을 변경하는 기능구현에 대해 알아보도록 하겠습니다.




[ 목차 ]


1. 색 열거형 정의하기


2. 색 설정함수 구현하기








[1 색 열거형 정의하기]




먼저 util.h 에 아래 코드를 추가합니다.



3~25행까지의 내용을 추가해주세요


#ifndef 는 이제 무엇인지 아시겠죠?


열거형을 한번만 정의하기 위한 작업입니다.




아래 링크에서 열거형에 대한 설명을 확인하실 수 있습니다.


https://dojang.io/mod/page/view.php?id=480



그리고 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가 호출되고있습니다.

왜 굳이 메인에서까지 사용해야할까요?



게임을 마치고 메인으로 돌아왔을 때, 이전에 설정된 색상으로 글자가 출력되면 이상해질 수 있기때문에

타이틀을 그리기전에 기본값으로 설정하는 모습입니다.






이제 게임의 핵심 함수들은 모두 구현하였습니다.(짝짝)


다음 강좌에서는 게임의 중심부분인 게임 루프를 구현하는법에 대해 알아보도록 하겠습니다.



감사합니다.







반응형
저작자표시 비영리 동일조건
    '언어 & 프레임워크/C & C++' 카테고리의 다른 글
    • [C/C++] 콘솔게임 프로그래밍 (9) - 플레이어 이동
    • [C/C++] 콘솔게임 프로그래밍 (8) - 게임루프
    • [C/C++] 콘솔게임 프로그래밍 (6) - 맵 제작 및 출력
    • [C/C++] 콘솔게임 프로그래밍 (5) - 맵 구현방법 선정 및 맵 선택기능
    이근둥
    이근둥
    새로운 것을 좋아하는 프론트엔드 개발자 ✨
    댓글쓰기

    티스토리툴바