분류 전체보기
-
캡슐화 (Encapsulation) 객체의 본질적인 특성 중 하나 객체를 캡슐로 싸서 내부를 보호하고 외부에서 접근을 제한 목적은 객체 내 데이터에 대한 보안과 보호, 외부 접근 제한 C++ 클래스와 객체 클래스 : 객체를 만들어내기 위한 설계도 또는 틀로, 멤버 변수와 멤버 함수의 선언으로 구성 객체 : 클래스의 모양을 그대로 가지고 생성되며, 멤버 변수와 멤버 함수로 구성 생성자 (Constructor) 객체가 생성될 때 자동으로 호출되는 멤버 함수 주요 목적은 객체 초기화, 메모리 할당, 파일 열기, 네트워크 연결 등 생성자 이름은 클래스 이름과 동일하며 리턴 타입이 없다. 여러 개의 생성자 중 하나만 실행되며, 선언되어 있지 않으면 기본 생성자가 자동으로 생성 소멸자 (Destructor) 객체가..
[C++] 클래스와 객체 요약캡슐화 (Encapsulation) 객체의 본질적인 특성 중 하나 객체를 캡슐로 싸서 내부를 보호하고 외부에서 접근을 제한 목적은 객체 내 데이터에 대한 보안과 보호, 외부 접근 제한 C++ 클래스와 객체 클래스 : 객체를 만들어내기 위한 설계도 또는 틀로, 멤버 변수와 멤버 함수의 선언으로 구성 객체 : 클래스의 모양을 그대로 가지고 생성되며, 멤버 변수와 멤버 함수로 구성 생성자 (Constructor) 객체가 생성될 때 자동으로 호출되는 멤버 함수 주요 목적은 객체 초기화, 메모리 할당, 파일 열기, 네트워크 연결 등 생성자 이름은 클래스 이름과 동일하며 리턴 타입이 없다. 여러 개의 생성자 중 하나만 실행되며, 선언되어 있지 않으면 기본 생성자가 자동으로 생성 소멸자 (Destructor) 객체가..
2023.09.26 -
유니티에서 캐릭터의 조작을 구현할 때 어떻게 구현할지 고민하게 된다. 그중에서 Character Controlle 컴포넌트를 사용하면 3D 환경에서 캐릭터의 다양한 움직임을 쉽게 구현할 수 있다. 하지만 다음과 같은 단점이 존재한다. 1. 제한된 기능 간단한 움직임 및 점프와 같은 기본적인 캐릭터 컨트롤 기능을 제공하지만, 고급 기능을 구현하기에는 한계가 있다. 2. 물리 시뮬레이션 부족 유니티 캐릭터 컨트롤러는 물리 시뮬레이션을 제공하지 않거나 제한적으로 지원한다. 3. 격자 형태 이동 캐릭터 컨트롤러는 주로 격자 형태로 이동하는 것을 지원하며, 좀 더 부드러운 이동이나 미끄러짐을 다루기에는 어려움이 있을 수 있다. 4. 커스터마이즈 어려움 기본 캐릭터 컨트롤러를 수정하거나 확장하기가 어렵다. 5. 네..
[Unity] Character Controlle 단점유니티에서 캐릭터의 조작을 구현할 때 어떻게 구현할지 고민하게 된다. 그중에서 Character Controlle 컴포넌트를 사용하면 3D 환경에서 캐릭터의 다양한 움직임을 쉽게 구현할 수 있다. 하지만 다음과 같은 단점이 존재한다. 1. 제한된 기능 간단한 움직임 및 점프와 같은 기본적인 캐릭터 컨트롤 기능을 제공하지만, 고급 기능을 구현하기에는 한계가 있다. 2. 물리 시뮬레이션 부족 유니티 캐릭터 컨트롤러는 물리 시뮬레이션을 제공하지 않거나 제한적으로 지원한다. 3. 격자 형태 이동 캐릭터 컨트롤러는 주로 격자 형태로 이동하는 것을 지원하며, 좀 더 부드러운 이동이나 미끄러짐을 다루기에는 어려움이 있을 수 있다. 4. 커스터마이즈 어려움 기본 캐릭터 컨트롤러를 수정하거나 확장하기가 어렵다. 5. 네..
2023.09.24 -
예제 1 - 클래스와 객체를 이용해서 계산기 만들기 1. 사칙연산을 수행할 클래스를 정의한다. 2. 사용자로부터 입력을 받고, 해당 클래스를 이용하여 사칙연산을 수행하는 계산기를 만든다. Add.h #ifndef ADD_H #define ADD_H class Add { int num1, num2; public: void Value(int a, int b); int process(); }; #endif Add.cpp #include "Add.h" void Add::Value(int a, int b) { num1 = a; num2 = b; } int Add::process() { return num1 + num2; } Sub.h #ifndef SUB_H #define SUB_H class Sub { int ..
[C++] 예제 연습 / 23.09.22예제 1 - 클래스와 객체를 이용해서 계산기 만들기 1. 사칙연산을 수행할 클래스를 정의한다. 2. 사용자로부터 입력을 받고, 해당 클래스를 이용하여 사칙연산을 수행하는 계산기를 만든다. Add.h #ifndef ADD_H #define ADD_H class Add { int num1, num2; public: void Value(int a, int b); int process(); }; #endif Add.cpp #include "Add.h" void Add::Value(int a, int b) { num1 = a; num2 = b; } int Add::process() { return num1 + num2; } Sub.h #ifndef SUB_H #define SUB_H class Sub { int ..
2023.09.22 -
문제 설명 문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요. 제한사항 1 ≤ str의 길이 ≤ 1,000,000 str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다. Solution.cs using System; public class Example { public static void Main() { String s; Console.Clear(); s = Console.ReadLine(); Console.WriteLine(s); } } 실행 결과 입력값 〉 "HelloWorld!" 기댓값 〉 "HelloWorld!" 실행 결과 〉 테스트를 통과하였습니다. 출력 〉 HelloWorld!
[C# 코딩테스트 연습] Lv.0 문자열 출력하기문제 설명 문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요. 제한사항 1 ≤ str의 길이 ≤ 1,000,000 str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다. Solution.cs using System; public class Example { public static void Main() { String s; Console.Clear(); s = Console.ReadLine(); Console.WriteLine(s); } } 실행 결과 입력값 〉 "HelloWorld!" 기댓값 〉 "HelloWorld!" 실행 결과 〉 테스트를 통과하였습니다. 출력 〉 HelloWorld!
2023.09.16 -
지난 12일 유니티가 내년부터 플랜 가격을 업데이트할 예정이라 공개했다. 문제는 게임이 다운로드될 때마다 유니티가 수수료를 받겠다는 것이다. 그래서 게임을 다운로드할수록 손해가 발생한다는 것이다. (게임을 계속 다운로드만 하여 악용할 수 있는 경우도 있다.) 이 같은 문제 때문에 국내외 개발자들의 강력한 반발이 일어나고 있다. 대부분의 개발자들이 언리얼 엔진이나 고도 엔진으로 교체를 생각하고 있고, 많은 인디게임 개발사들이 성명문을 발표했다. (이미 유니티로 제작 중이던 게임을 언리얼로 제작하고 있는 개발자도 있고 게임 판매를 중단한 개발사도 있다.) 유니티는 14일 X(트위터)를 통해 사용자 90% 이상이 업데이트될 정책의 영향을 받지 않으며 재설치나 체험판 설치 등은 수수료를 부과하지 않을 것이라고 ..
[Unity] 가격정책 변경 이슈지난 12일 유니티가 내년부터 플랜 가격을 업데이트할 예정이라 공개했다. 문제는 게임이 다운로드될 때마다 유니티가 수수료를 받겠다는 것이다. 그래서 게임을 다운로드할수록 손해가 발생한다는 것이다. (게임을 계속 다운로드만 하여 악용할 수 있는 경우도 있다.) 이 같은 문제 때문에 국내외 개발자들의 강력한 반발이 일어나고 있다. 대부분의 개발자들이 언리얼 엔진이나 고도 엔진으로 교체를 생각하고 있고, 많은 인디게임 개발사들이 성명문을 발표했다. (이미 유니티로 제작 중이던 게임을 언리얼로 제작하고 있는 개발자도 있고 게임 판매를 중단한 개발사도 있다.) 유니티는 14일 X(트위터)를 통해 사용자 90% 이상이 업데이트될 정책의 영향을 받지 않으며 재설치나 체험판 설치 등은 수수료를 부과하지 않을 것이라고 ..
2023.09.15 -
게임 플레이 영상 23년 5월쯤, 교내 경진대회에 참여하기 위해 처음으로 시작한 유니티 프로젝트다. 이때는 유니티를 배운 지 얼마 안 되었고, 주로 클론 코딩으로 학습한 수준이었다. 완성도 있는 게임을 만들기 위해, 탱크의 이동부터 연출까지 어떻게 해야 할지 고민하며 세세하게 기획했다. 하지만 막상 그것들을 구현하니 예기치 않은 버그와 생각과 다른 결과가 나왔다. 특히, 탱크가 지형을 통과하고 이동하는 버그 때문에 고생을 많이 했다. 문제를 해결하려고 탱크의 질량이나 속도를 변경했지만 기교일 뿐, 근본적인 문제는 해결하지 못했다. 그래서 같은 문제를 겪었던 사람들의 해결방법을 찾아서 알아보고 문제의 이유에 대해 이해하려 했다. 이 과정에서 Raycast 함수를 이용하여 문제를 해결했으며 지금까지도 이때 ..
교내 경진대회(장려상) - 3D 탱크 게임게임 플레이 영상 23년 5월쯤, 교내 경진대회에 참여하기 위해 처음으로 시작한 유니티 프로젝트다. 이때는 유니티를 배운 지 얼마 안 되었고, 주로 클론 코딩으로 학습한 수준이었다. 완성도 있는 게임을 만들기 위해, 탱크의 이동부터 연출까지 어떻게 해야 할지 고민하며 세세하게 기획했다. 하지만 막상 그것들을 구현하니 예기치 않은 버그와 생각과 다른 결과가 나왔다. 특히, 탱크가 지형을 통과하고 이동하는 버그 때문에 고생을 많이 했다. 문제를 해결하려고 탱크의 질량이나 속도를 변경했지만 기교일 뿐, 근본적인 문제는 해결하지 못했다. 그래서 같은 문제를 겪었던 사람들의 해결방법을 찾아서 알아보고 문제의 이유에 대해 이해하려 했다. 이 과정에서 Raycast 함수를 이용하여 문제를 해결했으며 지금까지도 이때 ..
2023.09.14 -
주석문 (Comments) 주석은 코드 설명과 메모를 추가하는 데 사용됨 한 줄 주석(//)과 여러 줄 주석(/* ... */)이 있음 main() 함수 C++ 프로그램의 시작점인 함수 main() 함수가 종료하면 프로그램도 종료됨 표준 모양은 int main()이며 0 또는 다른 값 반환 가능 void main()은 표준이 아님 #include 입출력 작업을 위한 C++ 표준 라이브러리 헤더 파일 cin, cout, endl 등을 사용 가능하게 함 namespace 키워드 이름 충돌을 피하기 위해 사용 std는 표준 라이브러리의 이름 공간 std::cout, std::cin, std::endl와 같이 사용 using namespace std;로 std 생략 가능 cin과 >> 연산자 cin은 표준 입력..
[C++] 기본 개념 요약주석문 (Comments) 주석은 코드 설명과 메모를 추가하는 데 사용됨 한 줄 주석(//)과 여러 줄 주석(/* ... */)이 있음 main() 함수 C++ 프로그램의 시작점인 함수 main() 함수가 종료하면 프로그램도 종료됨 표준 모양은 int main()이며 0 또는 다른 값 반환 가능 void main()은 표준이 아님 #include 입출력 작업을 위한 C++ 표준 라이브러리 헤더 파일 cin, cout, endl 등을 사용 가능하게 함 namespace 키워드 이름 충돌을 피하기 위해 사용 std는 표준 라이브러리의 이름 공간 std::cout, std::cin, std::endl와 같이 사용 using namespace std;로 std 생략 가능 cin과 >> 연산자 cin은 표준 입력..
2023.09.12 -
예제 1 - class를 이용한 원 면적 계산 #include using namespace std; class Circle { private: // 맴버 변수 public: // 맴버 함수 int radius; double getArea(); }; // 면적 계산 double Circle::getArea() { return 3.14 * radius * radius; } int main() { Circle donut; donut.radius = 1;// donut 객체의 반지름을 1로 설정 double area = donut.getArea();// donut 객체의 면적 알아내기 cout
[C++] 예제 연습 / 23.09.12예제 1 - class를 이용한 원 면적 계산 #include using namespace std; class Circle { private: // 맴버 변수 public: // 맴버 함수 int radius; double getArea(); }; // 면적 계산 double Circle::getArea() { return 3.14 * radius * radius; } int main() { Circle donut; donut.radius = 1;// donut 객체의 반지름을 1로 설정 double area = donut.getArea();// donut 객체의 면적 알아내기 cout
2023.09.12