<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Design</title>
    <link>https://designatedroom87.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 6 May 2026 23:35:29 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>DesignatedRoom</managingEditor>
    <item>
      <title>위험물 기능사 자격증 합격 수기</title>
      <link>https://designatedroom87.tistory.com/445</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;하는 업종에서 필요함에 따라 필요한 자격증이었는데,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능사 시험치곤 난이도가 있는 시험이었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부는 하루에 총 3시간씩 2달 동안하였고, 직장이 있는 지라 평일은 하루 3시간씩하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토요일은 쉬고 일요일에는 6시간이상 하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교재는 솔직히 모든 교재가 다 좋다고 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기출 문제가 정말 중요한 시험이라고 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필기는 책을 3회독을 하고, 기출문제를 풀면서 각 문제가 어느 단원의 몇 페이지에 나왔는지를 기록하므로써,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 빈도수가 높은 것과 보통 적은 것으로 분류하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이와 같이 하면, 책을 다시 처음부터 보면서 개념을 한 번 보고 이 개념에서 출제된 문제를 다시 보는 식으로 공부하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 공부 방법으로 필기는 90점이상 나왔다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필기에서는 각 1~6류 위험물의 지정수량과 각 위험물들의 화학반응식이 진짜 중요하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계산하는 문제에서는 '이상 기체 상태 방정식' 을 적용하는 문제가 출제되니 이는 반드시 암기해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실기를 준비를 수월하게 하고 싶다고 하면 반드시 위험물들의 화학반응식과 위험물에 대한 내용을 꼼꼼히 준비해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 별도로 정리를 따로해서 이를 시간 날때 마다 보는 것을 추천한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리를 한 내용은 나중에 시간을 내서 정리를 해보겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_1. 필기 실기 시험 결과.PNG&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T63Pg/btsnEpcR6xB/Slxh6B4Kk989RmIcMTzHO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T63Pg/btsnEpcR6xB/Slxh6B4Kk989RmIcMTzHO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T63Pg/btsnEpcR6xB/Slxh6B4Kk989RmIcMTzHO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT63Pg%2FbtsnEpcR6xB%2FSlxh6B4Kk989RmIcMTzHO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;743&quot; height=&quot;284&quot; data-filename=&quot;edited_1. 필기 실기 시험 결과.PNG&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;284&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실기는 20문제를 직접 펜으로 써야한다는 것이 특징이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시험의 난이도는 1회보다 쉬웠다고 생각하는데...... 솔직히 기능사 시험치고는 어려웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가채점에서는 76이었는데 ㅋㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 계산기는 들고가는 것을 추천한다. 그리고 반드시 펜은 검은색이어야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2 실기 결과.PNG&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;223&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J6UwT/btsnHSkpJeb/ngJZ8eKuPI2G3lBp7evpRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J6UwT/btsnHSkpJeb/ngJZ8eKuPI2G3lBp7evpRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J6UwT/btsnHSkpJeb/ngJZ8eKuPI2G3lBp7evpRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ6UwT%2FbtsnHSkpJeb%2FngJZ8eKuPI2G3lBp7evpRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;945&quot; height=&quot;223&quot; data-filename=&quot;2 실기 결과.PNG&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;223&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실기시험을 보고 나서 느낀 점 또한, 필기와 마찬가지인데 책은 모든 책들이 좋다. 읽기 편한 걸로 사도록 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기출은 반드시 풀어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기출은 12년도에서 부터 22년도 까지 풀고 해설을 정말 꼼꼼히 읽었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 문제를 눈으로만 풀지 말고 아는 것도 반드시 손으로 써야 한다. ( 귀찮다고 생각하지 말자. )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 이유는 '뇌와 손은 매우 밀접한 관계가 있기 때문이다.' 이는 '호문쿨루스' 그림을 보면 이해가 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기출에서 나오는 문제들이 모두 시험문제로 나오는 것은 아니지만, 합격을 하는데에는 문제 없다고 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 시험에서 10점을 실수 했음에도 불구하고 합격하는데에는 문제가 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 1번 문제에서 계산문제 혹은 어려운 문제가 배치되어 심적 압박을 느낄 수도 있다고 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런 경우에 그 문제는 일단 과감히 넘기고 마지막에 보도록 보자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로, 준비를 하면서 집중력도 흐트러지고 하기 싫다는 느낌을 많이 받을 것인데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느 강사의 말을 인용하자면 '할 거면 한 번에 끝내자' 라는 말로 자신을 다독이도록 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 경우에는 유튜브에서 어느 변호사 분이 말씀하시길 '이 것을 얻었을 때의 자신의 모습' 과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'이 것을 얻지 못했을 때의 자신의 모습'을 떠올려 보라는 말이 나 자신을 다독이는데 가장 효과적이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>자격증</category>
      <category>위험물 기능사 2023년 2회</category>
      <category>합격 후기</category>
      <author>DesignatedRoom</author>
      <guid isPermaLink="true">https://designatedroom87.tistory.com/445</guid>
      <comments>https://designatedroom87.tistory.com/445#entry445comment</comments>
      <pubDate>Sat, 15 Jul 2023 21:02:50 +0900</pubDate>
    </item>
    <item>
      <title>Singleton Pattern</title>
      <link>https://designatedroom87.tistory.com/444</link>
      <description>&lt;p&gt;개발 환경 : Visual Studio 2008&lt;/p&gt;
