분류 전체보기 썸네일형 리스트형 visual studio 2017 SFML 적용하기 https://www.youtube.com/watch?v=axIgxBQVBg0 SFML을 적용하는데 생각보다 시간이 걸렸는데 위의 유투브 영상을 보고 따라했더니 제대로 동작했다. 1. SFML 다운받기 https://www.sfml-dev.org/download/sfml/2.5.1/ 여러 글들을 찾아보니 이유는 모르겠으나 2017버전은 C++ 14 (2015) 32bit 를 받아야 호환이 된다는 글이 많아서 2015를 받았다. 2. 프로젝트 폴더에 SFML 폴더들 옮기기 SFML 폴더에서 우리가 사용할 폴더는 bin, lib, include 이다. 생성한 프로젝트의 폴더에 SFML 폴더를 새로 만들어주고 다운 받은 bin, lib, include를 복사해서 넣어준다. 3. 프로젝트 속성 창에서 구성을 모.. C++ :: Snake Game 만들기 https://www.youtube.com/watch?v=E_-lMZDi7Uw 위의 영상을 보고 만들었습니다. Player만 클래스화 했는데, GameManager class를 만들어 게임 전체를 관리했다면 더 깔끔한 코드가 나왔을 것 같습니다. Player만 클래스화한 결과 이차원 배열을 return 하는 데에 헷갈렸던 점을 제대로 알게된 것 같습니다. * 이차원 배열 return 한 코드 자료형 (*함수명() )[width길이] { }int (*GetTailArray())[2] { return m_Tailarray; } #include #include #include // 벽을 포함한 맵 크기 #define MAX_WIDTH 12 #define MAX_HEIGHT.. 유니티 :: 충돌 지점 알아내기(2D) * 충돌이 전제되어 있으므로 한 쪽에는 Collider2D 컴포넌트가 있어야 하고, 다른 한 쪽에는 Collider2D 와 Rigidbody2D가 있어야 한다. 충돌하였을 때의 이벤트 함수 OnCollisionEnter2D(Collision2D col)에서 col.contacts. 를 통해 충돌지점을 알아낼 수 있다. col.contacts는 충돌한 지점을 가져온다. ex ) col.contacts.Length : 충돌한 지점의 길이를 출력 col.contacts[0].point : 충돌한 지점의 첫 번째 원소를 출력 유니티 :: 화면 부드럽게 움직이기 [ SmoothDamp() ] // SmoothFollow main Camera가 특정 타겟을 계속해서 비추도록 하고 싶다면 가장 간단한 방법은 목표에 main camera를 하위 오브젝트로 넣는 것이다. 또한 main Camera에 스크립트를 추가하여 그 스크립트에서 main camera의 position 값을 따라다니려는 목표의 position 값을 넣어주면 된다. 하지만 위와 같은 방법들은 정확하게 목표가 움직인 만큼만 카메라가 움직인다. 만약 물체가 이동한 뒤에 카메라가 따라가는 등의 동적이고 부드러운 움직임을 구현하고 싶다면 다른 방법을 이용해야 한다. * Vector3.SmoothDamp(Vector3 current, Vector3 target, ref Vector3 Velocity, float smoothTime, float maxSpeed, flo.. 유니티 :: 코루틴 ( Coroutine ) 스크립트에서 특정 코드를 읽는 동안에는 다른 코드는 실행하지 못한다. 이 말은 내가 A 함수를 읽고 있는 동시에 B 함수까지 읽어내려갈 순 없다는 것이다. A함수에서 코드를 읽어 내려가다가 특정 부분에서 '2초간 멈추어라' 라는 명령이 있다면 가만히 2초를 기다릴 뿐이지, B함수에 들렀다가 2초 후에 다시 A함수로 돌아오는 등의 일은 일어나지 않는다. 만약 위의 예시에서 2초를 기다리는 동안 다른 코드들을 읽고 다시 돌아와 기다린 시점부터 다시 코드를 실행시키고 싶다면 코루틴을 이용하면 된다. * Coroutine 코루틴은 IEnumerator을 반환형으로 갖는다. ex ) IEnumerator test() { } 위의 코루틴을 실행시키려면 단순히 test() 로 실행시키는 것이 아니라, StartCor.. 네트워크 :: 사이더 ( CIDR ) 와 VLSM 참고 ) https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%EB%8D%94_(%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9) Class A, B, C 등을 구분짓는 것이 첫 Octet이 0, 10, 110 등으로 시작하는 지를 보고 판단하였다. 하지만 CIDR는 Class에 한정되지 않고, 즉 첫 Octet이 무엇으로 시작하는 지와 상관 없이 접두어 ( prefix ) 를 이용하여 주소를 지정한다. 0.0.0.0 의 경우 첫 Octet이 00000000으로 A Class이고 따라서 Net ID는 첫 Octet이 된다. 즉 0.0.0.0/8 이 되어야 한다. 하지만 CIDR의 경우 클래스와 상관 없이, 0.0.0.0/24 혹은 0.0.0.0/16 등.. 네트워크 :: Subnet Mask, Subnetting * 서브 네트워크 : 네트워크에 종속된 하위 네트워크들 네트워크를 서브 네트워크들로 쪼개는 행위를 서브네팅 ( Subnetting ) 이라 한다. * SubNetting의 필요성 - Class C는 3번째 Octet까지 Net ID로 사용하기 때문에 자유롭게 사용할 수 있는 Host ID는 마지막 Octet 한 개 ( 8 bit ) , 즉 256개이다. 256개의 Host ID들이 같은 대역으로 묶여 있지만 만약 이보다 더 적은 수로 쪼개고 싶은 경우가 있다. 사 내의 부서가 16명, 7명 등 소수의 단위이고 이들에게만 메일을 보내고 싶을 때, 256명의 Host ID가 같은 대역이므로 256명에게 메일을 보내게 되는 문제가 생길 수 있다. 이를 해결해줄 수 있는 것이 서브 네트워크 ( Sub Netwo.. 네트워크 1일차 숙제 [ Manchester encoding ] * 맨체스터 코드 멘체스터 코드란 정보통신에서 디지털 인코딩의 한 형태이다. 특히 이는 어떠한 신호를 물리 계층에서 전송할 때 쓰이는 방법이다. 하나의 비트가 전송될 때 각 비트타임의 중앙에서 전압의 전이가 발생하는 것이 특징이다. 맨체스터 코드는 '1' 과 '0'의 2진값 각각을 양의 전압값과 부의 전압값으로 변환하는 NRZ 방식으로 만들어진 신호를 클록 신호와 XOR하여 만들어진다. 결과적으로 '0'은 High-Low로 표현되고 '1'은 Low-High로 표현되는 신호가 만들어진다. 장점 ) 수신자는 전달된 신호만을 보고 전송속도를 알아낼 수 있으며, 이는 송신자와 수신자의 동기화를 쉽게 하고 오류를 줄일 수 있게 한다. 단점 ) NRZ 방식으로 만들어진 신호와 똑같은 정보를 보내기 위해 두 배의 대.. 이전 1 ··· 9 10 11 12 13 14 15 ··· 19 다음