Console Project/1. 화면

C++|2019. 12. 9. 18:37

 콘솔창에 ASCII Art를 출력하기 위해서는 적절한 글자 크기와 창 크기가 필요하다. 보다 높은 해상도의 이미지를 그리기 원한다면 가능한 작은 글자 크기로 셋팅해야 할 것이다.

글자 크기 조절

콘솔의 글자 크기는 SetCurrentConsoleFontEx함수를 통해 임의의 크기로 설정할 수 있다. cfi.dwFontSize에 원하는 크기의 값을 입력하면 된다. 체크하면서 폭과 높이가 일치하는 사이즈를 찾으면 된다.

CONSOLE_FONT_INFOEX cfi;
cfi.cbSize = sizeof(cfi);
cfi.nFont = 0;
cfi.dwFontSize.X = 2;
cfi.dwFontSize.Y = 2;
cfi.FontFamily = FF_DONTCARE;
cfi.FontWeight = FW_NORMAL;
wcscpy_s(cfi.FaceName, TEXT("Raster Fonts"));

SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);

화면 크기 조절

 게임의 해상도를 미리 정해 놓고 그에 맞는 화면 크기를 설정한다. 이 프로젝트에서는 200x200으로 한다.

SMALL_RECT windowSize = { 10, 10, 210, 210 };
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &windowSize)

타이틀

 게임 타이틀 설정은 다음과 같다.

SetConsoleTitle(TEXT("Console Project"));

'C++' 카테고리의 다른 글

Console Project/3. 이미지  (0) 2019.12.10
Console Project/2. 출력 버퍼  (0) 2019.12.09
Console Project  (0) 2019.12.09
WriteConsoleOutput - Console 화면에 빠르게 출력하는 함수.  (0) 2019.12.09
C++ Image Library - CImg  (0) 2019.12.08

댓글()

Console Project

C++|2019. 12. 9. 17:03

 요즘 유니티로만 개발을 하다보니 C#을 너무 사랑했던 나머지 배웠던 C++을 다 잊어버릴 지경에 다다랐다. 오랜만에 C++도 다뤄보고 학원에 다닐 때 Console용 포트폴리오 게임을 만들었던 기억이 나 Console용으로 가벼운 게임을 하나 만들기로 결심했다.

 다만 텍스트로 표현했던 기존의 콘솔 프로그램 게임 대신 텍스트로 이미지를 표현하여 2D게임을 만들어 보고자 한다.

링크

모든 코드는 https://github.com/wakeup5/Console-Project에서 볼 수 있다.

목차

2019/12/09 - [C++] - Console Project/1. 화면

2019/12/09 - [C++] - Console Project/2. 출력 버퍼

2019/12/10 - [C++] - Console Project/3. 이미지

2019/12/10 - [C++] - Console Project/4. GameLoop

2019/12/10 - [C++] - Console Project/4.5 중간보고

2019/12/10 - [C++] - Console Project/5. 문자 출력

2019/12/12 - [C++] - Console Project/6. 키 입력

2019/12/14 - [C++] - Console Project/7. TileMap

 

개발 하면서 얻은 팁

2019/12/08 - [C++] - C++ Image Library - CImg

2019/12/09 - [C++] - WriteConsoleOutput - Console 화면에 빠르게 출력하는 함수.

'C++' 카테고리의 다른 글

Console Project/3. 이미지  (0) 2019.12.10
Console Project/2. 출력 버퍼  (0) 2019.12.09
Console Project/1. 화면  (0) 2019.12.09
WriteConsoleOutput - Console 화면에 빠르게 출력하는 함수.  (0) 2019.12.09
C++ Image Library - CImg  (0) 2019.12.08

댓글()

WriteConsoleOutput - Console 화면에 빠르게 출력하는 함수.

C++|2019. 12. 9. 15:39

 일반적으로 Console에 출력할 때에 printf 혹은 std::cout을 사용하게 된다. 하지만 Console 프로그램 게임에서 전체 이미지 등을 표시하기에는 느리다는 단점이 있다.

 이를 해결하기 위한 방법으로는 WriteConsoleOutput 함수가 있다. CHAR_INFO array로 이루어진 buffer에 먼저 쓴 후, 해당 함수에 전달하면 빠르게 콘솔에 출력할 수 있다.

int width = 10;
int height = 10;

CHAR_INFO buffer[width * height];

for (int i = 0; i < width * height; i++) {
    buffer[i].Char.UnicodeChar = 'a';
    buffer[i].Attributes = 7; 
    // 7을 입력할 경우 흰색으로 출력.
    // 자세한 내용은 
    // https://docs.microsoft.com/en-us/windows/console/char-info-str
    // 참조.
}

COORD pos = { 0, 0 }, size = { width, height };
SMALL_RECT rect = { 0, 0, width, height };
WriteConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE), buffer, size, pos, &rect);

 

'C++' 카테고리의 다른 글

Console Project/3. 이미지  (0) 2019.12.10
Console Project/2. 출력 버퍼  (0) 2019.12.09
Console Project/1. 화면  (0) 2019.12.09
Console Project  (0) 2019.12.09
C++ Image Library - CImg  (0) 2019.12.08

댓글()

C++ Image Library - CImg

C++|2019. 12. 8. 23:10

CImg는 C++프로젝트에서 간편하게 사용할 수 있는 이미지 라이브러리이다.

다운로드

http://cimg.eu/에서 다운로드 및 압축 해제.

설치

프로젝트의 포함 디렉토리에 "\CImg_latest\CImg-{Version}" 경로를 추가.

혹은,

CImg.h파일을 프로젝트에 직접 추가.

cimg_use_jpeg 사용 시

http://libjpeg.sourceforge.net/에서 최신버전 다운로드 및 압축 해제.