&lt;p&gt;싱글톤 패턴은 단일체 패턴이라고 한다.&lt;/p&gt;
&lt;p&gt;싱글톤 패턴은 상당히 많은 곳에서 쓰인다.&lt;/p&gt;
&lt;p&gt;대표적으로 Cocos2D 엔진에서 많이 사용된다.&lt;/p&gt;
&lt;p&gt;Cocos2D 엔진에서 사용되는 부분은 맨 아래에서 보도록 하자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우선 아래의 내용을 보도록 하자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;466&quot; data-origin-height=&quot;446&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n8Pug/btq3k6xcwD2/SlU5WSv3ZaKo6NoRoSdyQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n8Pug/btq3k6xcwD2/SlU5WSv3ZaKo6NoRoSdyQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n8Pug/btq3k6xcwD2/SlU5WSv3ZaKo6NoRoSdyQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn8Pug%2Fbtq3k6xcwD2%2FSlU5WSv3ZaKo6NoRoSdyQ1%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;466&quot; data-origin-height=&quot;446&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;프로그램 실행결과&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;105&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oZKr3/btq3iuMcx3H/hKv4DWMIPn6b7y4H2wrLy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oZKr3/btq3iuMcx3H/hKv4DWMIPn6b7y4H2wrLy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oZKr3/btq3iuMcx3H/hKv4DWMIPn6b7y4H2wrLy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoZKr3%2Fbtq3iuMcx3H%2FhKv4DWMIPn6b7y4H2wrLy0%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;105&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;위에서, 생성자를 private(protected)으로 두면 어떤 일이 나타날까?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;438&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4r33k/btq3mYZg9Ii/6RefaYKydoZ8KLYSGB12vK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4r33k/btq3mYZg9Ii/6RefaYKydoZ8KLYSGB12vK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4r33k/btq3mYZg9Ii/6RefaYKydoZ8KLYSGB12vK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4r33k%2Fbtq3mYZg9Ii%2F6RefaYKydoZ8KLYSGB12vK%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;438&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그러면 다음과 같은 에러 메시지가 나타난다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;804&quot; data-origin-height=&quot;71&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eov14C/btq3h6dFoNE/2bytyR2AWgAxr6OiLDPdf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eov14C/btq3h6dFoNE/2bytyR2AWgAxr6OiLDPdf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eov14C/btq3h6dFoNE/2bytyR2AWgAxr6OiLDPdf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feov14C%2Fbtq3h6dFoNE%2F2bytyR2AWgAxr6OiLDPdf1%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;804&quot; data-origin-height=&quot;71&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;즉, 위의 에러는 생성자가 private으로 선언되어 있어서, 외부에서 생성자가 호출되지 못해 객체화가 되지 못한다.&lt;/p&gt;
&lt;p&gt;이 상태에서 객체화를 하려면 어떻게 해야 할까?&lt;/p&gt;
&lt;p&gt;첫 번째로, 클래스 내에 다음과 같이 static 변수를 하나 정의 해야 한다.&lt;/p&gt;
&lt;p&gt;그리고 이 변수의 초기화는 생성자에서 하지 않는다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;313&quot; data-origin-height=&quot;45&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVxgKy/btq3klBj4Y4/CJdKjwKG04LuKX0I60nos0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVxgKy/btq3klBj4Y4/CJdKjwKG04LuKX0I60nos0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVxgKy/btq3klBj4Y4/CJdKjwKG04LuKX0I60nos0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVxgKy%2Fbtq3klBj4Y4%2FCJdKjwKG04LuKX0I60nos0%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;313&quot; data-origin-height=&quot;45&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그리고 아래의 GetInstance 함수는 static 변수를 동적 할당하고 리턴하는 함수이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;160&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IscbF/btq3miqrdT1/HBGnTUDuInSeDeVsQ3V6a1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IscbF/btq3miqrdT1/HBGnTUDuInSeDeVsQ3V6a1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IscbF/btq3miqrdT1/HBGnTUDuInSeDeVsQ3V6a1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIscbF%2Fbtq3miqrdT1%2FHBGnTUDuInSeDeVsQ3V6a1%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;160&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;아래는 위의 내용을 토대로 작성한 클래스이다.&lt;/p&gt;
&lt;p&gt;static 변수의 초기화는 생성자에서 하지 않는다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;381&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Tt8wX/btq3meaz9G9/Q9Mv30zILAMxNVTWMIUp41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Tt8wX/btq3meaz9G9/Q9Mv30zILAMxNVTWMIUp41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Tt8wX/btq3meaz9G9/Q9Mv30zILAMxNVTWMIUp41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTt8wX%2Fbtq3meaz9G9%2FQ9Mv30zILAMxNVTWMIUp41%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;381&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래는 메인함수이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;263&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QIvkE/btq3k6xeYZU/kP9OPJV3IUs1zjSdf8uVlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QIvkE/btq3k6xeYZU/kP9OPJV3IUs1zjSdf8uVlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QIvkE/btq3k6xeYZU/kP9OPJV3IUs1zjSdf8uVlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQIvkE%2Fbtq3k6xeYZU%2FkP9OPJV3IUs1zjSdf8uVlk%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;263&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;프로그램 실행결과&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;107&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rQcAx/btq3its2rtU/GtJG8xtdiaBCSB90MKLMFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rQcAx/btq3its2rtU/GtJG8xtdiaBCSB90MKLMFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rQcAx/btq3its2rtU/GtJG8xtdiaBCSB90MKLMFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrQcAx%2Fbtq3its2rtU%2FGtJG8xtdiaBCSB90MKLMFK%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;107&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;위의 메인 함수를 다음과 같이 작성한 이후에 그 결과를 보도록 하자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;228&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd3Meh/btq3iLmU9iZ/kqRuOAHzwJXqskafTDYcnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd3Meh/btq3iLmU9iZ/kqRuOAHzwJXqskafTDYcnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd3Meh/btq3iLmU9iZ/kqRuOAHzwJXqskafTDYcnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd3Meh%2Fbtq3iLmU9iZ%2FkqRuOAHzwJXqskafTDYcnk%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;228&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;프로그램 실행결과&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;아래의 결과를 보면, 생성자가 한 번만 호출되는 것을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;145&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/smFqW/btq3k8aK4rE/NBywpiCcEC7Kk4jGkNtmW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/smFqW/btq3k8aK4rE/NBywpiCcEC7Kk4jGkNtmW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/smFqW/btq3k8aK4rE/NBywpiCcEC7Kk4jGkNtmW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsmFqW%2Fbtq3k8aK4rE%2FNBywpiCcEC7Kk4jGkNtmW0%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;145&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;소스 내용&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1619167433482&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

class SingleTon
{
private:
	static SingleTon* m_pInstance;
protected:
	SingleTon(){ cout &amp;lt;&amp;lt; &quot;Constructor&quot; &amp;lt;&amp;lt; endl; }
public:
	void ShowName(void) { cout &amp;lt;&amp;lt; &quot;SingleTon&quot; &amp;lt;&amp;lt; endl; }
public:
	static SingleTon* GetInstance(void)
	{
		if ( m_pInstance == NULL )
			m_pInstance = new SingleTon();

		return m_pInstance;
	}
};

SingleTon* SingleTon::m_pInstance = NULL;	//	Initialize

