+1개의
이미지
3만원 쿠폰
3만원 쿠폰
데이터/개발 · 개발자 라라

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

선물하기
바로 수강 가능
콘텐츠 이용권
입문자 대상
주소를 몰라도 간편하게

Class details

Running time
6 chapter, 44 lessons
Start date
바로 수강 가능
Subtitles
Yes

실제 수강생들의
생생한 반응

void rotate() { //회전 구연 int cpyBlock[USERBLOCK_SIZE][USERBLOCK_SIZE] = { 0, }; for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { cpyBlock[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] = cpyBlock[i][k]; } } } bool canLotate() { if (blockX + USERBLOCK_SIZE > GRID_WIDTH || blockY + USERBLOCK_SIZE > GRID_HEIGHT) return false; for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { if (userBlock[i][k] == 1 && gameGridData[blockY + k][blockX + USERBLOCK_SIZE - i - 1] == 1) return false; } } return true; } 처음에 배열 숫자 하나하나 다 쳐서 만들었다가, 고민 끝에 반복문으로 회전 할 수 있는 방법을 깨닫고 엄청 기분 좋았습니다 ㅋㅋ 회전 할 때 이미 블럭이 있는 곳에도 들어가길래 회전하기 전에 블록이 있는지 비교 할 수 있도록 만들어 보았습니다.
이종권's Comment
회전 함수 구현했는데 스왑처럼 포인터 써야하는지 헷갈리네요... 아래처럼 하면 정상작동 되기는 한데 원래 포인터를 사용해야 하는 건가요? void rotate() { int temp_userBlock[USERBLOCK_SIZE][USERBLOCK_SIZE]; for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { temp_userBlock[k][USERBLOCK_SIZE - 1 - i] = userBlock[i][k]; } } for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { userBlock[i][k] = temp_userBlock[i][k]; } } }
조민성's Comment
void rotate() { int tempBlock[USERBLOCK_SIZE][USERBLOCK_SIZE] = { 0, }; for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { tempBlock[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] = tempBlock[i][k]; } } } 그리고 회전이 너무 빨리 되므로 next함수에 if (keyboardInput == 'w' && controlCheck > 0.1) { rotate(); controlCheck = 0.0f; } 를 넣어주면 적당한 속도로 돌아갑니다 그리고 이 상태라면 블록을 x축의 맨 끝 부분에 놓고 돌리면 배열 밖으로 나가므로 bool canRotate() { for (int i = 0; i < USERBLOCK_SIZE; i++) { for (int k = 0; k < USERBLOCK_SIZE; k++) { if (userBlock[i][k] == 1 && USERBLOCK_SIZE - i - 1 + blockX <= 0) return false; if (userBlock[i][k] == 1 && USERBLOCK_SIZE - i - 1 + blockX >= GRID_WIDTH) return false; } } return true; } 이런 함수를 만들고 next함수의 rotate부분을 if (keyboardInput == 'w' && canRotate() && controlCheck > 0.1) { rotate(); controlCheck = 0.0f; } 로 바꿔줍니다
허준서's Comment
'ㅅ') 오오 설치법이군요
채호영(mario chae)'s Comment
#include<cstdio> int sum(int a, int b) { return a + b; } int square(int c) { return c * c; } int main() { int lala = -512; printf("라라형이 내준 숙제 \n %d 입니다.\n",lala); int homework = sum(100,200); printf("sum 함수 값 = %d 입니다.\n",homework); int input; printf("제곱할 수를 입력하세요 :\n"); scanf_s("%d", &input); input = square(input); printf("제곱 수 = %d 입니다.\n", input); return 0; } 이렇게 했는데 잘했어 형아?
백형빈's Comment
라라행님 믿고 빡공하겠슴당!
권기태's Comment
계산기 만들때 왜 연산자 입력받을떄 getChar 이 작동을 안할까요.. 코드 : #include <cstdio> //실수 입력 float getFloat(); //연산자 입력 char getChar(); int main() { float value1; float value2; char oper; float result = 0; value1 = getFloat(); value2 = getFloat(); oper = getchar(); switch (oper) { (중략) default: printf("올바르지 않은 연산자 입니다."); break; } } float getFloat() { float input; printf("실수를 입력해주세요 : "); scanf_s("%f", &input); return input; } char getChar() { char input; printf("연산자를 입력해주세요 : "); scanf_s("%c", &input); return input; } 빌드했을때 실수 두개까지는 입력을 받을수있는데 두번째꺼를 받자마자 올바르지않은 연산자라는말이 출력되면서 끝납니다.
민재's Comment
잘부탁드립니다!! 꼭 완강도 하고 좋은 프로그래머가 될 수 있기를...ㅠㅠㅠ
.'s Comment

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

