클래스

스토어

2만원 쿠폰
프로그래밍 언어 · 개발자 라라

10년 차 개발자의 [게임 개발/앱 개발/프로그래밍]을 위한 C/C++ 입문

선물하기
바로 수강 가능

콘텐츠 이용권
입문자 대상

Class details

Running time
6 chapter, 45 lessons
Start date
바로 수강 가능
Subtitles
Not Included

Classmate's Comments

bool canRotate() { for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { if (userBlock[i][k] == 1) { int __x = blockX + USERBLOCK_SIZE - 1 - i; // 회전 시 x 좌표 int __y = blockY + k; // 회전 시 y 좌표 // 가로 범위 체크 if (__x > GRID_WIDTH - 1 || __x < 0) { return false; } // 세로 범위 체크 if (__y > GRID_HEIGHT - 1 || __y < 0) { return false; } // 다른 블록 체크 if (gameGridData[__y][__x] == 1) { return false; } } } } return true; } void rotate() { int temp[USERBLOCK_SIZE][USERBLOCK_SIZE] = { 0, }; for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { temp[i][k] = userBlock[i][k]; } } for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { userBlock[k][USERBLOCK_SIZE - 1 - i] = temp[i][k]; } } }
today's Comment
제가 scanf를 사용할때마다 초록 밑줄이 그어지는게 보기 싫어서 예전 강의를 돌려 봤습니다. 반환값을 받으면 되더군요. 그래서 scanf를 쓸때 앞에다가 int temp = 을 붙여서 쓰고 있는데 원래 이렇게 쓰는게 맞나요? 성능 차이는 어떤가요?
허준서's Comment
void rotate() { int rotation[USERBLOCK_SIZE][USERBLOCK_SIZE] = { 0, }; for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { rotation[k][USERBLOCK_SIZE - i - 1] = userBlock[i][k]; } } for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { userBlock[i][k] = rotation[i][k]; } } } // 회전 시 충돌할 수 있는 상황에서는 이렇게 해보았습니다. bool rotateDecision() { for(int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { if (userBlock[i][k] == 1 && (USERBLOCK_SIZE + blockX > GRID_WIDTH || blockX < 0)) return false; if (userBlock[i][k] == 0 && gameGridData[i+blockY][k+blockX] == 1) return false; } } return true; }
재호's Comment
게임 만드는게 어려운 일인줄은 알았지만 정말 생각 이상으로 까다롭긴 하네요... 회전 자체는 '배열 90도 회전'검색하면 원리가 금방 나올 정도로 어렵진 않지만 자잘한 버그들이 뒷목잡네요 ㅋㅋ 이 세상 게임개발자들 모두 존경하고 파이팅합니다!
Yurim Kim's Comment
bool canGoRotate() { for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { if (userBlock[i][k] == 1 && i+blockX<0) return false; if (userBlock[i][k] == 1 && i + blockX > GRID_WIDTH-1) return false; if (userBlock[i][k] == 1 && gameGridData[blockY + USERBLOCK_SIZE-k-1][blockX + i] == 1) return false; } } return true; } 회전할수 있는조건을 회전할 곳에 gameGridData를 확인하는 것과 , 왼쪽,오른쪽 끝을 확인하게 했고요. void rotate() { int bufferBlock[USERBLOCK_SIZE][USERBLOCK_SIZE] = { 0, }; for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k <USERBLOCK_SIZE; k++) { bufferBlock[i][k] = userBlock[k][USERBLOCK_SIZE - i-1]; } } for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { userBlock[i][k] = bufferBlock[i][k]; } } } 회전 함수는 위와 같이 구성했어요.
조광조_!?'s Comment
머리가 아프네요;; 그래도 동작은 되는걸 보니 뿌듯하네요
유민수's Comment
확실히 직접 해보니까 따라 치는 건 아무것도 안하는 거였네요 ㅋ큐ㅠㅠ,, void rotate() { // 회전을 구현해 보세요. // 사용하는거 userBlock int tmp[USERBLOCK_SIZE][USERBLOCK_SIZE] = { 0, }; for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { tmp[i][k] = userBlock[USERBLOCK_SIZE - k - 1][i]; } } for (int i = 0; i < USERBLOCK_SIZE; i++) for (int k = 0; k < USERBLOCK_SIZE; k++) userBlock[i][k] = tmp[i][k]; } bool canRotate() { for(int i = 0; i<USERBLOCK_SIZE; i++) for (int k = 0; k < USERBLOCK_SIZE; k++) { if (userBlock[i][k] == 1 && k + blockX + 1 > GRID_WIDTH - 1) return false; if (userBlock[i][k] == 1 && k + blockX - 1 < 0) return false; if (userBlock[i][k] == 1 && gameGridData[i + blockY][k + blockX - 1] == 1) return false; if (userBlock[i][k] == 1 && gameGridData[i + blockY][k + blockX + 1]) return false; } return true; }
서지희's Comment
20:49 에서 하시는 말씀이 형변환 되는게 아니라, 같은 문자열이 저장된 새로운 std::string으로 만들어져서 리턴된다는거죠?
산으로 가즈아's Comment
실제 수강생 후기
후기 작성하기
4.918
커리큘럼이 잘 짜여져있어요.
14명 공감
영상의 퀄리티가 높아요.
9명 공감
친절하고 자세하게 설명해주세요.
9명 공감

18개의 후기 더보기

개발자 라라님의
정성이 담긴 피드백

답변 완료율 97%
평균 3일 이내 응답
1,844개의 피드백 더보기

입문자분들을 위한
C++ 프로그래밍
클래스입니다.

20주 수강 가능
수강 기간 내 무제한 수강 가능합니다

🎓 C/C++ 기초의 필요성



이 클래스는 개발 기초를 위한 C / C++ 강의 입니다.

이 클래스는 통해 C/C++ 언어를 토대로

기본적인 프로그래밍 에 대한 이해와 스킬업을 통해

어떤 언어로 코딩을 하느냐에 관계없이 프로그래밍을 가능하도록

여러분의 기초 실력을 단단하게 다질 수 있도록 만들어드립니다.


게임 개발/앱 개발/프로그래밍을 하신다면 꼭 들으셔야 합니다.

기초를 소홀히 한다면 따라 하기식 개발만 배운 사람은

튜토리얼에 나온 개발 이외에는 개발이 어렵습니다.



자신만의 앱을 만들려는 순간 벽을 느끼게 되고 더 이상 진전되지 못하는 경우가 많습니다.




💯 꼭! 필요한 내용만 담았습니다.


🤷🏻‍♀️ 게임을 만들고 싶나요?

🤷🏻‍♀️ 구상만 한 앱 아이디어가 있나요?

🤷🏻‍♀️ 프로그래밍을 하고 싶은데 어디서부터 시작해야 할지 막막하시나요?


제가 학원 강사로 재직했을 당시, 강의 만족도는 항상 높았습니다.

또한 수업 내용에 대해서 컴플레인을 단, 한 번도 받아본 적 없습니다.

그 이유는 실제 꼭 필요한 내용만 담아 만들고 싶은 프로그램을 손쉽게 만들 수 있도록

튼튼한 기초를 강의했기 때문입니다.



C / C++에서 가장 중요한 부분만을 간단하게 추려 이해하기 쉽게 전달합니다.




안녕하세요

개발자 라라입니다.


저는 유튜버로 과학/IT 기술에 대한 콘텐츠를 만들며,

프로그래밍 결과물을 유튜브에서 공유하고 있습니다.


🖥 경력

저는 현업에서 10년간 개발자로 활동하고 있습니다. SI 분야에서 업무를 진행했으며,

현재 인디 게임 개발 회사에서 게임 개발자로 5년 동안 업무를 수행하고 있습니다.

또한 4년동안 게임프로그래밍, 애플리케이션 프로그래밍 관련 강사 경력이 있습니다.




🧑‍🎓 이 클래스는 다음 수강생들에게 매우 적절합니다.



게임 개발/앱 개발/프로그래밍 초심자에게 적절합니다.

따라 하기식 강의를 듣고 왔는데, 강의 내용 외에 자신이 원하는 개발을 하기 힘든 분들이 많습니다.

이는 대부분 프로그래밍 언어의 기초지식을 쌓지 않고 단순히 따라 하면서 배웠기 때문입니다.


요즘 한창 핫한 Python, 혹은 웹 개발, 앱 개발이나 게임 개발을 목표로 하시더라도 이 기초 강의는 꼭 수강하시는 것을 추천합니다.

기초가 튼튼한 개발자가 오랫동안 안전하고 튼튼한 개발을 할 수 있습니다.

건물을 지을 때에도 튼튼한 기초공사가 되어있어야만 높은 건물을 올릴 수 있듯. 개발도 마찬가지 입니다.


✅ 범용적인 프로그래밍 지식을 원한다면 꼭 필요한 강의입니다.

이 클래스는 흔히 어렵다고 생각하는 C / C++을 이용한 강의 입니다.

하지만 본 강의는 C / C++ 에서 가장 중요한 부분만을 추려서 어렵지 않게 전달하며,

강의를 완료하게 되면 C / C++에 대한 기초 지식을 쌓게 되고,

이 C / C++ 기초 지식은 그 자체만으로 다른 언어로 프로그래밍을 할 때, 많은 도움이 되는 내용입니다


✅ 대학교에서 전공 강의를 따라가기 어려운 분들에게도 적합합니다.

전공 수업은 기본적으로 많은 내용을 한 번에 알려주기 때문에

교수님의 실력에 관계없이 대학 수업 자체에 어려움을 호소하는 분들이 많습니다.

이 분들을 위해 핵심, 중요한 부분 위주로 알려드릴 수 있어

훨씬 더 빠른 프로그래밍 습득이 가능합니다.



이런 분들을 위해 핵심만을 뽑아, 강의를 만들었기 때문에 무엇이 중요한지를 확실히 알려드릴 수 있습니다.




🧑‍🎓 게임 프로그래밍을 목표로 하는 입문자

🎲 Unity, Unreal, Cocos2d-x 등 게임 엔진으로 입문하기 앞서 수강하길 권장드립니다.


게임이라는것 은 초당 60~144 회의 갱신이 일어나는 시뮬레이션 공간입니다.

1초에 60번, 정해진 시뮬레이션 공간 안의 개체들은 CPU에 의해 끊임없이 연산되어야 하고,

해당 데이터를 바탕으로 화면에 렌더링 해야 하는 개체들은 끊임없이 GPU에 의해 연산됩니다.


때문에 가장 퍼포먼스가 좋은 프로그래밍 언어로 개발되는 경우가 많으며,

캐주얼 게임이 아닌 이상 대부분의 고사양 게임은 C++, C# 등 퍼포먼스가 검증된 언어로 개발하게 됩니다.


즉, 게임 개발을 위해 C / C++ 언어를 통해 프로그래밍의 기초를 쌓게 된다면 어떤 게임을 만들어도 더더욱 퍼포먼스가 좋은 게임을 만들 수 있으며,

게임 개발에 대한 지식도 쌓을 수 있습니다.



👩🏻‍🎓 클래스를 수강하면 무엇을 배우나요?



이 클래스를 수강하면 C / C++에 관련한 기초적인 프로그래밍 지식을 배우게 됩니다.


🖥 본 클래스는 실습 중심의 커리큘럼으로 구성되어 있습니다.

극 초반부를 제외한 대부분의 챕터는 1개 혹은 2개의 연습 프로그래밍이 출제되며, 연습 프로그래밍은 다음 챕터에서 함께 프로그래밍을 통해 마스터하게 됩니다.


1️⃣ 기초 C 프로그래밍

이 챕터에서는 기본적인 C 언어의 활용방법을 배우게 됩니다.

C 언어의 활용을 배우면서 컴퓨터 프로그램의 기초적인 구조를 알게 됩니다.


2️⃣ 심화 C 프로그래밍

포인터가 어려우시다고요?

이 챕터에서는 일반적으로 C 혹은 프로그래밍 언어를 배우는 분들이 가장 이해하기 어려운 포인터에 대한 개념을 쉽게 풀어내는 강의가 됩니다.

여기서 배운 내용을 바탕으로 콘솔에서 동작하는 간단한 MBTI 테스트를 만들어 보게 됩니다.


3️⃣ 기초 C++ 프로그래밍 - 객체지향 첫걸음

이 챕터에서는 클래스와 객체지향에 대해서 간단하게 알아보게 됩니다.

객체지향이라고 하면 굉장히 어렵다고 생각하는 경향이 있는데요,

객체지향에서 알아둬야 하는 아주 기본적인 내용을 다루고 있으며,

다른 프로그래밍 언어에서도 흔하게 찾아볼 수 있는 내용을 위주로 강의가 진행되므로

개발자를 목표로 한다면 꼭 알아야 하는 내용이라고 할 수 있겠습니다.

여기서 배운 내용을 바탕으로 간단한 콘솔 테트리스 게임을 만들어 보게 됩니다.


4️⃣ 심화 C++ 프로그래밍 - 고급 프로그래밍을 위해

이 챕터에서는 C++의 컴파일 방법과 여러 가지 C++에서 활용하는 추가적인 개념을 배우게 됩니다.

여기서 배운 내용을 바탕으로 영문 타자 연습 프로그램을 만들어보게 됩니다.




콘솔 프로그래밍에 대하여

콘솔 프로그래밍은 일반인이 보기에는 혹은 개발 초심자가 보기에 가장 재미없고 따분한 프로그래밍처럼 보일 수 있습니다.

눈이 즐거운 GUI 환경이 없기 때문일 것 입니다.


하지만 콘솔 프로그래밍을 제대로 다룰 수 있어야, 멋진 GUI도 그리고 재미있는 게임도 만들 수 있습니다.



이번 클래스를 통해 개발자를 꿈꾸는 많은 분들이 실제 개발자가 될 수 있도록 모든 노하우를 전수하도록 하겠습니다.
프로그래밍 언어 · 개발자 라라

10년 차 개발자의 [게임 개발/앱 개발/프로그래밍]을 위한 C/C++ 입문

선물하기
바로 수강 가능

콘텐츠 이용권
입문자 대상
할인 마감까지

00:55:56후 종료