int main(void)
{
	SingleTon::GetInstance()-&amp;gt;ShowName();
	SingleTon::GetInstance()-&amp;gt;ShowName();
	SingleTon::GetInstance()-&amp;gt;ShowName();

	if ( SingleTon::GetInstance() != NULL )
		SingleTon::GetInstance();

	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cocos2D엔진에서 싱글톤 패턴이 어떻게 사용되는지 보자.&lt;/p&gt;
&lt;p&gt;아래는 AppDelegate.cpp 파일의 부분이다.&lt;/p&gt;
&lt;p&gt;CCDirector클래스가 싱글톤 클래스임을 알 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;752&quot; data-origin-height=&quot;324&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2mIl6/btq3k7JJBs4/RSIFKxfd6QtDtU4gfV7KMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2mIl6/btq3k7JJBs4/RSIFKxfd6QtDtU4gfV7KMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2mIl6/btq3k7JJBs4/RSIFKxfd6QtDtU4gfV7KMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2mIl6%2Fbtq3k7JJBs4%2FRSIFKxfd6QtDtU4gfV7KMk%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;752&quot; data-origin-height=&quot;324&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;CCDirector클래스를 보자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;아래는 &lt;span style=&quot;color: #333333;&quot;&gt;CCDirector 클래스의 일부분이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;306&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uFRWA/btq3iK2AZdW/0ACWiknxk9Ip8DsanVdjW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uFRWA/btq3iK2AZdW/0ACWiknxk9Ip8DsanVdjW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uFRWA/btq3iK2AZdW/0ACWiknxk9Ip8DsanVdjW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuFRWA%2Fbtq3iK2AZdW%2F0ACWiknxk9Ip8DsanVdjW1%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;306&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Design Pattern In C++/Singleton Pattern</category>
      <author>DesignatedRoom</author>
      <guid isPermaLink="true">https://designatedroom87.tistory.com/444</guid>
      <comments>https://designatedroom87.tistory.com/444#entry444comment</comments>
      <pubDate>Fri, 23 Apr 2021 17:45:17 +0900</pubDate>
    </item>
    <item>
      <title>priority queue</title>
      <link>https://designatedroom87.tistory.com/443</link>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;481&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D9Any/btq2hZkAGCu/7D24jejNoN3YQlZDAGhkl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D9Any/btq2hZkAGCu/7D24jejNoN3YQlZDAGhkl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D9Any/btq2hZkAGCu/7D24jejNoN3YQlZDAGhkl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD9Any%2Fbtq2hZkAGCu%2F7D24jejNoN3YQlZDAGhkl0%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;481&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;프로그림 실행결과&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;88&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cty41d/btq2gRgwreR/xAUFtzcIDyU2O8VfKkyxQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cty41d/btq2gRgwreR/xAUFtzcIDyU2O8VfKkyxQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cty41d/btq2gRgwreR/xAUFtzcIDyU2O8VfKkyxQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcty41d%2Fbtq2gRgwreR%2FxAUFtzcIDyU2O8VfKkyxQk%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;88&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;소스 파일&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/wO9IG/btq2gn71Gsa/nkS03dwv9CO1PEb2GaoGC0/main.cpp?attach=1&amp;amp;knm=tfile.cpp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;main.cpp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>C++ STL/priority queue</category>
      <author>DesignatedRoom</author>
      <guid isPermaLink="true">https://designatedroom87.tistory.com/443</guid>
      <comments>https://designatedroom87.tistory.com/443#entry443comment</comments>
      <pubDate>Fri, 9 Apr 2021 19:05:25 +0900</pubDate>
    </item>
    <item>
      <title>deque</title>
      <link>https://designatedroom87.tistory.com/442</link>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;784&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAmmII/btq2hCiP0ia/1HoDgl8QzSfazRKsFIopXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAmmII/btq2hCiP0ia/1HoDgl8QzSfazRKsFIopXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAmmII/btq2hCiP0ia/1HoDgl8QzSfazRKsFIopXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAmmII%2Fbtq2hCiP0ia%2F1HoDgl8QzSfazRKsFIopXk%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;784&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;프로그램 실행결과&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;121&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKRLsG/btq2dIrlK0i/Nx0uadqu4976CKJeWfaGw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKRLsG/btq2dIrlK0i/Nx0uadqu4976CKJeWfaGw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKRLsG/btq2dIrlK0i/Nx0uadqu4976CKJeWfaGw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKRLsG%2Fbtq2dIrlK0i%2FNx0uadqu4976CKJeWfaGw1%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;121&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;소스 파일&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/pacpC/btq2gDiteNJ/nUZRcdK1PPwbzA4zKY34ek/main.cpp?attach=1&amp;amp;knm=tfile.cpp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;main.cpp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>C++ STL/deque</category>
      <author>DesignatedRoom</author>
      <guid isPermaLink="true">https://designatedroom87.tistory.com/442</guid>
      <comments>https://designatedroom87.tistory.com/442#entry442comment</comments>
      <pubDate>Fri, 9 Apr 2021 19:01:28 +0900</pubDate>
    </item>
    <item>
      <title>set</title>
      <link>https://designatedroom87.tistory.com/441</link>
      <description>&lt;p&gt;&lt;span&gt;set은 레드블랙 트리로 구현되어 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;396&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dswlGs/btq2gDoJzZd/t4zk0KQ0CDrM4ZNe2NIB3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dswlGs/btq2gDoJzZd/t4zk0KQ0CDrM4ZNe2NIB3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dswlGs/btq2gDoJzZd/t4zk0KQ0CDrM4ZNe2NIB3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdswlGs%2Fbtq2gDoJzZd%2Ft4zk0KQ0CDrM4ZNe2NIB3K%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;396&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;프로그램 실행결과&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;184&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cur3tW/btq2c2iGMMQ/AiwWLpElDTUf3IpbkH1tK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cur3tW/btq2c2iGMMQ/AiwWLpElDTUf3IpbkH1tK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cur3tW/btq2c2iGMMQ/AiwWLpElDTUf3IpbkH1tK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcur3tW%2Fbtq2c2iGMMQ%2FAiwWLpElDTUf3IpbkH1tK1%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;184&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;소스 파일&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/paAaT/btq2ggtVPuD/Yo04T7vmZO3cdjOwjAQuJK/main.cpp?attach=1&amp;amp;knm=tfile.cpp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;main.cpp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>C++ STL/set</category>
      <author>DesignatedRoom</author>
      <guid isPermaLink="true">https://designatedroom87.tistory.com/441</guid>
      <comments>https://designatedroom87.tistory.com/441#entry441comment</comments>
      <pubDate>Fri, 9 Apr 2021 16:44:29 +0900</pubDate>
    </item>
    <item>
      <title>map</title>
      <link>https://designatedroom87.tistory.com/440</link>
      <description>&lt;p&gt;map은 &lt;span&gt;레드블랙 트리로 구현되어 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;453&quot; data-origin-height=&quot;1238&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZdIEn/btq2cmBQm6Y/DKkIwPuCUYbFhDwOpN5pR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZdIEn/btq2cmBQm6Y/DKkIwPuCUYbFhDwOpN5pR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZdIEn/btq2cmBQm6Y/DKkIwPuCUYbFhDwOpN5pR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZdIEn%2Fbtq2cmBQm6Y%2FDKkIwPuCUYbFhDwOpN5pR1%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;453&quot; data-origin-height=&quot;1238&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;프로그램 실행결과&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;143&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciU8iO/btq2gKBfXoS/HiBZM2KRbG9KVHuPLwqgKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciU8iO/btq2gKBfXoS/HiBZM2KRbG9KVHuPLwqgKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciU8iO/btq2gKBfXoS/HiBZM2KRbG9KVHuPLwqgKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciU8iO%2Fbtq2gKBfXoS%2FHiBZM2KRbG9KVHuPLwqgKk%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;143&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;소스 파일&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bBpSc7/btq2c3hFBoz/QxWzAOZokKpIIxP5bArMQK/main.cpp?attach=1&amp;amp;knm=tfile.cpp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;main.cpp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>C++ STL/map</category>
      <author>DesignatedRoom</author>
      <guid isPermaLink="true">https://designatedroom87.tistory.com/440</guid>
      <comments>https://designatedroom87.tistory.com/440#entry440comment</comments>
      <pubDate>Fri, 9 Apr 2021 16:39:38 +0900</pubDate>
    </item>
    <item>
      <title>list</title>
      <link>https://designatedroom87.tistory.com/439</link>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;1115&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KmGQu/btq2goefOkQ/3g5gqkhUSV4anBhAHKK7o0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KmGQu/btq2goefOkQ/3g5gqkhUSV4anBhAHKK7o0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KmGQu/btq2goefOkQ/3g5gqkhUSV4anBhAHKK7o0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKmGQu%2Fbtq2goefOkQ%2F3g5gqkhUSV4anBhAHKK7o0%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;1115&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;498&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k7EEN/btq2gXtzxDd/c3nGp0BK7uiiVP7BwD4g6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k7EEN/btq2gXtzxDd/c3nGp0BK7uiiVP7BwD4g6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k7EEN/btq2gXtzxDd/c3nGp0BK7uiiVP7BwD4g6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk7EEN%2Fbtq2gXtzxDd%2Fc3nGp0BK7uiiVP7BwD4g6k%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;498&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;프로그램 실행결과&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;127&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBWtnL/btq2gDCbCuD/najINZ19kg3JO6ULdlMt81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBWtnL/btq2gDCbCuD/najINZ19kg3JO6ULdlMt81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBWtnL/btq2gDCbCuD/najINZ19kg3JO6ULdlMt81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBWtnL%2Fbtq2gDCbCuD%2FnajINZ19kg3JO6ULdlMt81%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;127&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;소스 파일&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/NtWae/btq2hfAQzZY/6EW7SvUxC8doKZQn0j7v2K/main.cpp?attach=1&amp;amp;knm=tfile.cpp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;main.cpp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>C++ STL/list</category>
      <author>DesignatedRoom</author>
      <guid isPermaLink="true">https://designatedroom87.tistory.com/439</guid>
      <comments>https://designatedroom87.tistory.com/439#entry439comment</comments>
      <pubDate>Fri, 9 Apr 2021 16:26:21 +0900</pubDate>
    </item>
    <item>
      <title>Unity를 활용한 벡터의 내적 - 탱크가 포를 쏠 시에 뒤로 밀림 구현</title>
      <link>https://designatedroom87.tistory.com/438</link>
      <description>&lt;p&gt;개발 환경은 Unity 이다.&lt;/p&gt;
&lt;p&gt;아래의 벡터의 내적의 내용을 가지고 활용을 해보자.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://designatedroom87.tistory.com/434&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;designatedroom87.tistory.com/434&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1617924900986&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;벡터의 내적(Dot product)&quot; data-og-description=&quot;위의 [그림 1]과 같이 두개의 벡터가 있으며, 그 사이각이 있다. 저 사이의 각을 구하고 싶을 때, 벡터의 내적을 이용한다. 벡터의 내적식은 다음과 같다. 그리고 벡터a와 벡터b는 다음과 같이 쓸 &quot; data-og-host=&quot;designatedroom87.tistory.com&quot; data-og-source-url=&quot;https://designatedroom87.tistory.com/434&quot; data-og-url=&quot;https://designatedroom87.tistory.com/434&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bDRQUE/hyJPoBH5Bf/crIgokLbjwdYbwLbanOz30/img.png?width=287&amp;amp;height=141&amp;amp;face=0_0_287_141,https://scrap.kakaocdn.net/dn/b6DxFI/hyJPuPtAqe/IyLXx4FkAT7e1GIXLTm640/img.png?width=287&amp;amp;height=141&amp;amp;face=0_0_287_141,https://scrap.kakaocdn.net/dn/ipxHX/hyJPgKrV55/mL4LpmVvlMMxPw4994lZkK/img.jpg?width=366&amp;amp;height=315&amp;amp;face=0_0_366_315&quot;&gt;&lt;a href=&quot;https://designatedroom87.tistory.com/434&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://designatedroom87.tistory.com/434&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bDRQUE/hyJPoBH5Bf/crIgokLbjwdYbwLbanOz30/img.png?width=287&amp;amp;height=141&amp;amp;face=0_0_287_141,https://scrap.kakaocdn.net/dn/b6DxFI/hyJPuPtAqe/IyLXx4FkAT7e1GIXLTm640/img.png?width=287&amp;amp;height=141&amp;amp;face=0_0_287_141,https://scrap.kakaocdn.net/dn/ipxHX/hyJPgKrV55/mL4LpmVvlMMxPw4994lZkK/img.jpg?width=366&amp;amp;height=315&amp;amp;face=0_0_366_315');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;벡터의 내적(Dot product)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;위의 [그림 1]과 같이 두개의 벡터가 있으며, 그 사이각이 있다. 저 사이의 각을 구하고 싶을 때, 벡터의 내적을 이용한다. 벡터의 내적식은 다음과 같다. 그리고 벡터a와 벡터b는 다음과 같이 쓸&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;designatedroom87.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;포탄 발사가 되면 아래의 Shot 함수가 호출 된다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;유니티에서는 벡터의 내적을 구하는 함수를 제공해주므로 이를 활용하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;가만히 있는 상태( 탱크의 이동 속도는 0 )에서 총구의 방향과 바퀴의 방향이 서로 일치하면 탱크는 뒤로 밀리므로&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이동 속도는 기존의 이동 속도 보다 줄어든다. 그리고 이 경우가 가장 많이 뒤로 밀린다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;만약 총구의 방향과 바퀴의 방향이 대충 45도 각도 만큼 차이가 있다고 하면 이 경우는 위의 경우보다&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;적게 뒤로 밀릴 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;875&quot; data-origin-height=&quot;722&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1cHHE/btq2eMek8zT/v61HwsCsiBDYXNfu8os1oK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1cHHE/btq2eMek8zT/v61HwsCsiBDYXNfu8os1oK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1cHHE/btq2eMek8zT/v61HwsCsiBDYXNfu8os1oK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1cHHE%2Fbtq2eMek8zT%2Fv61HwsCsiBDYXNfu8os1oK%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;875&quot; data-origin-height=&quot;722&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;프로그램 실행영상&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/channel/3670331/cliplink/418121254&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bn97f2/hyJPptTQkQ/31DEd739PCYzAsPazBVpmK/img.jpg?width=640&amp;amp;height=480&amp;amp;face=0_0_640_480&quot; data-video-width=&quot;640&quot; data-video-height=&quot;480&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/418121254?service=daum_tistory&quot; width=&quot;640&quot; height=&quot;480&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 아래는 3인칭 시점에서, &lt;span&gt;카메라가 보는 방향으로 총구(포신)를 회전시키는 함수이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;465&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M8e4T/btq2dI4gRNV/MVvv6vOUZvcj0gtRBZ9yXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M8e4T/btq2dI4gRNV/MVvv6vOUZvcj0gtRBZ9yXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M8e4T/btq2dI4gRNV/MVvv6vOUZvcj0gtRBZ9yXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM8e4T%2Fbtq2dI4gRNV%2FMVvv6vOUZvcj0gtRBZ9yXk%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;465&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;프로그램 실행영상&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/channel/3670331/cliplink/418121269&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/b6RaqD/hyJPkTDu75/MrZ92YCIp06XZeOwzvI0d1/img.jpg?width=640&amp;amp;height=480&amp;amp;face=0_0_640_480&quot; data-video-width=&quot;640&quot; data-video-height=&quot;480&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/418121269?service=daum_tistory&quot; width=&quot;640&quot; height=&quot;480&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;탱크 스크립트&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/XTbve/btq2c38E4EA/SwcC6JElIVkwDLhR3eXUc1/TankAction.cs?attach=1&amp;amp;knm=tfile.cs&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;TankAction.cs&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;카메라 스크립트&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/mc6tj/btq2bLnqWCa/WLvZ0XqVkuLIrm5zkTckkk/CameraAction.cs?attach=1&amp;amp;knm=tfile.cs&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;CameraAction.cs&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Algorithm with C/Math</category>
      <author>DesignatedRoom</author>
      <guid isPermaLink="true">https://designatedroom87.tistory.com/438</guid>
      <comments>https://designatedroom87.tistory.com/438#entry438comment</comments>
      <pubDate>Fri, 9 Apr 2021 08:34:35 +0900</pubDate>
    </item>
    <item>
      <title>4. 컴퓨터 AI만들기</title>
      <link>https://designatedroom87.tistory.com/436</link>
      <description>&lt;p&gt;아래의 내용에 이어서 진행을 해보자.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://designatedroom87.tistory.com/435?category=938310&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;designatedroom87.tistory.com/435?category=938310&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1617890007104&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;3. 접촉면에 따른 파워 조절( SetPuckVector함수)&quot; data-og-description=&quot;아래의 내용에 이어서 진행한다. designatedroom87.tistory.com/433 2. 공과 라켓의 충돌 처리 아래의 내용에 이어서 진행 해보자. designatedroom87.tistory.com/432 1. 플레이어 라켓과 컴퓨터 라켓 만들기 개발..&quot; data-og-host=&quot;designatedroom87.tistory.com&quot; data-og-source-url=&quot;https://designatedroom87.tistory.com/435?category=938310&quot; data-og-url=&quot;https://designatedroom87.tistory.com/435&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bHOtJq/hyJPmX0itL/uJmjf4HUXkMW2iGM8PtZGk/img.png?width=321&amp;amp;height=256&amp;amp;face=0_0_321_256,https://scrap.kakaocdn.net/dn/oJ13q/hyJN096JrT/pUrDnyETFmntgoUguofgtK/img.png?width=321&amp;amp;height=256&amp;amp;face=0_0_321_256,https://scrap.kakaocdn.net/dn/cz2cJp/hyJPsw86op/h0MMAmAPWZlWkFSCkllxKk/img.png?width=742&amp;amp;height=1177&amp;amp;face=0_0_742_1177&quot;&gt;&lt;a href=&quot;https://designatedroom87.tistory.com/435?category=938310&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://designatedroom87.tistory.com/435?category=938310&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bHOtJq/hyJPmX0itL/uJmjf4HUXkMW2iGM8PtZGk/img.png?width=321&amp;amp;height=256&amp;amp;face=0_0_321_256,https://scrap.kakaocdn.net/dn/oJ13q/hyJN096JrT/pUrDnyETFmntgoUguofgtK/img.png?width=321&amp;amp;height=256&amp;amp;face=0_0_321_256,https://scrap.kakaocdn.net/dn/cz2cJp/hyJPsw86op/h0MMAmAPWZlWkFSCkllxKk/img.png?width=742&amp;amp;height=1177&amp;amp;face=0_0_742_1177');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;3. 접촉면에 따른 파워 조절( SetPuckVector함수)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;아래의 내용에 이어서 진행한다. designatedroom87.tistory.com/433 2. 공과 라켓의 충돌 처리 아래의 내용에 이어서 진행 해보자. designatedroom87.tistory.com/432 1. 플레이어 라켓과 컴퓨터 라켓 만들기 개발..&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;designatedroom87.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYRga4/btq17HltCYn/zw2dMzauRxPybobzUG0W3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYRga4/btq17HltCYn/zw2dMzauRxPybobzUG0W3K/img.png&quot; data-alt=&quot;[그림 : 컴퓨터의 FSM]&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYRga4/btq17HltCYn/zw2dMzauRxPybobzUG0W3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYRga4%2Fbtq17HltCYn%2Fzw2dMzauRxPybobzUG0W3K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;[그림 : 컴퓨터의 FSM]&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;FSM에 대해 간단히 설명하면, 컴퓨터 진영에 공이 넘어오면 공을 쫓아가는 추적 상태와&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;추적 상태에서 공을 친 이후에 원래 위치로 되돌아 오는 복귀 상태와&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;공이 플레이어 영역에 있으면 배회 상태를 만들 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기본적으로 FSM 설계에 필요한 변수들의 선언과 초기화를 보도록 하자.&lt;/p&gt;
&lt;p&gt;아래는 Init 함수의 일부분이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;406&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bprEpY/btq2cYM3bRc/WV14NG9LuBAQhSpRekIgo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bprEpY/btq2cYM3bRc/WV14NG9LuBAQhSpRekIgo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bprEpY/btq2cYM3bRc/WV14NG9LuBAQhSpRekIgo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbprEpY%2Fbtq2cYM3bRc%2FWV14NG9LuBAQhSpRekIgo0%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;406&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;컴퓨터의 AI 설정하는 함수를 SetComVector 라고 한다.&lt;/p&gt;
&lt;p&gt;이 함수에서는 AI의 각 상태에 따라서 컴퓨터의 이동 방향 벡터를 구하면 된다.&lt;/p&gt;
&lt;p&gt;이 함수는 내용이 길기 때문에, 이 세 상태를 나눠서 보도록 하자.&lt;/p&gt;
&lt;p&gt;아래의 if 조건에서 m_bComTouched 변수가 true인 경우는 공과 컴퓨터의 라켓이 충돌이&lt;/p&gt;
&lt;p&gt;발생했다는 정보를 담고 있다.&lt;/p&gt;
&lt;p&gt;그렇기 때문에 이미 컴퓨터가 공을 친 경우에 다시 또 공을 쫒아가서 공을 칠 필요는 없다.&lt;/p&gt;
&lt;p&gt;그러므로 공을 추적하는 상태는 공이 컴퓨터의 진영에 넘어오고 아직 컴퓨터가 공과 충돌이 되지 않았을 때,&lt;/p&gt;
&lt;p&gt;컴퓨터의 이동 방향을 공 쪽으로 이동하도록 설정하면 된다.&lt;/p&gt;
&lt;p&gt;그리고 컴퓨터의 진영은 위쪽이고 플레이어의 진영은 아래쪽이다.&lt;/p&gt;
&lt;p&gt;즉, 공의 이동 방향 벡터의 y성분이 음수라는 의미는 공이 밑으로 이동하고 있다는 의미이므로&lt;/p&gt;
&lt;p&gt;이는 플레이어 영역 쪽으로 이동하고 있다는 의미가 된다.&lt;/p&gt;
&lt;p&gt;컴퓨터의 이동 속도보다 공의 이동 속도가 더 빠른 상태로 플레이어 진영 쪽으로 이동하고 있다면&lt;/p&gt;
&lt;p&gt;굳이 컴퓨터가 공을 쫓아갈 필요는 없다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;976&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/batJdj/btq2b475jG4/8DsMw7zF8KuLJ7YCixIUc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/batJdj/btq2b475jG4/8DsMw7zF8KuLJ7YCixIUc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/batJdj/btq2b475jG4/8DsMw7zF8KuLJ7YCixIUc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbatJdj%2Fbtq2b475jG4%2F8DsMw7zF8KuLJ7YCixIUc1%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;976&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;말 그대로 배회한다는 말은 정찰 중인 상태로 봐도 될 것 같다.&lt;/p&gt;
&lt;p&gt;크게 설명하면, 컴퓨터를 골문 위치로 이동시키고,&lt;/p&gt;
&lt;p&gt;골문 위치에 도착하면 골문의 반대 방향으로 이동시키는 내용이다.&lt;/p&gt;
&lt;p&gt;이 상태에서도 두 경우로 나눠서 컴퓨터의 이동 방향 벡터를 설정하면 된다.&lt;/p&gt;
&lt;p&gt;컴퓨터의 위치가 골문에 있는 경우에는 골문의 위치와 RangeX와 RangeY 변수를 이용하면&lt;/p&gt;
&lt;p&gt;골문을 중심으로 직사각형이 그려지는데&lt;/p&gt;
&lt;p&gt;이 직사각형의 네 점의 위치와 컴퓨터의 위치와의 비교를 해서 반사 벡터의 개념을 적용하면&lt;/p&gt;
&lt;p&gt;컴퓨터의 이동 방향 벡터를 쉽게 처리 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;1161&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ogBiD/btq2aNsc38C/OHVCxmOtADVVHiq1Dxnjk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ogBiD/btq2aNsc38C/OHVCxmOtADVVHiq1Dxnjk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ogBiD/btq2aNsc38C/OHVCxmOtADVVHiq1Dxnjk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FogBiD%2Fbtq2aNsc38C%2FOHVCxmOtADVVHiq1Dxnjk0%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;1161&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;복귀 상태라는 것은 추적 상태 이후의 상태이다.&lt;/p&gt;
&lt;p&gt;이 상태에서도 컴퓨터의 이동 방향 벡터를 조건에 맞게 설정하면 된다.&lt;/p&gt;
&lt;p&gt;즉, 공을 쫒아간 이후에 자신의 초기 위치로 이동하면 된다.&lt;/p&gt;
&lt;p&gt;초기 위치에 도착하면, 잠시 컴퓨터의 이동을 멈추고 적정 시간 이후가 되면&lt;/p&gt;
&lt;p&gt;다시 공을 쫒는 상태가 될 수 있도록 변수 설정을 한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;658&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kCBoL/btq17YOzk0u/sEhwP643PwQEGnw9ec3luK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kCBoL/btq17YOzk0u/sEhwP643PwQEGnw9ec3luK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kCBoL/btq17YOzk0u/sEhwP643PwQEGnw9ec3luK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkCBoL%2Fbtq17YOzk0u%2FsEhwP643PwQEGnw9ec3luK%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;658&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SetComVector 함수는 아래의 Update 함수에서 처리를 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;352&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nK04Q/btq2cYfd2sA/m9RoMCrjbBckXgktMcwlF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nK04Q/btq2cYfd2sA/m9RoMCrjbBckXgktMcwlF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nK04Q/btq2cYfd2sA/m9RoMCrjbBckXgktMcwlF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnK04Q%2Fbtq2cYfd2sA%2Fm9RoMCrjbBckXgktMcwlF0%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;352&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;프로그램 실행영상&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/channel/3670331/cliplink/418118862&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/FUFAM/hyJPo2FGhD/MalseBjUIYlfjbJboEnmY1/img.jpg?width=644&amp;amp;height=886&amp;amp;face=0_0_644_886&quot; data-video-width=&quot;644&quot; data-video-height=&quot;886&quot; data-video-origin-width=&quot;644&quot; data-video-origin-height=&quot;886&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/418118862?service=daum_tistory&quot; width=&quot;644&quot; height=&quot;886&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;소스 파일&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/FDO1h/btq18EvxmxX/ND7USFwa3qNTcKMsgHwhwK/HelloWorldScene.cpp?attach=1&amp;amp;knm=tfile.cpp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;HelloWorldScene.cpp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/lbCPr/btq2eLT0kow/vHxfLE7qM4KtkUS6xHNtfK/HelloWorldScene.h?attach=1&amp;amp;knm=tfile.h&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;HelloWorldScene.h&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>C,C++로 만드는 간단한 프로젝트/에어 하키 - Cocos2D 활용</category>
      <author>DesignatedRoom</author>
      <guid isPermaLink="true">https://designatedroom87.tistory.com/436</guid>
      <comments>https://designatedroom87.tistory.com/436#entry436comment</comments>
      <pubDate>Thu, 8 Apr 2021 20:33:34 +0900</pubDate>
    </item>
    <item>
      <title>3. 접촉면에 따른 파워 조절( SetPuckVector함수)</title>
      <link>https://designatedroom87.tistory.com/435</link>
      <description>&lt;p&gt;아래의 내용에 이어서 진행한다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://designatedroom87.tistory.com/433&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;designatedroom87.tistory.com/433&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1617874197246&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;2. 공과 라켓의 충돌 처리&quot; data-og-description=&quot;아래의 내용에 이어서 진행 해보자. designatedroom87.tistory.com/432 1. 플레이어 라켓과 컴퓨터 라켓 만들기 개발환경 : Visual Studio 2008 과 cocos2d-1.0.0-x-0.9.0 Cocos2D는 Win API와는 좌표계가 다르다...&quot; data-og-host=&quot;designatedroom87.tistory.com&quot; data-og-source-url=&quot;https://designatedroom87.tistory.com/433&quot; data-og-url=&quot;https://designatedroom87.tistory.com/433&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bOojbY/hyJPldAxxe/hDeuB8wP5RuMstL7FA7vtK/img.png?width=432&amp;amp;height=354&amp;amp;face=0_0_432_354,https://scrap.kakaocdn.net/dn/cmUGFn/hyJPhWzciI/P2LaeQnnHQ5HvhhEWerLTk/img.png?width=432&amp;amp;height=354&amp;amp;face=0_0_432_354,https://scrap.kakaocdn.net/dn/Ai2kb/hyJNTwe8Cj/EBvdHuACXLR79iXRolhuUK/img.png?width=749&amp;amp;height=779&amp;amp;face=0_0_749_779&quot;&gt;&lt;a href=&quot;https://designatedroom87.tistory.com/433&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://designatedroom87.tistory.com/433&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bOojbY/hyJPldAxxe/hDeuB8wP5RuMstL7FA7vtK/img.png?width=432&amp;amp;height=354&amp;amp;face=0_0_432_354,https://scrap.kakaocdn.net/dn/cmUGFn/hyJPhWzciI/P2LaeQnnHQ5HvhhEWerLTk/img.png?width=432&amp;amp;height=354&amp;amp;face=0_0_432_354,https://scrap.kakaocdn.net/dn/Ai2kb/hyJNTwe8Cj/EBvdHuACXLR79iXRolhuUK/img.png?width=749&amp;amp;height=779&amp;amp;face=0_0_749_779');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;2. 공과 라켓의 충돌 처리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;아래의 내용에 이어서 진행 해보자. designatedroom87.tistory.com/432 1. 플레이어 라켓과 컴퓨터 라켓 만들기 개발환경 : Visual Studio 2008 과 cocos2d-1.0.0-x-0.9.0 Cocos2D는 Win API와는 좌표계가 다르다...&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;designatedroom87.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 부분은 내적의 개념을 이용할 것이다.&lt;/p&gt;
&lt;p&gt;아래에서 내적에 대한 글을 보고 오도록 하자.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://designatedroom87.tistory.com/434?category=887656&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;designatedroom87.tistory.com/434?category=887656&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1617874277892&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;벡터의 내적(Dot product)&quot; data-og-description=&quot;위의 [그림 1]과 같이 두개의 벡터가 있으며, 그 사이각이 있다. 저 사이의 각을 구하고 싶을 때, 벡터의 내적을 이용한다. 벡터의 내적식은 다음과 같다. 그리고 벡터a와 벡터b는 다음과 같이 쓸 &quot; data-og-host=&quot;designatedroom87.tistory.com&quot; data-og-source-url=&quot;https://designatedroom87.tistory.com/434?category=887656&quot; data-og-url=&quot;https://designatedroom87.tistory.com/434&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bp4xFz/hyJN0oBe9T/YKlMVsPI0MTlzIw9AWpAS0/img.png?width=287&amp;amp;height=141&amp;amp;face=0_0_287_141,https://scrap.kakaocdn.net/dn/cxkyPg/hyJPp77VY6/uLSpgWxRnI3aFeNZRxW8Zk/img.png?width=287&amp;amp;height=141&amp;amp;face=0_0_287_141,https://scrap.kakaocdn.net/dn/dodQvY/hyJPonQOqs/7fDICKTpzvcKtymOuYkaIk/img.jpg?width=366&amp;amp;height=315&amp;amp;face=0_0_366_315&quot;&gt;&lt;a href=&quot;https://designatedroom87.tistory.com/434?category=887656&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://designatedroom87.tistory.com/434?category=887656&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bp4xFz/hyJN0oBe9T/YKlMVsPI0MTlzIw9AWpAS0/img.png?width=287&amp;amp;height=141&amp;amp;face=0_0_287_141,https://scrap.kakaocdn.net/dn/cxkyPg/hyJPp77VY6/uLSpgWxRnI3aFeNZRxW8Zk/img.png?width=287&amp;amp;height=141&amp;amp;face=0_0_287_141,https://scrap.kakaocdn.net/dn/dodQvY/hyJPonQOqs/7fDICKTpzvcKtymOuYkaIk/img.jpg?width=366&amp;amp;height=315&amp;amp;face=0_0_366_315');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;벡터의 내적(Dot product)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;위의 [그림 1]과 같이 두개의 벡터가 있으며, 그 사이각이 있다. 저 사이의 각을 구하고 싶을 때, 벡터의 내적을 이용한다. 벡터의 내적식은 다음과 같다. 그리고 벡터a와 벡터b는 다음과 같이 쓸&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;designatedroom87.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;접촉면에 따른 파워 조절은 라켓의 어느 부위에 공이 닿았냐에 따라 공이 날아가는 파워는 다를 것이다.&lt;/p&gt;
&lt;p&gt;이는 SetPuckVector함수 내에서 처리를 하면 된다.&lt;/p&gt;
&lt;p&gt;라켓과 공이 충돌했을 때의 추가적인 과정이다.&lt;/p&gt;
&lt;p&gt;다만, 어느부분에서 이 기능을 만들지 생각을 해보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBmNP7/btq2b47GngP/N9MTDL0O1BsNFxJXSu3Luk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBmNP7/btq2b47GngP/N9MTDL0O1BsNFxJXSu3Luk/img.png&quot; data-alt=&quot;[그림 1]&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBmNP7/btq2b47GngP/N9MTDL0O1BsNFxJXSu3Luk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBmNP7%2Fbtq2b47GngP%2FN9MTDL0O1BsNFxJXSu3Luk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;[그림 1]&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;일반적으로 공이 굴러오다가, 라켓의 정중앙에 맞아으면, 파워가 최대치가 된다.&lt;/p&gt;
&lt;p&gt;쉽게 표현하면 야구배트에 공이 정중앙에 맞으면, 멀리 나가는 경우와 흡사.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qRCKB/btq2ck3vTQB/OO6F1tr0ibc1DiKJryKj0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qRCKB/btq2ck3vTQB/OO6F1tr0ibc1DiKJryKj0K/img.png&quot; data-alt=&quot;[그림 2]&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qRCKB/btq2ck3vTQB/OO6F1tr0ibc1DiKJryKj0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqRCKB%2Fbtq2ck3vTQB%2FOO6F1tr0ibc1DiKJryKj0K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;[그림 2]&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;공이 라켓의 정면이 아닌 곳에 부딪히면, 파워는 최대치보다 작다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우선, 아래의 PlayerAction 함수를 수정하도록 하자.&lt;/p&gt;
&lt;p&gt;기존의 방식은 키 입력에 따라서 플레이어의 좌표값을 바로 변경해주었는데,&lt;/p&gt;
&lt;p&gt;기존에 클래스 멤버변수인 플레이어의 이동 방향 벡터 변수를 이용해서 수정하도록 하자.&lt;/p&gt;
&lt;p&gt;이동 방향 벡터의 값이 0인 경우는 해당 방향으로의 움직임은 없다는 의미이다.&lt;/p&gt;
&lt;p&gt;각 방향 키의 입력에 따라 방향에 대한 정보만 담고 있다.&lt;/p&gt;
&lt;p&gt;그래서 1 혹은 -1의 값으로 두도록 한다.&lt;/p&gt;
&lt;p&gt;아래의 함수에서 플레이어의 이동 벡터의 x와 y를 0으로 둔 이유는&lt;/p&gt;
&lt;p&gt;만약에 키 입력이 들어오지 않는 상황을 생각해서 둔 것이다.&lt;/p&gt;
&lt;p&gt;키 입력이 들어오지 않으면 &lt;span style=&quot;color: #333333;&quot;&gt;플레이어의 이동 벡터의 x와 y가 0이 되어, &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;pos의 값에는 변화가 없다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;864&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3epVL/btq18oy9j2X/aeVjI8NtJ8yAgCJx0R4dj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3epVL/btq18oy9j2X/aeVjI8NtJ8yAgCJx0R4dj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3epVL/btq18oy9j2X/aeVjI8NtJ8yAgCJx0R4dj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3epVL%2Fbtq18oy9j2X%2FaeVjI8NtJ8yAgCJx0R4dj1%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;864&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래는 &lt;span&gt;SetPuckVector 함수에 공과 라켓이 충돌한 부분이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;벡터의 내적을 이용해서 공의 속도를 높이거나 낮출 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;m_fPuck_Speed(공의 이동 속도) 를 구할 때,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;절대값을&amp;nbsp;쓴&amp;nbsp;이유는&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;cosineTheta값이 음값이 나올수 있는데, 이를 막아주고자 쓴 것이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그리고 300을 더한 이유는 cos(90)는 0값인데, 90도 각도로 맞으면 &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;공의 속도는 0이 된다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;공의 이동 속도가 0이 되는 것을 막기 위해서 300정도의 값을 더한 것이다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;아래에 m_bComTouched 라는 변수가 있는데, 이는 밑에서 설명한다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;라켓의 이동 속도의 크기가 0이라는 의미는 움직이지 않고 가만히 있었다는 의미이다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;1176&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kHtfR/btq16AApyeI/pjkAtj6la9swzudo1OEEDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kHtfR/btq16AApyeI/pjkAtj6la9swzudo1OEEDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kHtfR/btq16AApyeI/pjkAtj6la9swzudo1OEEDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkHtfR%2Fbtq16AApyeI%2FpjkAtj6la9swzudo1OEEDK%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;1176&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;m_bComTouched 라는 변수의 선언 이유는 나중에 작업할 컴퓨터의 FSM과 연관이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;FSM에 대해 간단히 설명하면, 컴퓨터 진영에 공이 넘어오면 공을 쫓아가는 추적 상태와&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;추적 상태에서 공을 친 이후에 원래 위치로 되돌아 오는 복귀 상태와 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;공이 플레이어 영역에 있으면 배회 상태를 만들 것이다.&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;m_bComTouched는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;컴퓨터가 공을 쳤는지에 대한 여부를 판정하는 변수로 보도록 하자.&lt;br /&gt;해당 변수가 존재하는 이유는 컴퓨터가 자기 진영으로 넘어온 공을 쫒아가서&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;컴퓨터가 자기 진영에서 공을 여러 번 치는&amp;nbsp;상황을&amp;nbsp;막기&amp;nbsp;위해서&amp;nbsp;필요하다. &lt;br /&gt;컴퓨터가&amp;nbsp;공을&amp;nbsp;치면 &lt;span style=&quot;color: #333333;&quot;&gt;m_bComTouched는 &lt;/span&gt;true로&amp;nbsp;변경되고,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;나중에 컴퓨터가 공을 치고 원래 자리로 돌아와서 적정 시간(m_fDelay)이 흐르면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;다시&amp;nbsp;false로&amp;nbsp;변경되어&amp;nbsp;공을&amp;nbsp;칠&amp;nbsp;준비를&amp;nbsp;한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위에서 적정 시간이 흐르는 것을 알아내기 위해서는 시간을 재는 변수(m_fCom_Time)가 필요하다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래는 초기화를 처리하는 함수이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;1177&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhjdqE/btq2c2aCGs4/74kDiyDu7DljJHhygV2fZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhjdqE/btq2c2aCGs4/74kDiyDu7DljJHhygV2fZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhjdqE/btq2c2aCGs4/74kDiyDu7DljJHhygV2fZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhjdqE%2Fbtq2c2aCGs4%2F74kDiyDu7DljJHhygV2fZk%2Fimg.png&quot; data-filename=&quot;1.PNG&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;1177&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;프로그램 실행영상&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/channel/3670331/cliplink/418110328&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bHvbhO/hyJNWs07Km/230Myqh7KMyYFxDAQ6v5K0/img.jpg?width=644&amp;amp;height=886&amp;amp;face=0_0_644_886&quot; data-video-width=&quot;644&quot; data-video-height=&quot;886&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/418110328?service=daum_tistory&quot; width=&quot;644&quot; height=&quot;886&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;헤더 파일과 소스 파일&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/baDQmU/btq2b2PH1eh/an8sSpVryyAxXMWVZkvT70/HelloWorldScene.cpp?attach=1&amp;amp;knm=tfile.cpp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;HelloWorldScene.cpp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/beQKFf/btq2aDXdyOt/2lBJcbKrHhjvGWwzWVaRkK/HelloWorldScene.h?attach=1&amp;amp;knm=tfile.h&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;HelloWorldScene.h&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>C,C++로 만드는 간단한 프로젝트/에어 하키 - Cocos2D 활용</category>
      <author>DesignatedRoom</author>
      <guid isPermaLink="true">https://designatedroom87.tistory.com/435</guid>
      <comments>https://designatedroom87.tistory.com/435#entry435comment</comments>
      <pubDate>Thu, 8 Apr 2021 18:29:28 +0900</pubDate>
    </item>
  </channel>
</rss>