반응형

인프런 225

Part 1-4-5. 객체지향 : new, 다형성 (virtual, override, sealed), 문자열

new class Player { public int hp; public int attack; public void Move() { Console.Write("Player Move"); } } class Knight : Player { public new void Move() { Console.Write("Kight Move"); } } Knight knight = new Knight(); knight.Move(); // 출력 // Kight Move 부모 클래스로부터 상속 받은 함수와 이름은 동일하지만 이와 상관없는 완전히 다른 새로운 함수로서 재정의하고 싶다면 new키워드를 사용하면 된다. 상속 받은 함수와 동일한 이름이긴 하지만 새로운 함수를 만드는 것을 의미한다. Player의 Move()와 Kn..

★ Part 1-4-4. 객체지향 : 클래스 형변환 (is, as)

클래스 형식 변환 [부모 자식간 형식 변환] Knight knight = new Knight(); knight 스택 메모리는 new Knight()로 생성한 힙 메모리 객체의 주소를 담는다. // 부모 👉 Plyaer // 자식 👉 Knight, Maze class Player { public int hp; public int attack; } class Knight : Player { public void Move() { Console.Write("Kight Move"); } public void Attack() { Console.Write("Kight Attack"); } } class Mage : Player { public void Move() { Console.Write("Maze Move");..

Part 1-4-3. 객체지향 : 상속성, 은닉성

상속성 [코드의 재사용성] 부모 클래스 👉 Player 직업에 상관없이 플레이어라면 모두 가지고 잇는 공통된 속성과 기능을 부모클래스로 묶는다. 자식 클래스 👉 Mage, Aracher, Knight 이 클래스들은 Player를 상속받으므로 플레이어라면 모두 갖고 있는 공통 멤버들을 다시 필드에 명시해줄 필요가 없다. 이런 부분들은 Player 상속으로 해결하고 법사, 궁수, 전사들만의!!! 고유의 속성과 기능을 추가해주면 되는 식이다. 자식 클래스에서 멤버 필드에 직접 명시해주지 않더라도 상속만 하면 자동으로 부모의 멤버들도 가질 수 있다. [부모 생성자가 먼저 호출 된다.] 당연히 생성자도 함수이므로 부모 생성자를 자식 클래스에서 상속을 받고, 언제나 부모 생성자를 먼저 호출한다. 개발자가 명시하지 ..

Part 1-4-2. 객체지향 : 생성자, static

