경일게임아카데미 멀티 디바이스 메타버스 플랫폼 개발자 양성과정 20220512 2022/04/04~2022/12/13

Jinho Lee·2022년 5월 12일
0

경일 메타버스 20220512 6주차 4일 수업내용. 프레임 워크 - 텍스트 색 변화, 씬

텍스트 Text

  • SetConsoleTextAttribute 함수
    콘솔에서, 텍스트의 색 (FOREGROUND_RGB)과 배경의 색 (BACKGROUND_RGB)을 RGB의 조합으로 변경할 수 있다 → Windows.h 헤더에서 정의된 상수들을 활용 (or연산 가능)
#include <stdio.h>
#include <Windows.h>

int main(void)
{
	HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);

	// FOREGROUND_RGB
	// 
	// 1 2 4 8
	// BACKGROUND_RGB
	SetConsoleTextAttribute(h, BACKGROUND_BLUE | BACKGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);

	puts("Hello World!");

	SetConsoleTextAttribute(h, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);

	char ch;
	WORD Attributes;

	return 0;
}
  • 구조체 포인터 -> : 구조체의 멤버에 접근할 때 포인터
  • 유니코드(UTF-16)의 캐릭터 데이터타입 : wchar_t (2Byte)
  • 유니코드 문자열에 접근할 때는 문자열“”의 앞에 L, 혹은 TEXT()의 접두사를 붙여야 한다.
    • L”Hello World!”, L’A’
    • TEXT(”Hello World!”), TEXT(’A’)
  • 유니코드를 사용하는 문자열 함수는 아스키코드를 사용하는 기존 함수 앞에 w를 붙이는 형식으로 사용한다.
  • HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
    • 이 코드의 의미는, 포인터를 얻어 출력을 제어하여, 콘솔 전체가 아닌 바라는 부분만 변경하기 위함이다.

Text.c 코드

#include "Text.h"

void TextCopy(Text* dest, const WCHAR* src, WORD attributes)
{
	while (*src)
	{
		dest->Char.UnicodeChar = *src;		// src 내용을 dest에 복사
		dest->Attributes = attributes;

		++dest;
		++src;
	}
}

int32 TextLen(const Text* text)
{
	int32 count = 0;

	while (text -> Char.UnicodeChar)
	{
		count++;
		text++;
	}

	return count;
}

씬 Scene

  • 해당 게임(월드)을 구현하기 위한 객체들, 그리고 그 객체들을 관리하는 단위.

  • 여러 씬을 구현할 필요가 있을 때, 한 파일에 모두 구현하기는 힘들다.

    • 씬 파일에 함수의 구조체 등을 구현하여 각 씬을 호출하는 형식으로 구현 시간을 줄인다.
  • static : 정적 ⇒ 프로그램 실행 전에.

    • 객체의 수명이 프로그램 끝까지 남는다.
    • 데이터 영역에 저장됨.
    • 상수값으로만 초기화 가능.
      • 내부적으로 초기화 여부를 확인하고 있으며
      • 초기화는 메인 함수 호출 전에 일어난다.
      • 그 다음은 이 구문을 스킵한다.
    • 파일 안에서만 연결이 가능하다.
    • 매개변수에는 적용 불가.
  • extern : 선언에 주로 사용. 정적 데이터.

    • 파일 밖과도 연결이 가능하다.
    • 연결 순서는 파일 사이의 거리가 가까운 순서.
  • 새로운 필터의 작성 시, 디렉토리를 구성할 것.
    솔루션 탐색기 - 프로젝트 속성 - VC++디렉토리 - 포함 디렉토리

0개의 댓글