언어 & 프레임워크/C & C++

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

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

    안녕하세요 이번 강좌에서는 콘솔창의 글자 색을 변경하는 기능구현에 대해 알아보도록 하겠습니다. [ 목차 ] 1. 색 열거형 정의하기 2. 색 설정함수 구현하기 [1 색 열거형 정의하기] 먼저 util.h 에 아래 코드를 추가합니다. 3~25행까지의 내용을 추가해주세요 #ifndef 는 이제 무엇인지 아시겠죠? 열거형을 한번만 정의하기 위한 작업입니다. 아래 링크에서 열거형에 대한 설명을 확인하실 수 있습니다. https://dojang.io/mod/page/view.php?id=480 그리고 29행에 보이는것처럼 int형 매개변수가 두개인 함수를 하나 정의합니다. 저는 setColor 라는 이름으로 정의했습니다. 함수를 정의했으면 구현해야겠죠?util.c 소스코드로 와서 setColor 함수를 구현해봅시..

    [C/C++] 콘솔게임 프로그래밍 (6) - 맵 제작 및 출력

    [C/C++] 콘솔게임 프로그래밍 (6) - 맵 제작 및 출력

    안녕하세요 이번 강좌에서는 맵을 직접 제작하고 출력하는 기능을 구현해보도록 하겠습니다. [목차] 1. 2차원 배열에 맵 만들기 2. 맵 출력기능 구현하기 [1 2차원 배열에 맵 만들기] game.c 소스파일의 상단에 2차원 배열을 생성합니다. 배열의 크기는 자신의 콘솔창 크기보다 작게 만들어야합니다 왜냐하면 콘솔창보다 맵이 더 클경우 출력할 때 글자가 밀려서 출력됩니다. 이렇게되면 맵이 이상하게 보이게 됩니다. 콘솔창 크기는 전에 구현해두었던 init 함수에서 확인하실 수 있습니다. cols: 가로 lines: 세로 저와 여러분들은 크기가 다를 수 있습니다. 크기에 맞춰서 56x20 짜리 배열을 생성해도 되지만 저는 여백을 조금 남기고 하단에 정보확인 영역을 추가할것이기 때문에 조금 더 작은 맵을 만들예..

    [C/C++] 콘솔게임 프로그래밍 (5) - 맵 구현방법 선정 및 맵 선택기능

    [C/C++] 콘솔게임 프로그래밍 (5) - 맵 구현방법 선정 및 맵 선택기능

    안녕하세요 이번 강좌에서는 맵을 어떤식으로 구현할것인가? 에 대한 내용과 맵 선택기능을 구현해보도록 하겠습니다. [목차] 1. 맵 구현방법 생각하기 2. 맵 선택기능 구현하기 [1 맵 구현방법 생각하기] 본 강좌에서는 탈출게임을 주제로 개발하고있습니다. 탈출게임은 맵이 꼭 필요하죠 정해진 공간에서 목표지점까지 도착하는 게임이기 때문이죠 콘솔게임이므로 3D 게임이 아닌 2D(평면) 게임입니다. 평면이기 때문에 맵도 2차원(면)으로 구현하면 됩니다. 위와같이 2차원안에서 상하좌우로 움직이며 목적지에 도착하는것이 목표입니다. 맵을 어떻게 구성할것인가? 에 대한 답변은 "2차원 배열을 사용하자!" 입니다. 배열이란? 쉽게 설명하자면 동일한 자료형을 이어서 저장하는 공간입니다.변수는 다들 아실겁니다. 숫자를 5개..

    [C/C++] 콘솔게임 프로그래밍 (4) - 커서 숨기기 및 헤더파일 분할

    [C/C++] 콘솔게임 프로그래밍 (4) - 커서 숨기기 및 헤더파일 분할

    안녕하세요 이번 강좌에서는 깜빡거리는 커서를 숨기고, 헤더파일을 분할하는 작업을 진행하도록 하겠습니다. [목차] 1. 커서 숨김처리 2. 헤더파일 분할하기 [1 커서 숨김처리] 깜빡거리는 커서를 없애보도록 하겠습니다. init 함수 기억하시나요? 콘솔창의 크기를 설정하고 창 제목을 설정하던 부분이 있는 함수였습니다.프로그램의 초기화를 담당하는 함수였죠 커서를 숨기는 기능은 한번만 실행되면 되기때문에 이 init 함수 내에 구현할것입니다. 저기 보이는 5줄을 init 함수에 추가합니다. 실행시켜보면 깜빡이던 커서가 실종사라졌다는것을 알 수 있습니다. [2 헤더파일 분할하기] 지금까지는 main.c(혹은 다른이름) 소스코드에 모든 코드가 작성되어있습니다. 소스코드 100줄은 충분히 넘겼을거라고 생각합니다. ..

    [C/C++] 콘솔게임 프로그래밍 (3) - 종료기능 및 게임 정보화면

    [C/C++] 콘솔게임 프로그래밍 (3) - 종료기능 및 게임 정보화면

    안녕하세요 이번 강좌에서는 게임 정보화면과 종료기능을 구현해보도록 하겠습니다. [목차] 1. 게임 종료 구현하기 2. 게임 정보화면 구현하기 [1 게임 종료 구현하기] 게임 종료기능을 구현해볼건데요 이전 강좌에서 진행하였던 메뉴 선택기능이 구현되어있어야합니다. 이전 강좌까지 하셨으면 해당 메뉴를 선택하면 아래와 같은 값이 반환될것입니다. 아직 왜그러는지 이해하지 못하셨어도 괜찮습니다. 아래 사진을 봅시다. 이 사진은 지난시간에 진행하였던 menuDraw 함수의 내부입니다. 아래에 줄친 부분을 보면 return y-12 라고 되어있습니다. 왜 이렇게 계산하여 반환할까요? 게임시작게임정보종료 이렇게 메뉴가 출력되는데요 "게임시작" 부분이 출력되는 y의 위치가 12입니다."게임정보"는 13"종료"는 14이죠 ..

    [C/C++] 콘솔게임 프로그래밍 (2) - 메뉴 선택기능

    [C/C++] 콘솔게임 프로그래밍 (2) - 메뉴 선택기능

    안녕하세요 이번 강좌에서는 지난시간에 이어 메뉴를 선택하는 기능을 구현해보도록 하겠습니다. [목차] 1. 키보드 입력키 선정하기 2. 선정한 키값을 정의하기 3. 키보드 이벤트 처리하기 4. 메뉴 선택기능 구현하기 [1 키보드 입력키 선정하기] 게임 내 또는, 메뉴에서 사용할 키보드의 키를 미리 정의하기 위해서는어떤키를 선택할지 고민해야합니다. FPS게임은 주로 이동할 때 w, a, s, d 키를 사용합니다. 이와같이 내가 개발할 콘솔게임에서 어떤 키를 사용할지 정하는것도 꽤 중요합니다. 저는 탈출게임을 목표로 진행하고있기때문에 상하좌우를 이동하기위해 w, a, s, d 키로 정하도록 하겠습니다. 기타 키값으로는 게임을 종료할 땐 q를 사용하도록 하겠습니다. [2 선정한 키값 정의하기] 선정한 키보드 값..

    [C/C++] 콘솔게임 프로그래밍 (1) - 프로젝트 생성 및 메인화면

    [C/C++] 콘솔게임 프로그래밍 (1) - 프로젝트 생성 및 메인화면

    안녕하세요 이번 강좌에서는 프로젝트를 생성하고 메인화면을 개발해보도록 하겠습니다. 저는 Dev C++로 강좌를 진행할것입니다.Dev C++을 설치하고싶으시면 이전 강좌를 참고하시기 바랍니다. [목차] 1. 프로젝트 생성하기 2. 타이틀 출력하기 3. 콘솔창 크기 조절하기 4. 기능별로 함수 분할하기 5. 커서 위치 이동하는 함수 구현하기 6. 메인메뉴 구현하기 [1 프로젝트 생성하기] Dev C++을 실행하고 왼쪽상단의 메뉴바 중 파일을 선택합니다. 파일 > 새로만들기 > 프로젝트 위와같은 창이 뜨면콘솔 어플리케이션을 선택하시고 C(또는 C++)체크,프로젝트명은 여러분들이 원하는것으로 정해주시면 됩니다. 그리고 확인버튼을 눌러주세요 그러면 좌측 리스트에 아래와같이 main.c 소스코드가 생성됩니다. 메인..

    [C/C++] 콘솔게임 프로그래밍 (0) - 기획 및 개발준비하기

    [C/C++] 콘솔게임 프로그래밍 (0) - 기획 및 개발준비하기

    안녕하세요 이번 포스트주제는 C/C++ 로 콘솔게임 개발하기입니다. C언어나 C++의 기초만 알고계신다면 쉽게 따라오실 수 있습니다. [요구사항]조건문반복문배열함수 위에 작성한 내용에 대해서 알고계셔야 이해하기 쉽습니다. 모르는상태로 진행해도 강좌를 따라하면 완성되겠지만 개념이 잡히지않은상태로 따라오면이후에 고생하실수도 있습니다. C/C++이라고는 하였지만 C언어 중심으로 진행할 계획입니다.(클래스, 네임스페이스 미사용) 콘솔환경 게임은 C/C++ 둘다 개발 방식은 거의 동일하므로 C언어 중심으로 진행해도 큰 문제는 없다고 생각합니다. 1회차 강좌에 여러 챕터로 나눠서 진행할 예정입니다.기능별로 챕터를 나눠서 한 강좌에 2개 이상의 챕터가 포함되도록 하겠습니다. 먼저 본격적으로 개발을 시작하기 전에 구상..

    [C/C++] Sizeof 연산자

    [C/C++] Sizeof 연산자

    안녕하세요 이번 글에서는 sizeof 연산자에 대해서 알아보도록 하겠습니다. sizeof 연산자는 데이터(변수, 상수, 타입등..)의 크기를반환하는 연산자입니다. 데이터 크기의 단위는 바이트(Byte) 크기로 반환합니다. 자료형과 그의 크기입니다. char : 1 Byteshort : 2 Byteint : 4 bytelong : 4 Byte float : 4 Bytedouble : 8 Byte 한번 코드로 직접 확인해봅시다. 맨 위에 구조체가 선언되어있습니다. data라는 구조체 내부에는 string이라는 char형 배열이 있는데 배열의 크기는 20입니다.char 은 1Byte이고 20칸 배열이라면 크기는 20Byte 라는것을 예측 할 수 있습니다.그리고 int형 변수도 있습니다. int는 4Byte 이..