본문 바로가기

C언어100

언리얼엔진5 27장 [매크로] ▣ 안녕하세요. 이번장에서는 매크로를 공부해 보겠습니다. 매크로는 함수와 비슷합니다. 그리고 조금 다릅니다. 이 차이를 보기 위해 노드를 연결하며 공부해 보겠습니다. ▣ 먼저 저번장에서 공부했던 Axis로 입력하는 함수를 통해서 진행했던 노드에서 branch가 아닌 Compare Float 매크로블록으로 변경했습니다. 블록에 M이라고 적혀 있으면 매크로이고 F라고 되어 있으면 function 함수입니다. ▣ 컴파일 저장 후 씬에서 플레이 버튼을 클릭하고 위, 아래 키를 누르면 위에 이미지처럼 출력이 잘 되는 걸 확인할 수 있습니다. ▣ 이번에는 매크로를 직접 만들어서 사용해 보겠습니다. 왼쪽메뉴에 보면 MACROS라는 메뉴가 있습니다. 더하기 버튼을 클릭하면 생성이 됩니다. 함수와 동일합니다. ▣ 매크로.. 2023. 2. 14.
C++ [헤더파일] ▣ Sum.cpp라는 소스파일을 생성하고 함수를 정의합니다. ▣ Sum.h 라는 헤더파일을 생성하고 아까 만든 함수를 선언합니다. ▣ 라이브러리에 있는 헤더는 으로 불러온다. ▣ 사용자가 임의로 만든 헤더는 "Sum.h" 이런식으로 불러온다. ▣ 헤더를 통해서 가져오게 되면 컴파일 과정에서 내가 필요한 코드만 컴파일한다. 2023. 2. 8.
언리얼엔진5 20장 [Actor생성, Actor이동] ▣ 안녕하세요. 이번장에서는 Actor를 생성하고 이동하는 코드를 공부해 보겠습니다. ▣ 먼저 Content Drawer메뉴에서 오른쪽마우스를 클릭하여 Blueprint Class를 클릭합니다. ▣ 그럼 이렇게 여러 가지 메뉴들이 나오는데 맨 위에 Actor를 클릭합니다. ▣ 생성한 Actor에 이름을 Player로 지정합니다. F2키를 눌러서 이름을 바꿀 수도 있습니다. ▣ Player Actor를 클릭하여 Actor에 들어갑니다. 그리고 왼쪽메뉴 중에 Components에서 Add를 클릭하고 Basic Shapes에서 Cube를 클릭합니다. 그럼 큐브가 그려집니다. 컴파일 저장 후 ▣ Player Actor를 씬에 드래그합니다. 그럼 위에 이미지처럼 큐브가 생성되는 걸 확인할 수 있고 오른쪽에 Out.. 2023. 2. 2.
C vs C++ 입출력 차이 ▣ C언어, C++ 입력, 출력 차이 헤더를 선언 방법 : C언어 C++ , C++에서는. h 확장자를 붙이기 않는다. C언어 입력 : scanf("%d", &number), scanf함수 안에 어떤 데이터 타입으로 입력받을지 데이터 타입(형식)과 변수의 주소를 넣어야 한다. C++ 입력 : cin >> number , >> 추출 연산자를 이용하여 어디 변수에 저장하는지만 지정해준다. C언어 출력 : printf("%d", number), printf함수 안에 어떤 데이터 타입(형식)으로 출력할지를 지정 그리고 변수나 숫자를 넣어서 출력한다. C++ 출력 : cout 2022. 12. 8.
C언어 - [Beep함수, 음파] ▣ Beep()함수를 사용하려면 우선 헤더를 정의해주세요. ▣ 그리고 Beep()함수에 매개변수 값을 조절하며 음정을 만들고 음악을 만들어보세요. 코드는 순차적(순서대)으로 작동합니다. 2022. 8. 19.
Visual studio 단축키 안녕하세요. ^^ 비주얼스튜디오를 사용하다가 많이 사용하는 단축키를 모아서 정리해보았습니다. 솔루션 탐색기 열기 Ctrl + Alt + L 코드자동완성 Ctrl + Space 현재 커서 라인 복사해서 아래라인에 붙여넣기 Ctrl+D 현재 커서 라인 잘라내기 Ctrl + X 드래그한 범위 주석처리 Ctrl + K -> Ctrl + C 드래그한 범위 주석해제 Ctrl + K -> Ctrl + U 단어 검색, 찾기 Ctrl + F 2022. 7. 28.
C언어 - [#pragma] ▣ 안녕하세요. 이번장에서는 #pragma를 공부해보겠습니다. #pragma는 컴파일러 기능을 지정하는 비표준 전처리기입니다. #define과 비슷하지만 다른 기능들이 있으니 하나하나 코드를 작성해보겠습니다. ▣ 비주얼스튜디오를 기준으로 scanf() 함수를 작성하고 디버그를 하면 이렇게 경고가 나오는 걸 확인할 수 있습니다. ▣ scanf_s() 함수를 사용해서 경고를 해결할 수 있지만, 이렇게 #define _CRT_SECURE_NO_WARNINGS 를 맨 위에 작성하고 디버그를 하면 경고 없이 scanf() 함수를 사용할 수 있습니다. ▣ 그리고 #pragma warning(disable : 4996) 이렇게 하면 컴파일에서 4996 오류를 무시하고 진행하게 됩니다. ▣ 또 #pragma once를.. 2022. 2. 15.
C언어 - [헤더파일] ▣ 안녕하세요. 이번장에서는 헤더 파일이 무언인지 알아보겠습니다. ▣ 먼저 test.c로 소스파일을 추가해서 코드를 작성해보겠습니다. 반환형은 int형으로 매개변수는 두개, 리턴 값으로 두 매개변수의 값을 반환하는 코드입니다. ▣ 그리고 h헤더파일을 추가하여 int sum(int num1, int num2); 함수에 존재를 선언하는 코드를 작성합니다. ▣ 그리고 #include "testh.h"를 선언합니다. 그러면 아까 test에서 정의해서 만들었던 함수를 사용할 수 있습니다. sum() 함수를 사용하여 매개변수 값을 전달하면 값을 받아와서 출력하면 더한 값이 출력되는걸 확인할 수 있습니다. ▣ 이렇게 헤더파일은 메뉴판, 선언문 정도 생각하시면 됩니다. 코드를 작성하여 다른 소스코드에 h를 사용하고 접.. 2022. 1. 26.
C++ [bool, 데이터자료형] ▣ 안녕하세요. 이번장에서는 C++에서의 bool 자료형에 대해 공부해보도록 하겠습니다. ▣ bool 자료형은 변수의 자료형들 중에 하나입니다. int 형은 정수형, float 형은 실수형 이런 식으로 자료형이 있듯이 bool 형은 true(1), false(0)를 저장하는 형식에 자료형이라고 생각하시면 됩니다. ▣ 변수를 선언할 때 bool 자료형으로 지정을 하고 값을 true, false로 각각 대입을 하고 출력을 해보겠습니다. 그러면 1과 0이 출력되는 걸 확인할 수 있습니다. ▣ 그럼 1과 0이 아닌 true와 false 값을 출력하는 코드를 진행해보겠습니다. 그러기 위해서는 cout으로 boolalpha로 코드를 작성한 후에 bool 값이 있는 변수를 출력합니다. 그러면 true, false값으.. 2021. 10. 21.
C언어 - [동시실행, 스레드, 쓰레드, Thread] ▣ 안녕하세요. 이번장에서는 스레드를 공부해보도록 하겠습니다. 우선 스레드(쓰레드)가 무엇인지 이야기해 보록 하겠습니다. 스레드는 프로세서 내에서 실행되는 흐름, 단위, 갈래를 이야기합니다. ▣ 그럼 여기서 또 다른 질문이 생깁니다. 프로세서가 무엇일까요? 우리가 디버그로 컴파일 과정을 진행하면 링커를 통해서 exe로 프로그램을 만듭니다. 프로세서는 이런 프로그램을 실행되서 돌아가는 상태 컴퓨터가 일하고 처리하는 상태를 이야기합니다. ▣ 그럼 스레드는 무엇일까요? 프로세서는 하나의 일만 처리할 수 있습니다. 그래서 여러개의 스레드로 여러 개에 일을 처리하게 합니다. 이걸 멀티스레드라고 합니다. ▣ 윈도우에서 CTRL + ALT + Delete 키를 누르면 이렇게 프로세서에 여러개의 프로그램을 돌리고 있는.. 2021. 9. 15.
C언어 - [소리재생, Beer, _getch] ▣ 안녕하세요. 이번장에서는 windows.h를 이용하여 음파 소리를 재생하는 코드를 진행하겠습니다. ▣ 먼저 #include로 헤더들을 포함시키도록 하겠습니다. 는 콘솔에 관련된 헤더를 가져옵니다. while문안에 _getch()함수로 입력을 받습니다. 이건 버퍼를 거치치않고 바로 키값을 반환해주는 함수입니다. 키를 누르면 바로 소리가 나오게 코드를 작성하기 위함입니다. ▣ 를 추가해주세요. 그럼 Beep()함수를 사용할 수 있습니다. Beep(음파:주파수, 소리 지속시간-밀리초) 매개변수로 호출이 가능합니다. 그리고 switch()에서 case 'a': 키를 눌렀을 때 Beep(260, 500);이라고 하면 260 도의 음파를 의미하며 500으로 0.5초를 지속하게 합니다. ▣ 이렇게 a부터 k까지 .. 2021. 8. 31.
C언어 - [화면지우기, 잠시대기, Sleep, cls, Windows.h] ▣ 안녕하세요. 이번장에서는 콘솔 창에 출력한 내용을 삭제하는 함수와 코드를 잠시 대기하게 하는 함수를 공부해보겠습니다. ▣ 우선 간단하게 3가지 문장을 출력해보겠습니다. 그리고 3개가 한꺼번에 출력되는걸 확인할 수 있습니다. 이제 이걸 1초마다 한개씩 추가해서 출력해보겠습니다. ▣ 먼저 #include 을 작성해주세요. 그리고 printf()함수 밑에 각각 Sleep()이라는 함수를 호출합니다. 밀리초 단위를 매개변수 값으로 넣어서 호출하면 되는데 1000을 넣게되면 1초를 기다리고 다음 코드를 진행하게 됩니다. 코드를 완성한 후에 디버그를 해보면 안녕이 나오고 1초 뒤에 나는 C언어야 ^^ 1초 뒤에 우린 함께 C언어 공부해볼까?...라는 문구가 나오는 걸 확인할 수 있습니다. ▣ 그럼 이번에는 pr.. 2021. 7. 22.
C언어 - [글자 색 변경, 콘솔창 크기, 콘솔창 색, 글자 배경색] ▣ 먼저 윈도우 운영체제 기준으로 콘솔 창 크기와 콘솔 창 색을 변경해보겠습니다. #include 를 선언해주세요. 그리고 system("mode con:cols=30 lines=30"); 형식으로 system() 함수 매개변수 안에 문자열 형식으로 mode con을 하게 되면 콘솔에 모드를 바꾼다라는 이야기이고 cols 가로, lines 세로를 변경하는 크기를 의미합니다. 그리고 system("color 30")처럼 콘솔 창에 색을 지정할 수도 있습니다. ▣ 글자에 색과 글자에 배경색을 변경하려면 우선 함수를 선언 및 정의를 해야 합니다. void ColorSet() 함수로 만들고 (int backColor, int textColor)로 매개변수를 각각 지정해줍니다. 그리고 HANDLE 윈도에 핸들 값.. 2021. 6. 2.
C언어 - [malloc, 메모리할당, memset] ▣ 메모리를 할당하려면 먼저 #include 를 선언해주세요. 그리고 주소를 저장하는 변수 포인터에 malloc(sizeof(int))함수로 메모리를 할당해주세요. 그럼 int 4byte만큼 메모리가 할당되고 그 메모리에 주소 값이 포인터에 대입이 됩니다. 그리고 %p 형식으로 메모리 주소를 확인해보면 이렇게 각각에 주소가 나오는 걸 확인할 수 있습니다. ▣ 여기서 기억해야 할껀 malloc()함수의 원형 형태는 void * malloc(size)입니다. 그렇기 때문에 void 반환형이 없다라는 자료형이므로 만약 int*주소를 반환하고 싶다면 (int*)malloc(size)로 코딩을 진행해야 합ㄴ디ㅏ. ▣ 직접 중단점을 찍고 디버그를 해서 메모리를 확인해보겠습니다. p2에 값을 확인해보면 이렇게 4by.. 2021. 5. 17.
C언어 - [공용체, 열거형, 구조체비트필드] ▣ 우선 공용체는 쉽게 이야기하면 메모리를 공용으로 사용하는 구조체라고 생각하시면 됩니다. union으로 구조체와 동일하게 선언해주시고, 안에 변수를 선언해주세요. 그리고 main함수에서 union Game game;으로 정의한 후에 printf() 함수로 각각에 메모리 크기를 출력해보세요. 그럼 메모리 크기가 가장 큰 자료형 크기로 공용체가 정의되어 있음을 확인할 수 있습니다. ▣ 같은 메모리를 사용하는지 값을 넣어서 확인해보겠습니다. char, short, int 형 중에 가장 큰 자료형인 int game.score에 값을 넣어보겠습니다. 숫자 앞에 0x가 있으면 16진수입니다. 형식 지정자도 % x를 해야지 16진수로 출력되게 됩니다. ▣ 출력해보면 나누어져 값이 들어가 있는 걸 확인할 수 있습니다.. 2021. 5. 17.
C언어 - [구조체, 구조체 포인터, 구조체배열, 구조체포인터배열] ▣ 구조체는 쉽게 생각하면 c언어로 배열을 만들 때 하나에 자료형으로 선언하고 사용합니다. int game[10] 이렇게 하나에 자료형으로 사용하게 되면 우리가 game에 대한 여러 가지 정보를 관리하려면 이렇게 char gameName [10], int gameNumber [10], int gameScore [10] 이런 식으로 하나하나 선언해주고 관리해야합니다. 이렇게 되면 코드가 너무 길어지고 관리하는 게 복잡할 수 있습니다. 그래서 사용하는게 바로 구조체입니다. ▣ 먼저 구조체는 함수 외부에서 선언해야 합니다. struct라는 자료형식으로 지정해주고 이름을 정해줍니다. 구조체 이름은 나중에 함수안에서 선언할 변수와 이름이 헷갈릴 수 있기 때문에 대문자로 시작해주세요. 이 시작이 나중에 객체지향언어.. 2021. 5. 16.
C언어 - [스톱워치, 타이머, 초 카운트, time] ▣ 헤더 파일은 Sleep() 함수를 사용하기 위해, time() 함수를 사용하기 위해 선언해 주세요. 먼저 endTime에 (unsigned)time(NULL)함수를 넣어주세요. (unsigned) 부호 비트가 0으로 시간 값을 음수가 아닌 양수로만 나타내기 위함입니다. 그럼 1970년 1월 1일부터 지금까지에 시간을 초로 반환해 줍니다. 이 값에 6을 더해줍니다. 이걸로 우리가 원하는 시간까지 초를 제한할 겁니다. ▣ 그리고 while문을 통해 startTime에 현재 시간을 넣어주세요. 그럼 whlie문을 통해 계속 반복을 하면 숫자가 초마다 늘어납니다. 그리고 조건문을 통해 0초가 되면 종료되게 코드를 완성했습니다. 그리고 확인을 하면 ▣ 이렇게 1초마다 줄어들면서 0초까지 반복되고 종료되는걸 확.. 2021. 5. 11.
C언어 - [글자 위치 이동, 커서 이동 코드] ▣ 커서에 위치를 지정하려면 우선 windows.h 헤더파일 선언하고 함수 선언 및 정의를 해야한다. 함수에 매개변수에 x, y 값을 받을 매개변수를 선언하고 HANDLE 자료형을 선언한다. 이건 쉽게 이야기하면 windows에 도구를 사용하기 위한 키값이라고 생각하시면 됩니다. GetStdHandle(STD_OUTPUT_HANDLE) 출력하는 핸들 값을 handle에 정의하고 COORD 는 포지션을 구조체로 지정한다. pos.X = x, pos.Y = y 값으로 매개변수에 x, y 값으로 대입한다. SetConcoleCursorPosition(handle, pos) 커서를 지정하는 구조체에 매개변수 처음 값은 STD_OUTPUT_HANDLE 값과 COORD 포지션에 값을 각각 넣어주고 ▣ 메인 함수에서.. 2021. 5. 6.
C언어 27장(c언어 게임만들기_4.0 , 게임오버, 함수 응용, 배열응용, 전역변수, 조건문 활용, 반복문, 콘솔글자색 바꾸기, 배경색) ▣ 안녕하세요 저번장까지 완성해 보셨나요? 여러분들이 만든 c언어 게임이 궁금하네요 ^^ 혹시 만드시다가 피드백이 필요하신 분은 댓글 남겨주세요~~ ▣ 그럼 오늘은 플레이어 HP가 0이면 게임오버가 나오게 해 보겠습니다. 먼저 ▣ 게임 메뉴 콘솔 창에 크기를 조절해 주겠습니다. 이건 우리가 처음 시간에 하지 않았습니다. 그건 다시 게임 메뉴로 돌아올 상황이 없기 때문에, 기본 콘솔 창설 정으로 시작했지만, 이번에는 게임오버를 호출하고 다시 게임 메뉴로 돌아올 상황이 있기 때문에, 콘솔 창에 크기를 지정해주었습니다. 그렇게 하지 않으면, 우리가 게임 씬에서는 콘솔 창을 작게 정했기 때문에, 게임 메뉴 글자가 작아서 깨져서 보이겠죠? 설정한 다음에 ▣ 이번에는 전역 변수로 가서 몬스터에 파워를 지정해주겠습니.. 2020. 6. 26.
C언어 26장(c언어 게임만들기_3.5 , 랜덤함수, time함수, 함수 응용, 배열응용, 전역변수, 조건문 활용, 반복문활용, 콘솔글자색 바꾸기, 배경색) ▣ 안녕하세요 ^^ 저번장까지에 내용을 활용하여 게임 잘 만들어보셨나요? 지금까지 포기하지 않고 열심히 달려오신 분은 분명 많이 실력이 늘었을 거라 생각합니다. 코딩은 무언가 만들어갈 때 실력이 가장 빠르게 향상됩니다. 그러니 포기하지 마시고 끝까지 진행해 주세요. ▣ 그럼 오늘은 플레이어가 레벨업을 하면 파워가 오르고 그 파워에 따라 몬스터한테 공격을 할 수 있고, 그리고 몬스터가 랜덤으로 우리가 공격했을 때 아니면 몬스터가 살아있는 게임씬함수로 호출될 때 우리를 공격하는 코드를 간단하게 해 보겠습니다. ▣ 다시 말씀드리지만, 제 코딩이 정답이 아닙니다. 저는 정말 쉽게 만들자라는 생각으로 만들었습니다. 그러니 코드에 활용과 최적화 그리고 가독성을 생각하시면서 여러분들만에 게임코딩을 만들어주세요. 제가.. 2020. 6. 19.
C언어 25장(c언어 게임만들기_3, 배열응용, 응용 함수, 전역변수, 조건문 활용, 반복문, 콘솔글자색 바꾸기, 배경색) ▣ 안녕하세요 ^^ 저번장 숙제는 다해보셨나요? 이제 게임에 틀이 거의 완성되어 가고 있네요. 오늘은 플레이어가 몬스터를 죽이면 경험치가 오르고 레벨업을 하는 아주 간단한 함수를 구현해 보겠습니다. ▣ 매 장마다 말씀드리지만, 제가 만든 코딩이 정답이 아닙니다. 정말 쉽게 게임을 만들기 위해서 가독성과 최적화를 생각하지 않고 만들었기 때문에, 이점 참고해주시고 공부하면서 여러분들만에 코딩으로 바꿔서 게임을 만들어보세요. ▣ 먼저 게임 정보 함수에 플레이어에 레벨과 경험치를 표현해주는 함수를 추가해 보겠습니다. 경험치를 함수 표현한 하는 이유는 우리가 경험치 게이지를 배열로 표현해야 하기 때문입니다. ▣ 경험치게이지를 배열로 만들어서 색을 넣고 표현했습니다. 경험치에 변수값에 따라 반복하게 하게 하는 형식.. 2020. 6. 12.