Developer Command Prompt for VS 2019를 실행.

NMAKE /f makefile.vc setup-v15

해당 커맨드를 입력하여 *.sln 파일 생성.

생성된 jpeg.sln을 실행한 후 빌드.

프로젝트 포함 디렉토리에 "\CImg_latest\CImg-{Version}" 추가,

프로젝트 라이브러리 디렉토리에 "\CImg_latest\CImg-{Version}\Release" 추가 및 링커에 jpeg.lib 추가.

 

'C++' 카테고리의 다른 글

Console Project/3. 이미지  (0) 2019.12.10
Console Project/2. 출력 버퍼  (0) 2019.12.09
Console Project/1. 화면  (0) 2019.12.09
Console Project  (0) 2019.12.09
WriteConsoleOutput - Console 화면에 빠르게 출력하는 함수.  (0) 2019.12.09

댓글()

[Unity] Desert Sniper

게임 포트폴리오|2016. 1. 31. 16:06

 

 

- 안드로이드 구글 카드보드 게임입니다.

- 이동은 안되나 머리를 돌려 적을 조준하여 총을 발사하는 방식입니다.

- 구글 카드보드 SDK를 이용하여 제작하였습니다.

 

제작 기간 : 3일

 

 

'게임 포트폴리오' 카테고리의 다른 글

Hyper Block Breaker Black&White  (0) 2019.12.24
[Unity] Fall in the hole  (0) 2016.01.31
[Unity] Acace 로봇 대전 게임  (0) 2016.01.31
[3D DirectX3D] 검은사막  (0) 2016.01.31
[2D API]The war? 더워!  (0) 2016.01.31

댓글()

[Unity] Fall in the hole

게임 포트폴리오|2016. 1. 31. 16:05

 

 

 

- 공을 움직여 구멍을 통과해 밑으로 내려가는 게임입니다.

- 화면의 좌우를 터치하여 공을 좌우로 움직일 수 있습니다.

- 콤보와 러쉬타임이 있습니다.

- 배경과 바닥의 색은 각각 시간과 깊이를 기준으로 삼각함수를 이용하여 RGB색상을 지정해 주었습니다.

- 배경의 경우 BGM의 스펙트럼 값을 더해주었습니다.

 

- 프로젝트가 날아가 다시 제작중에 있습니다..

 

 

제작기간 : 1주일

 

 

'게임 포트폴리오' 카테고리의 다른 글

Hyper Block Breaker Black&White  (0) 2019.12.24
[Unity] Desert Sniper  (0) 2016.01.31
[Unity] Acace 로봇 대전 게임  (0) 2016.01.31
[3D DirectX3D] 검은사막  (0) 2016.01.31
[2D API]The war? 더워!  (0) 2016.01.31

댓글()

[Unity] Acace 로봇 대전 게임

게임 포트폴리오|2016. 1. 31. 16:03

 

 

- 로봇 대전 게임으로 TPS장르입니다.

- 5명으로 구성된 팀으로 진행하였습니다.

- 모든 적(보스 포함)과, 레이저, 미사일, 맵 일부등을 담당하였으며, 전체적으로 기본적인 클래스 구조를 직접 설계하였습니다.

 

제작 기간 : 4주

'게임 포트폴리오' 카테고리의 다른 글

[Unity] Desert Sniper  (0) 2016.01.31
[Unity] Fall in the hole  (0) 2016.01.31
[3D DirectX3D] 검은사막  (0) 2016.01.31
[2D API]The war? 더워!  (0) 2016.01.31
[2D API] 테라리아  (0) 2016.01.31

댓글()

[3D DirectX3D] 검은사막

게임 포트폴리오|2016. 1. 31. 16:01

 

 

 

 

- 검은사막을 목표로 진행한 포트폴리오입니다.

- 3명 팀으로 진행하였습니다.

- 전체적인 클래스 구조 설계를 담당하였습니다.

- 플레이어(이동, 공격, 스킬 사용)와 몬스터, 보스 로직, 화면 UI(HP, 미니맵, 경험치, 레벨 등), 전체 맵 등을 담당하였으며, 환경(쉐이더, 햇빛)과 그림자 등 또한 담당하였습니다.

 

기획서 :3D Team Portfolio.docx

소스 : 3D Portfolio - Sword Is Desert.zip

https://github.com/wakeup5/Portfolio-Collection/tree/master/3D%20Portfolio%20-%20Sword%20Is%20Desert

제작기간 : 6주

 

 

 

'게임 포트폴리오' 카테고리의 다른 글

[Unity] Fall in the hole  (0) 2016.01.31
[Unity] Acace 로봇 대전 게임  (0) 2016.01.31
[2D API]The war? 더워!  (0) 2016.01.31
[2D API] 테라리아  (0) 2016.01.31
[Console] Watcher the console  (0) 2016.01.31

댓글()

[2D API]The war? 더워!

게임 포트폴리오|2016. 1. 31. 16:00

'게임 포트폴리오' 카테고리의 다른 글

[Unity] Fall in the hole  (0) 2016.01.31
[Unity] Acace 로봇 대전 게임  (0) 2016.01.31
[3D DirectX3D] 검은사막  (0) 2016.01.31
[2D API] 테라리아  (0) 2016.01.31
[Console] Watcher the console  (0) 2016.01.31

댓글()

[2D API] 테라리아

게임 포트폴리오|2016. 1. 31. 15:59

'게임 포트폴리오' 카테고리의 다른 글

[Unity] Fall in the hole  (0) 2016.01.31
[Unity] Acace 로봇 대전 게임  (0) 2016.01.31
[3D DirectX3D] 검은사막  (0) 2016.01.31
[2D API]The war? 더워!  (0) 2016.01.31
[Console] Watcher the console  (0) 2016.01.31

댓글()