답변 완료율 100%
평균 12시간 이내 응답
민재
계산기 만들때 왜 연산자 입력받을떄 getChar 이 작동을 안할까요.. 코드 : #include <cstdio> //실수 입력 float getFloat(); //연산자 입력 char getChar(); int main() { float value1; float value2; char oper; float result = 0; value1 = getFloat(); value2 = getFloat(); oper = getchar(); switch (oper) { (중략) default: printf("올바르지 않은 연산자 입니다."); break; } } float getFloat() { float input; printf("실수를 입력해주세요 : "); scanf_s("%f", &input); return input; } char getChar() { char input; printf("연산자를 입력해주세요 : "); scanf_s("%c", &input); return input; } 빌드했을때 실수 두개까지는 입력을 받을수있는데 두번째꺼를 받자마자 올바르지않은 연산자라는말이 출력되면서 끝납니다.
개발자 라라님의 피드백
scanf_s 윗줄에 fseek(stdin, 0, SEEK_END); 구문을 추가하시면 해결될 것 같습니다. 1강에서 말씀드릴 때 이 구문은 Mac 에서만 사용한다는 말씀을 드린적이 있으나 Windows 시스템에서도 fseek 구문을 추가해야겠습니다. 이 scanf_s는 본래 콘솔환경 문자열 버퍼 메모리 공격 안전성을 위해 나온 함수입니다 다만 제가 확인한바로는 scanf_s 가 윈도우즈에서 입력버퍼를 비워주는 기능을 하는것으로 확인했었으나 아닌 경우가 있는 것 같네요. (입력버퍼란 콘솔로부터 사용자 입력을 받을 때 임시적으로 값을 저장해두는 메모리 공간입니다. 이 공간이 비워져야만 정상적인 값을 받아올 수 있습니다) 지금부터의 모든 강의는 #define _CRT_SECURE_NO_WARNINGS를 소스코드 맨 첫줄에 추가하시고 scanf 와 fseek 을 사용해주셔서 따라와주시면 될 것 같습니다. 앞선 강의들의 내용은 수정이 조금 필요할 것 같습니다. 2-3 부터는 모든 예제가 문자열 관련 조작을 해야 하기 때문에 scanf만을 사용해서 진행됩니다. 감사합니다.
민재
점점 난이도가 높아지네요..
개발자 라라님의 피드백
화이팅입니다. 한번에 모두 이해하겠다는 마음보다 조금 어렵다고 생각되시면 기존 연습문제들을 스스로의 힘으로 다시 해결한 뒤 와보세요!
민재
먼저 배열로 만들어진 변수의 배열크기 이상에 접근하게되거나 음수값에 접근하면 -858993460라는 값이 나옵니다. 처음에 변수에 0을 대입해주지않으면 결과가 이렇게 나오는것같습니다.
개발자 라라님의 피드백
벌써 이곳까지 오셨군요. 화이팅입니다. 배열크기 이상에 접근하게 되면 배열에 할당된 램 메모리에서 벗어난 올바르지 않은 다른 메모리에 접근하게 됩니다. 이는 포인터 시간에 한번 더 다루게 되니 이 의문을 꼭 잊지마시고 포인터까지 가져가시길 바랍니다.
백형빈
그리고 함수는 대입한다는 느낌으로 하면 될까?? int main() { printf("input1 :"); int input1=getinput(); 을 int main() { printf("input1 :"); int input1=int input; fseek(stdin, 0, SEEK_END); scanf_s("%d", &input); 이런식으로??
개발자 라라님의 피드백
본문의 input1 = int input 이 부분이 잘못된 것 같아요... 함수는 호출하고 나서 할당연산자에 의해 변수로 값이 들어가거나. 호출 이후 리턴값이 무시되어도 상관 없습니다(필요하지 않다면 말이죠)
조민성
랜덤함수 출력할때 숫자가 확확 바뀌진 않는것 같아요. ㅇㅅㅇ;; 14425 -> 14433 -> 14427 ...
개발자 라라님의 피드백
맞습니다. 이는 시간을 기준으로 시드를 정했기 때문에 그렇습니다. 시간값에 적당한 연산을 넣어주게되면 확확 바뀌게 만들 수 있습니다!
라비에
램입니다 왜냐하면 답을 봐버렸기 때문입니다 ㅠ input 출력하는거 보고는 게임아이템 수량되는게 생각났어요.. ㅋㅋ 근데 쓸데없는 질문이긴 한데 왜 윈도우에서는 scanf를 막아둔건가요? _s 는 무슨뜻인가욤??
개발자 라라님의 피드백
공격에 취약하다. 이정도로 알아두시면 되겠으나 2강부터는 scanf_s 이외의 scanf 만 사용하게 됩니다. 다른 플랫폼과의 호환을 위해서 입니다
송영찬
앞 분이 말씀해주셨던 거나 강의에 나와있는 예제와 똑같이 쓰더라도 세 번째에 연산자 받는 것이 제 마음대로 넘어가 버립니다. 순서를 바꿔 보았더니 연산자를 다른 변수보다 먼저 받으면 문제되지는 않네요. 무엇이 문제일까요?
개발자 라라님의 피드백
송영찬님 반갑습니다. fseek(stdin, 0, SEEK_END); 이 구문을 scanf( ... ) 함수 호출 이전에 넣어주세요!
전근우
컴공과 재학중인 4학년입니다. 졸업을 앞에 두고나니 막상 "코딩을 잘 하고 있었나...?" 싶어 도전하게 되었습니다. 평소 유튜브를 보던 팬이기도 하면서 나도 저런 개발자가 되고싶다....라는 생각을 이제는 정말로 개발자가 되어보고 싶어 부족한 시간 안에서라도 강의를 수강하고 있습니다. 좋은 강의 감사합니다 :)
개발자 라라님의 피드백
근우님 반갑습니다. 본 강의가 완전한 입문 강의이기 때문에 학부생 4학년의 입장에서 만족스러운 강의가 되실지 모르겠습니다만 화이팅입니다! 감사합니다
김대욱
로그인 하면 development setting 을 설정하라고 나오는데 general 과 visual C++ 중 C++로 하면 되겠죠???
개발자 라라님의 피드백
넵 사실 로그인 이후의 셋팅은 단축키나 사용자 환경에 대한 설정이므로 아무거나 하셔도 사실 상관이 없습니다. 다만 Visual C++이 좀 더 낫겠습니다.
의림
입력 받을 때 함수를 쓰지 않아서 길어졌네요 ㅜ #include <cstdio> int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; } int pow(int a, int b) { int c = 1; for(int i=0;i<b;i++) { c = c * a; } return c;//결국 이 부분은 라라형꺼 보고 했습니다. 저에게 조금 실망했네요. 다음에는 절대 풀 때까지 다음 강의 안봐야지 } int main() { int input1; int input2; int operation; int answer; printf("1번 숫자를 입력하세요: "); fseek(stdin, 0, SEEK_END); scanf_s("%d", &input1); printf("2번 숫자를 입력하세요: "); fseek(stdin, 0, SEEK_END); scanf_s("%d", &input2); printf("명령숫자를 입력하세요: "); fseek(stdin, 0, SEEK_END); scanf_s("%d", &operation); printf("\n\n"); if (operation == 0) { int answer = add(input1, input2); printf("%d입니다", answer); } else if (operation == 1) { int answer = sub(input1, input2); printf("%d입니다", answer); } else if (operation == 2) { int answer = pow(input1, input2); printf("%d입니다", answer); } else { printf("오류입니다."); } return 0; }
개발자 라라님의 피드백
의림님 잘 하셨어요! 일단 처음에는 동작만 제대로 된다면 그것이 대박입니다. 코드가 깔끔해지고 이런것은 차차 나아질 문제가 되겠습니다
523개의 피드백 더보기

입문자분들을 위한
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++ 입문

선물하기
바로 수강 가능
콘텐츠 이용권
입문자 대상
주소를 몰라도 간편하게