생성자 객체를 new로 생성함과 동시에 멤버 값들을 원하는대로 초기화하고 싶을 때 생성자를 사용한다. 클래스 이름과 같아야 함 접근 지정자 ⭕, 리턴타입, 매개변수 ❌ public Knight() { hp = 100; attack = 10; } public Knight(int hp) : this() { this.hp = hp; } 생성자 이름 옆에 : this() 👉 ‘디폴트 생성자 호출해줘’ 라는 의미 따라서 this.hp = hp를 실행하기 전에 Knight()를 호출하여 hp = 100와 attack = 10 를 먼저 실행하게 된다. 따라서 자연스럽게 Knight(int hp) 생성자에서 hp 값만 설정헀어도 attack은 10 으로 설정이 미리 된다. static [static이 아닌 일반 멤버들..

Part 1-4-1. 객체지향 : 객체 지향, 복사와 참조, 스택과 힙

객체 지향 [절차 지향 👉 전부 함수로 코드를 짠다.] 유지 보수가 힘들다. 프로그램 규모가 커지면 복잡해진다. 함수 호출 순서에 종속적이기 때문에 유지 보수가 힘들다. 호출 순서 타고타고 올라가 보며 코드를 읽어보아야 해서 불편하다. 함수를 계속 새로 만들고 만들고 해야해서 복잡하다. 같은 Fight 이라도 플레이어 vs 플레이어, 보스 vs 플레이어 등등 많은 버전이 있어야 하므로 오버로딩을 많이 해야 해서 복잡해진다. [객체 지향 👉 모든 것을 객체 위주로 생각한다.] 속성(멤버 변수)와 기능(멤버 함수)로 나뉜다. ‘플레이어’의 이름, 공격력, HP, 직업 같은 속성들과 Fight 같은 기능을 추상화 하여 Player라는 이름의 클래스로 묶는다. 이 클래스(붕어빵틀, 설계도)를 가지고 세상에 존재..

Part 1-3-1. TextRPG : 디버깅 기초, 직업, 플레이어/몬스터 생성, 전투

디버깅 프로그램 실행 및 디버깅시 중단점이 찍힌 코드 ‘줄’에서 멈추게 해준다. 멈춘 줄로부터 코드 한줄 한줄씩 실행해보는게 가능하다. 개발 단계에선 괜찮지만 현재 서비스 되고 있는 프로그램에선 브레이크 포인트를 사용하는 디버깅은 할 수 없다. → 자동차 출시 및 출고 후에는 실시간으로 자동차 내부를 살펴볼 수 없는 것과 비슷. 개발 단계는 디버그 모드로 실행하고 중단점은 이때만 사용 가능하다. 프로그램을 출시할 때는 Release 모드로 빌드를 해서 실행하게 된다. 이미 출시한 프로그램은 중단점을 사용하여 한 줄 한 줄 실행하면서 실시간으로 살펴볼 수는 없다. 중단점을 한번 더 클릭하여 없앨 수도 있지만 중단점 해제를 직접 여기서 선택하면 중단점이 노란색으로 바뀐다. 중단점으로서 역할을 더 이상 하지 ..

★ Part 1-2-2. 코드의 흐름 제어 : 함수, ref, out

함수 함수는 다양한 언어에서 크게 함수, 메서드, 프로시저로 불린다. 하지만 게임 개발자는 주로 함수라고 부른다. 함수는 class 내부에 생성해야 하며, 함수의 형식은 다음과 같다. // 함수(=Method,메서드) 한정자 반환형식 이름(매개변수목록) static void HelloWorld() { Console.Write.Line("Hello World"); } static void Main(string[] args) { HelloWorld(); } static은 나중에 class를 설명할 떄 설명할 예정이며, 이름은 함수의 이름을 작성하는 것과 같다. 매개 변수로 넘겨줄 정보가 없으면 아무것도 작성하지 않고, 또 반환 형식으로 함수를 사용 한 이후에 아무런 값을 돌려주지 않는다면 void 키워드를 ..

[주간 인프런 #54] 요즘 주니어 개발자의 고민은 뭘까?

인프콘 2022에선 인프랩 개발자와 함께하는 데브챗 부스가 운영되었는데요. 한정된 시간과 공간 때문에 현장에서 못다 한 이야기가 많아 아쉬웠던 인프랩 개발자들이 다시 한번 모였어요! 인프메이션 #54에서는 데브챗에서 많이 나왔던 고민을 중심으로, 인프랩 개발자들의 의견을 들려드리려 합니다. 더 읽어보기 & 출처 : https://www.inflearn.com/pages/infmation-54-20221004?utm_source=mailchimp_email&utm_medium=cps&utm_campaign=inflearn_%ED%8A%B8%EB%9E%98%ED%94%BD_%ED%97%AC%EB%A1%9C%EC%9D%B8%ED%94%84%EB%9F%B0_infmation-54-20221004&utm_cont..

[주간 인프런 #41] 개발자의 공유 문화 이모저모 (2) 회고 문화

기록도 점검도 셀프! 개발자는 왜 회고를 할까요? #오픈소스 #기술블로그 #회고문화 바쁘게 일하고 공부하다 보면 시간이 훌쩍 지나있기 마련이죠. 그렇지만 모든 일을 다 기억할 수는 없는 법, 문득 ‘작년엔 뭘 했지?’ ‘이번 프로젝트에서 내가 어떤 일을 맡았더라?’ 고개를 갸웃하게 되는 순간들이 있죠. 더 나은 개발자로 성장하고 싶은 분들, 더 좋은 제품(Product)을 만들고 싶은 조직이라면 그동안 겪은 시행착오를 어떻게 기록할지 고민해봤을 텐데요. 이번 주 #41에서는 지난 호, 오픈소스 & 기술 블로그 편에 이어 개발 업계의 회고 문화에 대해 이야기합니다. 덧붙여 인프랩 개발 파트의 재미있는 신규 서비스 런칭 회고도 살짝 공개할게요. 더 나은 내일의 나를 위해 고군분투하는 분들께 개발 업계의 회고..

[주간 인프런 #37] 환상을 현실로, 게임 개발자의 ‘갓겜’의 꿈!

게임, 좋아하세요? 나만의 캐릭터를 만들고 환상의 세계 안을 돌아다니며 우루루 쏟아지는 몬스터를 해치우는 모험 속 주인공이 되는 경험, 다들 한번쯤 있으실 텐데요. 그만큼 게임 개발은 많은 분들의 로망(!)을 자극하는 분야가 아닐까 싶어요. 11월의 어느 날, 인프런은 강남의 한 공유오피스를 찾았습니다. 인디게임 개발 스타트업을 운영하고 있는 게임 개발자, Rookiss님을 만나뵙기 위해서죠. 게임 개발 업계 채용 경쟁이 한창인 요즈음인데요. 게임 개발자로 취업하기 위해서는 무엇을 준비해야 하는지, 회사를 나와 새로운 도전을 준비하고 있는 Rookiss님의 꿈과 비전은 무엇인지를 들어보았습니다. 더 읽어보기 & 출처 : https://www.inflearn.com/pages/weekly-inflearn-..

[주간 인프런 #24] 꽤 쓸만한 코딩테스트 가이드

어느덧 상반기 공채 시즌이 돌아왔습니다! 새해도 끝나고, 3월이 코 앞으로 다가오면서 많은 구직자들이 취업 문을 두드리고 있어요. 공채를 폐지하거나 축소하고 수시 채용으로 전환한다는 기업이 늘고 있지만, 공채에 대한 관심은 여전히 뜨거운 감자로 남아있죠. (앗뜨뜨!) 한편 미래의 개발자를 꿈꾸는 분들께는 중요한 첫 관문이 하나 있어요. 바로 최근 몇 년 사이 개발자 채용의 필수 코스로 자리잡은 코딩테스트입니다. 👩‍💻 서류 전형에 통과하고 나면 누군가는 발등에 불 떨어진 심경으로, 누군가는 두근두근한 마음을 안고 코딩 테스트를 준비하기 마련이죠. 꽃피는 봄🌼, 바야흐로 ‘코테’의 계절! 스물네 번째 에서는 코딩 테스트가 무엇인지 알아보고, 실제로 코딩테스트를 경험해봤던 인프런 팀원들의 소소하고 진솔한 경..

[주간 인프런 #20] 게임 개발을 공부하는 강의하이커를 위한 안내서!

2020년의 마지막 주간 인프런! #20 에서는 직접 온갖 게임 강의를 들어본 인프런 팀원의 학습기(!)를 소개합니다. 자타공인 게임 덕후였던 고트가 그 주인공인데요. 게임 개발을 배우기 위해 지난 몇 년간 고트가 직접 듣고 공부해본 게임 강의들을 소개하고, 어떤 기준으로 강의를 공부하고 평가했는지를 살짝 공개해 봅니다. 희노애락이 듬뿍 담긴, 솔직한 게임개발 강의 리뷰! 게임 개발에 도전하는 분들은 물론, 어떻게 강의를 고르면 좋을지 막연한 분들에게도 하나의 길잡이가 될 수 있기를 바라요. 🎮 *이 리뷰는 2020년 4월에 쓰여, #20으로 새로 편집해 공개하는 리뷰입니다. 더 읽어보기 & 출처 : https://www.inflearn.com/pages/weekly-inflearn-20?utm_sour..

[주간 인프런 #15] 서류 합격을 부르는 입사 지원 팁!

#취업 #채용 #공채 #자소서 #이력서 #포폴 선선한 가을, 어느덧 하반기 공채 시즌이 돌아왔습니다! 코로나19로 인해 채용 시장은 지난 해보다 위축됐는데도, 막 첫걸음을 떼려는 사회초년생 분들의 열기는 변함없이 후끈후끈하죠. 🔥 저번 에서는 비전공자 출신으로 서버 개발자가 된 지식공유자 김병욱 님을 인터뷰했어요. 신입 개발자가 포트폴리오를 통해 어필할 수 있는 방법에 대한 병욱님의 생각을 들어보았는데요. #15에서는 지난 호에 이어 취업을 준비하고 계신 분들에게 도움이 될 만한 소소한 팁을 소개하려 합니다. 어려운 시기지만, 각자 원하는 성과를 거둘 수 있도록 인프런이 응원할게요. (화이팅!) 더 읽어보기 & 출처 : https://www.inflearn.com/pages/weekly-inflearn-..

[주간 인프런 #14] 신입 개발자 포폴로 취업하기

‘꼭 만들어야 할까?’ 🤔 시간이 많이 들 것 같아 망설여지는 포트폴리오 제작. 쉽고 멋지게 만든 포트폴리오로 높은 서류 합격률을 자랑한 1년차 개발자 병욱님께 물어봤습니다. 이번 인터뷰는 원격 화상 인터뷰로 진행해 보았는데요. 직접 만나뵙진 못했지만 화면으로도 충분히 병욱님의 마음이 전해졌어요. 신입 개발자 포트폴리오, 어떻게 만들면 좋을까요? 더 읽어보기 & 출처 : https://www.inflearn.com/pages/weekly-inflearn-14?utm_source=pinpoint&utm_medium=email&utm_campaign=weekly-inflearn&utm_content=14 신입 개발자 포폴로 취업하기 - 인프런 | 스토리 [주간 인프런 #14]인프런이 만난 사람 - 김병욱 ‘..

Part 1-2-1. 코드의 흐름 제어 : if와 else, switch, 상수와 열거형, while, for, break, continue

if와 else int hp = 100; bool isDead = (hp 0) { Console.WriteLive("Hello World"); count--; } for (int i = 0; i < 5; i++) { } while 문에서 사용했던 count를 i로 변경해서 0의 값을 주면 그것이 초기식이 되고, 5번 반복을 지정해야 하는 count--는 i가 0에서 5까지 반복하라는 i < 5로 대체될 수 있다. 마지막으로 값을 감소시키는 것이 아닌 증가시키는 연산자인 후위 연산자를 통해 for문을 while문 처럼 사용할 수 있다. for 문을 처음 사용할 때에는 많이 헷갈릴 수 있으므로, 자주 사용해서 익히는 것이 매우 중요하다. break, continue for 문을 사용하다보면 우리는 특정 상황..

Part 1-1-2. 데이터 : 형변환, 스트링 포맷, 산술 연산, 비교 연산, 논리 연산

캐스팅(=형변환) [바구니 크기가 다른 경우] int a = 1000; long l = a; // 가능 8 byte 바구니인 long 자료형에서 4 byte 바구니인 int 자료형을 넣는 것은 데이터가 손실 될 일이 없으므로 데이터를 옮기는 것이 가능하다. 즉. 큰 바구니에서 작은 바구니로 물건을 넣는 것은 문제가 없다. int a = 1000; short s1 = a // ❌ 에러 short s2 = (short)a; // 넣을래! 4 byte 바구니인 int 자료형 a에서 2 byte 바구니인 s1에 데이터를 담으려고 하니 에러가 발생한다. 왜냐하면 작은 바구니에 큰 물건을 넣으려고 하기 때문이다. 그래서 아래와 같이 강제적으로 형변환을 해주면 문제가 발생하지 않는다. 단, 데이터를 옮겨 담을 때 데..

Part 1-1-1. 데이터 : 데이터 형식, 변수, 정수 형식, 2진수, 10진수, 16진수, 정수 범위

데이터 형식 [주석] 주석 : //와 /* ~ */ 형식으로 사용한다. 프로그램 자체에는 어떠한 영향도 주지 않고 메모를 남기는 것 그렇다면 우리는 주석을 왜? 사용해야 할까? > 이는 메모를 남기거나, 다른 프로그래머와 소통, 혹은 먼 미래에 내가 다시금 볼 때 기억하기 위해 등 주석을 사용한다. [데이터의 대표적인 형태] int, float, string, bool이 대표적이다. 각각의 데이터들은 정수형(int = -1, 0, 1, 2, 3, 4 등), 실수형(float = 3.14), 문자형(string = "Rookiss"), 불리언(bool = true/false(참/거짓)) 으로 나타낸다. 예를 들어 체력, 마력, 스탯정보, 퀘스트 정보, 경험치, 자동 사냥 여부 등 여러 게임 요소들의 데이터..

6. 회전에 대한 수학 2 – 사원수

회전에 대한 수학 2 – 사원수 🐱‍💻 이번 영상에서는 사원수에 대해 이야기하겠습니다. 앞서 3차원 회전을 표현하는 데 있어서 축-각 방식과 오일러 방식 두 가지가 있다고 말씀드렸습니다. 각각은 장단점이 있다고 설명했습니다. 축-각 방식은 행렬로 변환하기 어려워서 렌더링 파이프라인의 중간에 있는 파이프라인 흐름이 끊기게 된다고 했습니다. 오일러 각 방식은 축에 대해 부드럽게 움직이는 회전을 계산하기가 어렵고 짐벌락 현상이 발생한다고 했습니다. 이 두 가지의 중간 포지션에서 문제점을 해결해줄 수 있는 솔루션이 있습니다. 그것이 바로 사원수입니다. 이번 영상에서는 사원수를 사용해 3차원 회전을 어떻게 안정적으로 구현하는지 그 구조와 원리에 대해 설명하겠습니다. 사원수란? 네 개의 원소로 구성된 수 실수 : ..

5. 회전에 대한 수학 1 – 삼각함수와 회전변환

회전에 대한 수학 1 – 삼각함수와 회전변환 😚 이번 영상에서는 회전에 관해 이야기해 보겠습니다. 회전이란 무엇일까요? 앞선 영상에서 트랜스폼이란 크기, 회전, 이동이라는 3가지 변환을 순서대로 변환해주는 합성 변환이라고 했습니다. 이 중에서 회전은 별도로 주제를 빼서 설명해 드릴 만큼 독특한 변환입니다. 우리가 현실 세계에서 회전한다면 중심축을 설정하고 물체를 돌리면 됩니다. 하지만 앞선 영상에서도 게임에서는 가상세계의 변환이라는 것은 공간이 돌아간다는 개념이라고 했습니다. 따라서 가상세계에서 회전을 구현하기 위해서는 물체가 돌아가기보단 공간이 돌아가야 합니다. 그렇다면 이 무한대로 뻗어있는 벡터 공간을 어떤 방식으로 돌릴 수 있을까요? 지난 시간에서는 표준 기저 벡터에 관해 설명했습니다. 예를 들어 ..

반응형