SDL과 C++를 이용한 크로스 플랫폼 프로그래밍

Size: px
Start display at page:

Download "SDL과 C++를 이용한 크로스 플랫폼 프로그래밍"

Transcription

1 110 SDL과 C++를 이용한 크로스 플랫폼 프로그래밍 박주항 지음

2 110 SDL 과 C++ 를이용한크로스플랫폼프로그래밍 박주항지음

3 표지사진이종원이책의표지는이종원님이보내주신풍경사진을담았습니다. 리얼타임은독자의시선을담은풍경사진을책표지로보여주고자합니다. 사진보내기 SDL 과 C++ 를이용한크로스플랫폼프로그래밍 초판발행 2015 년 7 월 28 일 지은이박주항 / 펴낸이김태헌펴낸곳한빛미디어 ( 주 ) / 주소서울시마포구양화로 7길 83 한빛미디어 ( 주 ) IT출판부전화 / 팩스 등록 1999년 6월 24일제 호 ISBN / 정가 12,000원 총괄배용석 / 책임편집김창수 / 기획 편집정지연 / 교정이미연디자인표지 / 내지여동일, 조판최송실마케팅박상용 / 영업김형진, 김진불, 조유미 이책에대한의견이나오탈자및잘못된내용에대한수정정보는한빛미디어 ( 주 ) 의홈페이지나아래이메일로알려주십시오. 한빛미디어홈페이지 / 이메일 ask@hanbit.co.kr Published by HANBIT Media, Inc. Printed in Korea Copyright c 2015 박주항 & HANBIT Media, Inc. 이책의저작권은박주항과한빛미디어 ( 주 ) 에있습니다. 저작권법에의해보호를받는저작물이므로무단복제및무단전재를금합니다. 지금하지않으면할수없는일이있습니다. 책으로펴내고싶은아이디어나원고를메일 (ebookwriter@hanbit.co.kr) 로보내주세요. 한빛미디어 ( 주 ) 는여러분의소중한경험과지식을기다리고있습니다.

4 저자소개 지은이 _ 박주항 게임업계에서 10년째일하고있는개발자다. 어린시절국산게임이었던 PC게임 폭스레인저 나 그날이오면 3 같은게임에감명을받아패키지게임개발을꿈꿔왔으나패키지게임시장이사장된현실을받아들이고온라인게임업체에입사하게되었다. 클라이언트프로그래머로입사했지만여러가지회사사정으로서버프로그래머로전향하게되었으며이후로계속온라인게임서버프로그래머로근무해왔다. 서강대학교에서컴퓨터공학과물리학을전공했으며한국산업기술대학교디지털엔터테인먼트학과에서대학원과정을수료하였다. JCE ( 현조이시티 ), LINE Plus Corporation에서근무하였으며현재모바일게임제작회사인 갤럭시엔터테인먼트에서대표이사를역임하고있다. 저서로는온라인서버프로그래밍관련서적인 C++ 로온라인게임서버구축하기 : CGSF를활용한게임서버제작 ( 한빛미디어, 2014년 ) 과 C++ 로온라인게임서버구축하기 : CGSF 파헤쳐보기 ( 한빛미디어, 2014 년 ), C++ 개발자를위한 WIN32 오픈소스라이브러리 100 ( 한빛미디어, 2014년 ) 이있다.

5 일러두기 하나의소스로다양한플랫폼에대응하자 2000년도초반까지만하더라도멀티플랫폼에대해서는크게고려할필요가없었습니다. PC 단일플랫폼을타깃으로제품을출시해도충분히고객을확보할수있었기때문입니다. 하지만인터넷인프라가예전과비교할수없을정도로좋아지고, 모바일환경이조성되면서이제단일플랫폼으로는프로그램의생명력이그빛을발하기가어렵게되었습니다. 이에따라크로스플랫폼프로그래밍이점차중요한화두로대두하였습니다. 멀티미디어크로스플랫폼을지원하는대표적인추상라이브러리로는 SDL Simple Direct Media 라이브러리가있습니다. SDL과 C++ 다양한플랫폼이등장하고있지만해당플랫폼제공사에서는자신만의고유한프로그래밍언어에특화된환경만을제공하고있습니다. 예를들어, 아이폰에서는 Objective-C, 안드로이드에서는자바, 윈도우폰에서는.NET을지원하고있습니다. 또한, WIN32 플랫폼에서는그래픽처리를위해 DirectX를활용하는데, DirectX 는 WIN32 플랫폼만지원하고다른플랫폼은지원하지않습니다. 이런여러가지여건을고려해볼때, 하나의프로그래밍소스로여러플랫폼에대응하는코드를개발하는것은불가능한것처럼보입니다. 하지만 SDL과 C++ 를활용한다면이문제를해결할수있습니다. 여러플랫폼에서자신만의프로그래밍언어로소프트웨어를개발하긴하지만, 이런소프트웨어의개발을도와주는커널이나상위프레임워크는근본적으로 C나 C++ 로작성되었고개별플랫폼들이 C++ 컴파일을지원하여 C++ 로작성된소스는여러플랫폼에서활용할수있기때문입니다. 그리고 SDL은미디어처리, 렌더링, 사운드처리에관련된프로그래밍인터페이스를여러플랫폼에서대응할수있게제공하므로 SDL로작성된코드는새로운플랫폼으로이식하더라도코드를거의수정하지않아도됩니다. 즉, SDL과 C++ 를이용해소프트웨어를개발했

6 다면저비용으로타플랫폼에이식하는게가능하다는뜻입니다. SDL과 C++ 를굳이사용할필요가있을까? SDL과 C++ 를사용하면여러플랫폼에서해당소스를재활용할수있지만이것만으로는매력적으로보이지않습니다. 여러플랫폼에대응할수있다고하나생산성이란부분에서걸림돌로작용하기때문입니다. 예를들어, 안드로이드의경우자바란언어의수준높은생산성과안드로이드플랫폼에서제공하는다양한기능을고려해본다면굳이 C++ 로개발할필요가없습니다. 다만지금까지 C++ 로작성된과거레거시코드를재활용한다거나게임프로그래밍처럼 C++ 와궁합이잘맞는분야에사용하는경우 C++ 와 SDL의조합은탁월한선택이라고할수있습니다. 물론게임의경우 Unity3D라는크로스플랫폼개발환경을제공하는개발툴이존재합니다. Unity3D 는다양한애셋이존재하고막강한게임개발환경을제공해주어그래픽디자이너나기획자도게임을제작할수있게해주지만역으로생각해보면프로그래머입장에서는그만큼구현자유도를빼앗기는결과를낳습니다. 이로볼때 C++ 와 SDL 조합을통한게임개발은소프트웨어의동작하나하나를처음부터끝까지프로그래머가제어할수있기에꽤매력적이라고할수있습니다. 책의구성이책에서는 SDL 크로스플랫폼프로그래밍을위한환경설정을구성하는방법을서두에설명합니다. 그리고 SDL을활용해서레거시코드를재활용하는예제를살펴보며그과정에서각플랫폼에특화된내용을점검하고이를해결하는방법을설명합니다. 또한, SDL을활용하여완성된게임프로젝트를설명함으로써 SDL이게임개발과궁합이맞는다는것을강조합니다. 게임개발뿐만아니라 SDL을활용한멀티미디어프로그램개발에대한예제도다루며 WIN32에특화된사용법도설명합니다. 마지막으로 SDL 확장모듈에관해다루고기타이슈사항을살펴봅니다.

7 대상독자이책에서는 SDL과 C++ 로크로스플랫폼프로그래밍을하는데중점을두고있습니다. 특히윈도우와안드로이드플랫폼용프로그램을단일한소스코드로개발하는방법을설명합니다. 따라서다음사항에해당하는분이라면이책의대상독자에속한다고할수있습니다. 멀티플랫폼멀티미디어소프트웨어개발과관련된분 멀티플랫폼게임개발과관련된분 과거 C++ 로작성한코드를여러플랫폼에이식하고싶은분 SDL 2.0에대한사용법을배우고싶은분 WIN32에특화된 SDL 응용프로그램을제작하려는분 현재이책을쓰고있는시점에서, 한국에서는아직윈도우폰이활성화되지않았지만마이크로소프트의저력을생각하면언젠가윈도우폰도시장의한축을차지할것입니다. 그러면더욱더크로스플랫폼프로그래밍이주목받게될것이며이책이큰도움이되리라생각합니다. 비록이책에서는 WIN32와안드로이드에중점을둔 SDL 활용내용을다루지만이책을읽고나면프로그램을윈도우폰이나아이폰으로포팅하는것이어렵지않음을알게될것입니다.

8 사전지식및준비사항 크로스플랫폼프로그래밍을하기위한개발툴이필요합니다. 또한, SDL 프로그래밍을위해기초적인 C/C++ 지식이필요합니다. 책후반부에설명하는게임프로젝트의경우간단한디자인패턴을소개하는데, 디자인패턴에대해알고있다면수월히진행할수있습니다. 샘플코드 이책의샘플코드는다음링크에서다운로드할수있습니다. 다음링크에서 SDLLibrary.rar 파일을다운로드하여샘플코드가들어있는폴더에 압축을풉니다. 정상적으로설치했다면샘플코드가있는폴더하위에다음세폴더가있습니다. Project SDL2_Module external Visual Studio 2013 윈도우용프로그램을제작하기위해서 Visual Studio 2013이필요합니다. Visual Studio 2013의경우무료버전인 Express 버전이있어서이 Express 버전을설치하면 SDL 프로그래밍이가능합니다. Express 버전외에 Visual Studio 2013의기능을대부분활용할수있는 Community 버전도마이크로소프트에서무료로공개했습니다. 두버전은다음링크에서다운로드할수있습니다.

9 책에나오는모든샘플소스는 Express 버전에서테스트하였지만 Community 버전에서도동작에문제가없으니가능하면 Community 버전을다운로드하여설치합니다. 학생은 Professional 버전이무료이므로학생이라면 Professional 버전을설치해보기바랍니다. 안드로이드용도구와개발킷 Visual Studio 2013 만으로윈도우용애플리케이션을제작할수있지만안드로이드 용앱을제작하기위해서는다음도구와개발킷을설치해야합니다. ADT ADT Android Developer Tools 는안드로이드프로그램을빌드할수있는 IDE입니다. 현재 ADT는다운로드할수없으며 Android Studio라는새로운 IDE로통일된상태입니다. 이책에서제공하는샘플코드는모두 ADT를사용해서작성되었기때문에최신 IDE인 Android Studio를사용하지않습니다. ADT는다음링크에서다운로드하기바랍니다. 이링크에서 adt-bundle-windows-x86_ zip 파일을다운로드해서 ADT를설치합니다 ( 운영체제가 32비트라면 32비트버전의 ADT를다운로드합니다 ). 추후해당링크에서파일을다운로드할수없게되면 ADT를다운로드할수있는별도의저장소를제공하겠습니다. ADT에는다음항목이포함되어있습니다. 이클립스 + ADT 플러그인 안드로이드 SDK 툴 안드로이드플랫폼툴

10 에뮬레이터를위한안드로이드시스템이미지 NDK C++ 소스코드를빌드하기위해 NDK Native Development Kit 가필요합니다. 다음링크에서 NDK를다운로드합니다. 윈도우 64비트버전을설치하는데, 현재 NDK 최신버전은 r10e입니다 ( 운영체제가 32비트라면 32비트버전의 NDK를다운로드합니다 ). 환경변수 PATH 항목에 NDK가설치된곳의경로를추가하고, 경로를추가한후콘솔창에 ndk_build.cmd를입력해서정상적으로 NDK가실행되는지확인합니다. 블루스택일반적인 NDK 프로그래밍이라면 ADT에서제공하는안드로이드에뮬레이터로충분하지만아직까진이에뮬레이터가그래픽부분렌더링을완벽히지원하지않습니다. 블루스택 BlueStacks 이라는에뮬레이터를설치하면실제기기가없어도프로그램의결과를확인할수있습니다. 블루스택은다음링크에서다운로드할수있습니다. JDK Java Development Kit 안드로이드프로그램을개발하기위해추가로자바가상머신과 JDK 를설치해야합니다. JDK 는다음링크에서다운로드할수있습니다. html?sssourcesiteid=otnjp 윈도우환경에설치하므로최신버전의 JDK 32 비트또는 64 비트버전을설치합니 다. 현재 JDK 최신버전은 1.8 입니다.

11 한빛리얼타임 한빛리얼타임은 IT 개발자를위한 ebook 입니다. 요즘 IT 업계에는하루가멀다하고수많은기술이나타나고사라져갑니다. 인 터넷을아무리뒤져도조금이나마정리된정보를찾기도쉽지않습니다. 또한, 잘정리되어책으로나오기까지는오랜시간이걸립니다. 어떻게하면조금이라 도더유용한정보를빠르게얻을수있을까요? 어떻게하면남보다조금더빨 리경험하고습득한지식을공유하고발전시켜나갈수있을까요? 세상에는수 많은종이책이있습니다. 그리고그종이책을그대로옮긴전자책도많습니다. 전자책에는전자책에적합한콘텐츠와전자책의특성을살린형식이있다고생 각합니다. 한빛이지금생각하고추구하는, 개발자를위한리얼타임전자책은이렇습니다. 1 ebook First - 빠르게변화하는 IT 기술에대해핵심적인정보를신속하게제공합니다 500페이지가까운분량의잘정리된도서 ( 종이책 ) 가아니라, 핵심적인내용을빠르게전달하기위해조금은거칠지만 100페이지내외의전자책전용으로개발한서비스입니다. 독자에게는새로운정보를빨리얻을기회가되고, 자신이먼저경험한지식과정보를책으로펴내고싶지만너무바빠서엄두를못내는선배, 전문가, 고수분에게는좀더쉽게집필할수있는기회가될수있으리라생각합니다. 또한, 새로운정보와지식을빠르게전달하기위해 O'Reilly의전자책번역서비스도하고있습니다. 2 무료로업데이트되는전자책전용서비스입니다 종이책으로는기술의변화속도를따라잡기가쉽지않습니다. 책이일정분량이상으 로집필되고정리되어나오는동안기술은이미변해있습니다. 전자책으로출간된이 후에도버전업을통해중요한기술적변화가있거나저자 ( 역자 ) 와독자가소통하면서보완하여발전된노하우가정리되면구매하신분께무료로업데이트해드립니다.

12 3 4 독자의편의를위해 DRM-Free 로제공합니다 구매한전자책을다양한 IT 기기에서자유롭게활용할수있도록 DRM-Free PDF 포맷으로제공합니다. 이는독자여러분과한빛이생각하고추구하는전자책을만들어나가기위해독자여러분이언제어디서어떤기기를사용하더라도편리하게전자책을볼수있도록하기위함입니다. 전자책환경을고려한최적의형태와디자인에담고자노력했습니다종이책을그대로옮겨놓아가독성이떨어지고읽기어려운전자책이아니라, 전자책의환경에가능한한최적화하여쾌적한경험을드리고자합니다. 링크등의기능을적극적으로이용할수있음은물론이고글자크기나행간, 여백등을전자책에가장최적화된형태로새롭게디자인하였습니다. 앞으로도독자여러분의충고에귀기울이며지속해서발전시켜나가겠습니다. 지금보시는전자책에소유권한을표시한문구가없거나타인의소유권한을표시한문구가있다면위법하게사용하고있을가능성이큽니다. 이경우저작권법에따라불이익을받으실수있습니다. 다양한기기에사용할수있습니다. 또한, 한빛미디어사이트에서구매하신후에는횟수에관계없이내려받으실수있습니다. 한빛미디어전자책은인쇄, 검색, 복사하여붙이기가가능합니다. 전자책은오탈자교정이나내용의수정 보완이이뤄지면업데이트관련공지를이메일로알려드리며, 구매하신전자책의수정본은무료로내려받으실수있습니다. 이런특별한권한은한빛미디어사이트에서구매하신독자에게만제공되며, 다른사람에게양도나이전은허락되지않습니다.

13 차례 Part 1 크로스플랫폼프로젝트 001 chapter 1 SDL SDL SDL과 SDL Extension 주요내용 게임관련크로스플랫폼프레임워크비교 정리 007 chapter 2 안드로이드 NDK 프로그래밍 JNI 안드로이드프로젝트설정 샘플 NDK 프로젝트 015 chapter 3 크로스플랫폼프로젝트작성 HelloSDL 메인코드 안드로이드 SDL_main 함수호출과정 정리 024 chapter 4 빌드시스템구성 프로젝트구성 정리 028

14 chapter 5 GUI 라이브러리의활용 Guichan SDLGUI 프로젝트 안드로이드빌드 정리 036 chapter 6 미디플레이어의제작 TiMidity 사운드폰트 코드의구현 안드로이드에서미디파일실행하기 정리 043 chapter 7 IMS 플레이어의제작 코드구현 메인스레드와콜백스레드와의동기화 iconv 라이브러리 TTF 폰트의사용 정리 057

15 Part 2 게임프로그래밍 059 chapter 8 OpenTyrian 빌드를위한사전준비 소스분석 정리 065 chapter 9 Alien Blaster 게임구조 입력처리 오브젝트상호작용처리및충돌관련처리 렌더링 정리 078 chapter 10 Arkanoid 게임소스 코드분석 정리 086 chapter 11 Snake Bite SDL 2.0 마이그레이션 게임구조 정리 093

16 chapter 12 Super Mario SDL 2.0 마이그레이션 안드로이드포팅 정리 098 chapter 13 Socoban 소스코드변경작업 코드리팩토링 안드로이드포팅 정리 105 chapter 14 Pacman SDL 2.0 마이그레이션 소스분석 안드로이드포팅 정리 112 chapter 15 SDL 게임엔진 코난게임 안드로이드포팅 타일드맵의사용 정리 118

17 Part 3 활용하기 119 chapter 16 SDL_net 채팅서버 채팅클라이언트 정리 125 chapter 17 SDL_gfx SDL_gfx 샘플예제 SDL_gfx 실전 정리 135 chapter 18 SDL_ttf 137 chapter 19 특정영역에 SDL 화면출력하기 balor 라이브러리 SDL 화면의출력 정리 145 chapter 20 SDL + Windows GUI + FFmpeg FFmpeg SDLMPEGPlayer 정리 153

18 chapter 21 동기화 155 chapter 22 에러보고시스템구축 콜스택 ACRA 정리 167 chapter 23 SDL Migration 구조체와 enum값 변경된메서드 삭제된메서드 Visual Studio 2013 포팅 정리 172 chapter 24 기타 TinyGUI AntTweakBar 도스박스 ScummVM 175 chapter 25 맺음말 181

19 Part 1 크로스플랫폼프로젝트 특정플랫폼에서동작하는애플리케이션을제작하기위해서는특정플랫폼의 CPU가해석할수있는어셈블리코드를생성할수있어야한다. 이런어셈블리코드는컴파일러가만들어내며, 해당플랫폼에종속적인기계어를만들어낸다. 한편 C++ 나 C로작성된코드는플랫폼종속적인컴파일러에의해어셈블리코드로변환된다. 다르게말하자면 C/C++ 로작성된코드는플랫폼독립적이기때문에여러플랫폼에서그대로사용할수있다. 그렇다하더라도화면렌더링이나사운드출력같은 API는플랫폼마다다른형태로제공되기때문에크로스플랫폼앱을제작한다면플랫폼별로동작하는코드를작성해야한다. #ifdef WIN32 #else if ANDROID #endif

20 하지만이와같은코드를작성하는것은매우성가신일이며특정플랫폼에대한지식이있어야가능하다. SDL은이런부분, 즉사운드처리나화면렌더링, 입력장치등을각플랫폼에따라개별적으로미리구현해놓았기때문에개발자가 SDL을사용하여멀티미디어애플리케이션을제작한다고해도해당플랫폼을자세하게알필요가없다. 이번파트에서는크로스플랫폼을가능하게해주는 SDL에대해자세히살펴본다. 그리고안드로이드플랫폼에서 SDL로제작한애플리케이션이어떤원리로동작하는지살펴보고안드로이드애플리케이션을빌드하기위한빌드시스템구축에대해살펴본다. 또한몇가지멀티미디어애플리케이션을제작하여본격적인 SDL 프로그래밍을시작해본다

21 chapter 1 SDL SDL Simple Direct Media Layer 은크로스플랫폼프로그래밍을위한멀티미디어라이브러리다. SDL은비디오, 오디오, 사용자입력등을추상화했기때문에해당라이브러리로구현한소스를여러플랫폼으로거의수정없이포팅하는것이가능하다. 즉, 한플랫폼에서 SDL을사용하여프로그램을개발하면별다른비용없이다른플랫폼에쉽게이식할수있다는뜻이다. 이것이가능한이유는플랫폼종속적인부분을 SDL 내부에서모두처리하기때문이다. SDL은 C로구현되었으며 C/ C++ 개발환경에서활용할수있다. 1.1 SDL 2.0 SDL은 1.x 버전이주류를이루다가 2.0 버전으로업데이트되었는데, 이책에서는 SDL 2.0 기준으로설명하겠다. 2.0 버전으로업데이트되면서추가된특징은다음과같다. 다중윈도우창생성가능 오디오캡처기능추가 멀티스레드관련기능향상 여러입력장치지원 다양한오디오장치출력지원 특정렌더타깃지정가능 하드웨어가속기능지원 1 SDL - 003

22 이외에도업데이트되면서많은부분이향상되었으나아직 SDL을사용하는프로젝트모두가 2.0 버전으로마이그레이션된것은아니다. 파이썬에서 2.x 버전과 3.x 버전이공존하고있는것처럼 SDL도 1.x 버전과 2.0 버전을둘다사용하고있다. SDL 1.x 버전을사용하는대표적인프로젝트로 ScummVM 프로젝트를들수있다. 하지만기능이나성능면에서 2.0 버전이훨씬뛰어나고좀더안정화되었으므로신규프로젝트를개발하거나 SDL 프로그래밍에입문한다면 SDL 2.0으로프로그래밍하는것을권장한다. 1.2 SDL 과 SDL Extension SDL이멀티미디어나게임개발을위한대부분기능을지원하지만더강력한기능을지원하기위해확장모듈이나오게되었다. 이런확장모듈은 SDL 라이브러리에모두포함될수있었지만 SDL 라이브러리의경량화를위해 SDL에추가하지않았으며별도의모듈로분리하여기능을제공하고있다. 이런확장모듈에는 [ 표 1-1] 과같이다양한라이브러리가있다. 표 1-1 SDL 과 SDL 확장모듈 SDL 모듈설명사이트주소 SDL 비디오및오디오처리를위한기본 API 제공 SDL_mixer 복잡한사운드처리를위한모듈 SDL_ttf 트루타입폰트출력지원 SDL_net 네트워킹라이브러리 SDL_rtf 서식있는텍스트포맷렌더링 SDL_image 다양한이미지파일처리지원 SDL_gfx 점, 선등의기본프리미티브렌더링지원

23 SDL은기본적으로 2D만을지원하는프레임워크지만 OpenGL을활용하면 3D 프로그래밍도가능하다. 또한, 앞으로 SDL 자체에서 3D 기능을지원할예정이다. 앞에서언급했지만이책에서는최신버전인 SDL 2.0을기준으로설명한다. SDL 관련참고소스를찾아보면 1.2 버전이많은데 1.2 버전의소스를활용한다면 2.0 버전으로마이그레이션하는것을권장한다. 1.x 버전에서 2.0 버전으로마이그레이션하는내용에대해서는마이그레이션가이드 01 를참조하기바란다. 또한, 이책에서 1.x 버전에서 2.0 버전으로포팅할때중요하게고려해야될사항을별도로정리했으니해당부분 (23장) 을참조하기바란다. SDL_gfx와 SDL_rtf 모듈은책을쓴시점에서 2.0으로마이그레이션된버전이존재하지않는다. 이책에서사용하는 SDL_gfx 라이브러리는필자가 2.0에서동작할수있도록수정한것이다. SDL_mixer 라이브러리또한안드로이드플랫폼에서동작할수있도록수정했다. SDL 확장모듈은해당사이트에서다운로드할수있지만책을쓰는시점에서라이브러리의버전이변경되었을가능성이있고설정이번거롭기때문에미리라이브러리를다운로드하여바로컴파일할수있도록소스트리를구성했다. 책에서제공하는샘플프로젝트는 Visual Studio 2013과 ADT로특별한설정없이빌드가가능하다 ( 안드로이드의경우빌드가되지않는일부프로젝트가있으며계속해서소스를수정하고있다 ). 1.3 주요내용 이책은 SDL 2.0 프로그래밍을위해관련 API 에대해설명을하지만세세한설 명은하지않는다. API 자체에대해설명하면 SDL 에대한레퍼런스책이되기때 SDL - 005

24 문이다. 이책에서중점을두는내용은다음과같다. SDL 2.0 프로그래밍 SDL 크로스플랫폼을위한환경설정 SDL을활용한레거시코드의재사용 SDL 게임프로그래밍 SDL 멀티미디어프로그래밍 SDL WIN32 프로그래밍 즉, SDL 자체에중점을두기보다 SDL을활용해서실전에적용할수있는내용을소개하는데중점을두었다. 그래서장마다완성된프로젝트에대한설명이주를이룬다. 물론이과정에나오는 SDL 관련내용중중요하다고생각하는내용에대해서는별도로설명을할애한다. SDL 관련 API 레퍼런스는공식홈페이지를참조하기바란다. 1.4 게임관련크로스플랫폼프레임워크비교 앞에서 SDL을사용하면크로스플랫폼프로그래밍이가능하다고언급했다. 특히 SDL은게임관련크로스플랫폼프로그래밍을하기에매우유용한라이브러리다. 게임제작을위한크로스플랫폼, 즉윈도우나안드로이드, ios 플랫폼에서개발가능한툴과프레임워크는수없이존재한다. Unity3D나 Cocos2d-x 등이대표적이라할수있는데, 이들과 SDL을비교하여 SDL만의장점을확인해보자. 표 1-2 게임관련크로스플랫폼프레임워크비교 프레임워크장점단점 Unity3D - 고품질의 3D 게임을쉽게제작할수있으며, 2D도지원한다. - 애셋스토어가있어서다양한리소스를쉽게얻을수있다. - 게임개발에특화된툴이다. - C# 이주언어라레거시코드를이식하기어렵다

25 프레임워크장점단점 Cocos2d-x SDL - 2D 게임개발을위한크로스플랫폼프레임워크다. - C++ 가기본언어이므로 C++ 라이브러리를손쉽게재활용할수있다. - C++ 로개발하므로레거시 C++ 코드를손쉽게이식할수있다. - Unity3D와마찬가지로게임과교육용소프트웨어개발에특화된프레임워크다. - 기존의 C++ 게임소스를포팅할때상당부분의코드를수정해야한다. - 앞의두플랫폼에비해저수준의 API 를제공하므로필요한기능을새로구축해야한다. SDL은멀티미디어라이브러리긴하지만다른멀티미디어프레임워크처럼많은기능을제공하지는않는다. 하지만이부분은단점이자곧장점이될수있다. 이는기존레거시코드의포팅과관련이있다. 기존레거시코드를 Unity3D나 Cocos2d-x에포팅한다면언어자체를바꾸거나프레임워크의양식에맞게코드를전면수정해야한다. 그러나 SDL을사용하면기존코드의수정을최소화해서개발할수있다. 레거시코드는보통 C나 C++ 로제작되었기때문에이런코드를 Unity로변경하는것은꽤수고로운작업이된다 ( 물론플러그인형태로개발하면 C++ 코드를재활용할수있으나매우번거로운작업이될것이다 ). SDL을사용하면이런부분에서비용을최소화할수있다. 또한, SDL로제작된샘플코드가매우풍부하므로애플리케이션을제작할때조금더수월하게프로그램을개발할수있다. 1.5 정리 지금까지 SDL 라이브러리의개념과강점, SDL 확장모듈에대해간략히살펴봤다. SDL도세상에나온지꽤시간이흘러서조금은시대에뒤처진라이브러리가되어가고있는지도모르겠다. 하지만이책을읽고나면 SDL이사용하기편하며아직크로스플랫폼용라이브러리로서제역할을발휘하고있다는것을느끼게될것이다. 또한, 이책을통해 SDL이게임과궁합이좋다는것을보여주고자한다. 내용이크게어렵지않은만큼이책의마지막까지잘따라올수있으리라믿는다. 1 SDL - 007

26 chapter 3 크로스플랫폼프로젝트작성 HelloSDL2 앞장에서안드로이드 NDK 프로그래밍방법을배웠다. 이제본격적으로윈도우와안드로이드플랫폼이통합된 SDL 프로그래밍을시작하자. 모든프로그래밍언어는 HelloWorld 문자열을출력하는튜토리얼부터시작하지만, SDL은그래픽라이브러리이므로그림파일로이미지를출력하는예제부터시작하겠다. Project/02_HelloSDL2/win32 경로에서 HelloSDL2.sln 솔루션파일을실행하자. 3.1 메인코드 다음코드는 BMP 이미지파일을출력하는소스로, Hello.bmp라는이미지를로드하여화면에출력한다. 간단한코드지만이코드의구조를이해한다면차후진행할 SDL 프로젝트도무리없이진행할수있다. 코드에서주목해야할점은타깃플랫폼에해당하는진입경로의설정이다. Main.cpp 파일을살펴보자. [Main.cpp] // 윈도우개발환경일경우추가헤더를포함하도록한다. #ifdef WIN32 #include <Windows.h> #include <tchar.h> #endif // 라이브러리를링크할때프로젝트파일에추가하기보다는소스코드에링크지시어를둬서라이브러리를링크하도록한다. #ifdef WIN32 3 크로스플랫폼프로젝트작성 HelloSDL2-019

27 #pragma comment(lib, SDL2.lib ) #endif // 윈도우환경에서의메인엔트리는 main 함수지만안드로이드에서는진입점이다르다. #ifdef WIN32 #else #endif { int _tmain(int argc, _TCHAR* argv[]) extern C int SDL_main(int argc, char *argv[]) //SDL 을초기화한다. if (SDL_Init(SDL_INIT_EVERYTHING)!= 0){ std::cout << SDL_Init Error: << SDL_GetError() << std::endl; return 0; //SDL 2.0 부터는여러개의윈도우를화면에띄우는것이가능하다 // 윈도우와렌더러객체가분리되었으나안드로이드의경우여러개의윈도우를 띄울일이없다. SDL_Window *pwindow; SDL_Renderer *prenderer; #ifndef WIN32 #else #endif if (SDL_CreateWindowAndRenderer(0, 0, SDL_WINDOW_FULLSCREEN, &pwindow, &prenderer) < 0) if (SDL_CreateWindowAndRenderer(640, 480, 0, &pwindow, &prenderer) < 0) { std::cout << SDL_CreateWindowAndRenderer Error: << SDL_GetError() << std::endl; return 0; //hello.bmp라는이미지파일을 SDL_Surface 객체에로드한다. SDL_Surface *phellowbmp = SDL_LoadBMP( hello.bmp ); if (phellowbmp == 0) { SDL_DestroyRenderer(pRenderer); SDL_DestroyWindow(pWindow); std::cout << SDL_LoadBMP Error: << SDL_GetError() << std::endl; return 0; 020 -

28 // 이미지를렌더러에복사하기위해서는텍스처를생성해야한다. // 조금전에이미지를로드한 SDL_Surface 객체를사용해텍스처객체를생성한다. SDL_Texture *ptexture = SDL_CreateTextureFromSurface(pRenderer, phellowbmp); SDL_FreeSurface(pHellowBMP); if (ptexture == 0) { SDL_DestroyRenderer(pRenderer); SDL_DestroyWindow(pWindow); std::cout << SDL_CreateTextureFromSurface Error: << SDL_GetError() << std::endl; return 0; bool running = true; // 사용자입력을받는코드다. // 윈도우의경우 Escape 키를누르면해당루프를벗어날수있다. while (running) { SDL_Event event; // 이벤트를조회한다. while (SDL_PollEvent(&event)) { if (event.type == SDL_KEYDOWN) { if (event.key.keysym.sym == SDLK_ESCAPE) { running = false; else if (event.type == SDL_QUIT) { running = false; // 화면클리어 SDL_RenderClear(pRenderer); // 렌더러에텍스처를복사 SDL_RenderCopy(pRenderer, ptexture, NULL, NULL); // 화면을출력한다. SDL_RenderPresent(pRenderer); 3 크로스플랫폼프로젝트작성 HelloSDL2-021

29 // 생성한객체를모두제거한다. SDL_DestroyTexture(pTexture); SDL_DestroyRenderer(pRenderer); SDL_DestroyWindow(pWindow); SDL_Quit(); 윈도우에서는프로세스실행엔트리함수가 main 이지만안드로이드는 SDL_main 함수가프로그램의시작점이된다. 안드로이드의경우를조금더살펴보자. 3.2 안드로이드 SDL_main 함수호출과정 안드로이드프로그램은보통자바로작성되며생명주기를가진 Activity 라는자바객체로부터프로그램이시작된다. HelloSDL2 프로젝트의경우 SDLActivity라는자바객체가존재하는데, 이객체가프로그램의시작점인것이다 (Project/02_HelloSDL2/android/src/org/libsdl/app 경로에해당파일이있다 ). 해당파일은이책전반에걸쳐소스코드가수정될일은거의없다. main.cpp처럼콘텐츠구현부분에만신경쓰면될뿐안드로이드프로그래밍을위한구조를알필요는없다. 하지만 SDL_Main 함수가호출되는대략적인과정은이해할필요가있다. 우선 Activity 객체가초기화되면공유오브젝트라이브러리를로드한다. System.loadLibrary( SDL2 ); System.loadLibrary( main ); 이라이브러리는프로젝트빌드시 NDK 가생성하는공유오브젝트라이브러리 로, 라이브러리가로드되고난후 Activity 클래스에서는 oncreate 메서드가 호출되는데이때화면출력을위한구성을준비한다

30 protected void oncreate(bundle savedinstancestate) { SDLActivity.initialize(); oncreate 메서드호출이후 surfacechanged 메서드가호출된다. surface Changed 메서드는화면해상도가갱신될때호출되며, 이시점에서별도의스레드를생성하여 SDLMain 객체를실행하고 SDLMain 객체는 SDLActivity의 nativeinit 메서드를호출한다. 이 nativeinit 메서드를통해자바는 C++ 의메서드를호출하게되며최종으로 C++ 의 SDL_main 함수를호출하게된다. SDLActivity 시작 : 공유오브젝트라이브러리로드 SDLActivity surfacechanged 메서드호출 : 별도의스레드를생성하여 SDLActivity 의 nativeinit 메서드호출여기까지가자바코드로실행되는부분이다. nativeinit 메서드는 JNI를통해해당이름과매칭되는 C++ 의적절한메서드를찾는다. SDLActivity의패키지이름은 org.libsdl.app로, 이패키지이름과메서드이름을조합하여 C++ 네이티브함수를찾게되며이함수는 SDL2 라이브러리에구현되어있다. 그리고이함수는결국 SDL_Main 함수를호출하기때문에 ( 내부에서 extern으로선언되어있다 ) SDL_Main 함수를구현하기만하면그결과를안드로이드기기에서확인할수있다. 다만안드로이드와윈도우환경은조금씩차이가있으므로주의하여프로그래밍해야한다. 예를들어, 안드로이드에서특정파일을 fopen 함수로읽으려고하면실패한다. 안드로이드앱은단일한파일 (APK) 로구성되어있어서특정파일을찾을수없기때문이다. 다행히 SDL에서는압축된 APK 파일내부의리소스를찾을수있는메서드를제공하고있기때문에별도로압축파일을읽거나쓰는루틴을구현할필요는없다. 3 크로스플랫폼프로젝트작성 HelloSDL2-023

31 3.3 정리 이제 SDL로윈도우와안드로이드에서동시에개발할수있는프로그램을작성할수있는이론적토대를마련하였다. 두플랫폼에서각각빌드하여그림이미지가제대로출력되는지확인하자. 다음장부터는빌드환경설정에따른시간낭비에서벗어나실제코드구현에집중한다

32 Part 2 게임프로그래밍 크로스플랫폼프로그래밍과밀접하게관련된분야를꼽으라면단연게임개발분야를들수있다. 2000년대초반까지만하더라도게임은대부분윈도우용으로개발되었지만기기의성능이높아지고다양한 OS와플랫폼이등장함에따라특정 OS에종속된 API로게임개발하는것을지양하게되었다. 또한, Unity와 Cocos2d-x, 언리얼엔진 4 덕택에게임개발자는손쉽게윈도우, 안드로이드, 아이폰등에서동작하는애플리케이션을손쉽게개발할수있게되었다. 이런상황에서 SDL 로게임을개발하는것은굉장히비효율적이다. 물론 SDL로게임을제작한다면각플랫폼으로이식하는데드는비용이그렇게많이들지않는다. 하지만게임을동작하게하는기능외에해당기기에특화된기능을활용할수있는라이브러리가매우부실해서상용게임을제작하고자한다면 SDL의선택은좋지않다. 하지만기존에제작했던레거시게임코드를최소한의수정으로여러플랫폼에이식하고자한다면어떠할까? Cocos2d-x, Unity 등으로는쉽지않은작업이지만 SDL로는최소한의수정으로여러플랫폼에이식할수있다. 또한, Unity 같은툴을사용한다면프로그램의내부동작을파악하기어

33 렵지만 SDL을사용하면극단적으로이야기해서어셈블리코드수준까지제어가가능하다. Unity 같은툴은개발에편리성을높여주었지만그만큼개발자의자유도를빼앗았다. 편리성이높아지면그만큼자유도가떨어지는것은비단프로그래밍의영역뿐만이아니다. 일상생활의경우를예로들면, 자동차는이동의편리성을높여주지만좁은골목길로이동하는것은어렵다. 하지만도보로는이런골목길도막힘없이걸을수있다. SDL로게임프로그래밍을한다는것은골목길을걷는것과같은맥락으로볼수있다. 이번파트에서는오픈타이리언, 에일리언블래스터, 알카노이드, 스네이크바이트, 슈퍼마리오, 소코반, 팩맨, 코난등의게임을소개하면서오래된게임소스의포팅, 최신 SDL 버전으로의마이그레이션방법등을살펴보겠다. 또한, 게임의로직을설명하면서 SDL과 C++ 조합을살펴본다

34 chapter 10 Arkanoid 알카노이드 Arkanoid 라는게임을알것이다 년대에나온게임으로벽돌을공 으로전부깨서스테이지를클리어하는게임이다. 공을바닥으로떨어뜨리면죽게 되므로반사신경이꽤중요한게임이다. 그림 10-1 알카노이드게임화면 10.1 게임소스 알카노이드게임소스는인터넷에서쉽게구할수있다. 그중에서 C++ 와애플의 Xcode 로작성된게임소스를포팅하기로결정했다. 게임의원본소스는다음링 10 Arkanoid - 079

35 크에서알카노이드소스를확인할수있다. 코드의원작자인 Maciej Żurad( 폴란드 ) 에게코드사용에대한허가를받았기때 문에이번장에서는게임소스에대해자세히설명하고자한다. 해당게임소스는 SDL 을사용했기때문에샘플코드로사용하기에안성맞춤이라고생각한다. 그림 10-2 알카노이드게임화면 10.2 코드분석 이번알카노이드프로젝트는게임이라는점과게임이 C++ 와궁합이잘맞는다는 것을고려하여게임구조에대해설명하고자한다. 전체게임구조는다음과같다

36 그림 10-3 게임상태 UML 클래스다이어그램 알카노이드프로젝트에서상태는 메뉴상태 와 게임상태 2 가지가있다. [ 그림 10-4] 는타이틀화면으로, 타이틀화면의상태는 MenuState 며 [START GAME] 버튼을누르면상태는 PlayingState, 즉게임상태로전이된다. 그림 10-4 메뉴화면 메뉴상태에서입력이어떻게처리되는지살펴보자. [ 코드 10-1] 은유저입력을 처리하는가상함수인 HandleEvent 메서드의구현내용이다. 10 Arkanoid - 081

37 [ 코드 10-1] MenuState의 HandleEvent 메서드 void MenuState::HandleEvents(Uint8* keystates, SDL_Event event, int control_ type){ // 마우스좌표를얻어온다. SDL_GetMouseState(&mouse_pos_x, &mouse_pos_y); switch (curmenu) { // 옵션메뉴에서 ESC 키를누르면메인메뉴화면으로돌아간다. case OPTIONS: if (keystates[sdl_getscancodefromkey(sdlk_escape)]){ GotoMainMenu(); return; // 최고점수화면에서 ESC키를누르면메인메뉴화면으로돌아간다. case HIGHSCORES: if (keystates[sdl_getscancodefromkey(sdlk_escape)]){ GotoMainMenu(); return; // 게임메인으로진입하거나옵션메뉴로진입한다. if(event.type == SDL_MOUSEBUTTONUP){ if(event.button.button == SDL_BUTTON_LEFT){ switch (curmenu) { case MAIN_MENU: RunCommand(menu_main); break; case OPTIONS: RunCommand(menu_options); break; default: break; 키보드의상태를얻어올때는 1.x 버전의경우 keystates[sdlk_escape] 형 태였지만 2.0 버전에서는키를 keystates[sdl_getscancodefromkey(sdlk_ 082 -

38 ESCAPE)] 형태의스캔코드로변환해야됨을잊지말자. RunCommand(menu_main); 이코드를통해리스트인 menu_main 에등록된함수포인터 startgame 이실행 되며함수포인터 startgame 은 ChangeState 함수를가리키고있다. Change State 함수는다음과같다. [ 코드 10-2] ChangeState 함수 void ChangeState(){ //Game 객체는게임전반에서유지되는전역객체다. // 이객체의내부상태를변경해서메뉴, 메인게임의상태로변경한다. Game* game = g_gameptr; // 현재게임객체의상태가게임플레이상태였을경우메뉴상태로전환한다. if (game->current_state == PLAYING){ game->current_state = MENU; delete game->game_state; game->game_state = new MenuState(); game->game_state->initstate(); // 현재게임객체의상태가메뉴였다면게임플레이상태로전환한다. else if (game->current_state == MENU){ game->current_state = PLAYING; delete game->game_state; game->game_state = new PlayingState(); game->game_state->initstate(); [ 코드 10-2] 의 ChangeState 함수를보면알겠지만 Game 객체는전형적인 State Design Pattern을활용하고있다. 객체의내부상태가 MENU에서 PLAYING으로바뀌면서슬롯카드를교체하듯이 Game 객체의상태는 PlayingState 객체로변경되는데, 상태가바뀌면서 InitState 메서드로게임을초기화한다. 이제게임상태가 PLAYING일때의코드를살펴보자. 10 Arkanoid - 083

39 [ 그림 10-5] 는게임에서쓰이는타일이나아이템, 플랫폼, 공에관한클래스다이 어그램이다. 그림 10-5 게임객체관련클래스다이어그램 알카노이드게임을구현하기위해등장하는게임객체는 5가지다. 벽돌, 타일, 공과아이템, 그리고우리가조종하는플랫폼은알카노이드게임을구성하는필수구성요소다. 각각의게임객체는 GameObject 클래스를상속하고있으며다음네가지가상메서드를구현해야한다. 표 10-1 GameObject 클래스의가상메서드 메서드 설명 Render 게임객체를렌더링한다. Init 게임객체를초기화한다. Destroy 게임객체를소멸시킨다. Update 게임객체의상태를갱신한다. 각게임객체의상태가렌더링되거나갱신되는과정은해당메서드를살펴보자. 여기서는 Ball 객체의 Render 메서드만살펴보겠다. [ 코드 10-3] Ball 객체의 Render 메서드 void Ball::Render(){ if(isalive()){ GameObject::Render(); if(animation) animation Draw(x-boundX,y-boundY); 084 -

40 실제볼을그리는 Draw 메서드를살펴보자. [ 코드 10-4] Draw 메서드 void Animation::Draw(float x, float y) const { SDL_Rect offset = {(Sint16)x, (Sint16)y, 0, 0; SDL_BlitSurface(image, clip, g_game.getscreen(), &offset); 이메서드는 SDL_BlitSurface 함수를호출하여글로벌화면영역에볼을그린 다. image 변수는 Ball 과관련된이미지를담고있다. 그림 10-6 볼이미지 볼이미지는단일이미지로구성되었기때문에 SDL_Rect 타입의 clip 변수는이 미지그자체의영역과같다. offset 은화면에그려질좌표를의미한다. 그런데벽돌을격파해서내려오는아이템과같은이미지는상황이달라서, 애니메이션효과를위해 clip 값이계속변한다. [ 그림 10-7] 의경우 11개의이미지프레임이존재하며가로 세로가 10 10이라고가정하면 5프레임째의 clip 영역은좌표가 (40, 0) 가로, 세로가 (10, 10) 이된다. 이런식으로아이템은특정프레임에필요한게임이미지를클립하여애니메이션효과를구현한다. 그림 10-7 아이템이미지 세부사항에대해서는게임을디버깅하면서코드를분석해보면이해할수있으리 라생각한다. 정리하는차원에서지금까지설명한클래스전체에대한클래스다 이어그램을살펴보자. 10 Arkanoid - 085

41 그림 10-8 알카노이드클래스다이어그램 PlayingState 클래스는내부변수로 GameObject 객체의관리를위한리스트를유지하고있다. 이리스트로게임객체를업데이트하는동시에렌더링도가능하다. PlayingState 클래스를개선하면자신만의알카노이드게임을구현할수있다 정리 알카노이드게임은 SDL을활용한간단한 2D 게임을제작하기에안성맞춤인샘플이다. 비록게임을제작하는데 Cocos2d-x나 Unity3D에비해다소불편한점이있으나그차이가그렇게큰건아니다. 또한, 언급한두프레임워크보다레거시코드의활용이더쉽다. 레거시코드를 Cocos2d-x나 Unity3D에이식한다면수정사항이매우많아질것이다 (Cocos2d-x의경우 C++ 를사용한다하더라도해당프레임워크에맞게코드를전면재수정해야한다 ). 따라서간단한 2D 게임을제작하는경우 SDL을활용하는것도충분히경쟁력이있으며고려해볼만하다. 게다가 SDL은앞에서언급한두프레임워크처럼 ios나윈도우폰을모두지원하는라이브러리다

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

URL Shortener 프로젝트로 배우는 Vert.X 프레임워크

URL Shortener 프로젝트로 배우는 Vert.X 프레임워크 Hanbit ebook Realtime 95 URL Shortener 프로젝트로배우는 Vert.x 프레임워크 김요한지음 URL Shortener 프로젝트로배우는 Vert.x 프레임워크 김요한지음 URL Shortener 프로젝트로배우는 Vert.X 프레임워크 초판발행 2015 년 4 월 10 일 지은이김요한 / 펴낸이김태헌펴낸곳한빛미디어 ( 주 ) / 주소서울시마포구양화로

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD> 2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)

More information

슬라이드 1

슬라이드 1 2007 년 2 학기윈도우게임프로그래밍 제 7 강프레임속도의조절 이대현 핚국산업기술대학교 학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용핚다. FPS(Frame Per Sec)

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

슬라이드 1

슬라이드 1 핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

SIGIL 완벽입문

SIGIL 완벽입문 누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS

More information

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2> 게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력

More information

4S 1차년도 평가 발표자료

4S 1차년도 평가 발표자료 모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components

More information

vRealize Automation용 VMware Remote Console - VMware

vRealize Automation용 VMware Remote Console - VMware vrealize Automation 용 VMware Remote Console VMware Remote Console 9.0 이문서는새버전으로교체되기전까지나열된각제품버전및모든이후버전을지원합니다. 이문서에대한최신버전을확인하려면 http://www.vmware.com/kr/support/pubs 를참조하십시오. KO-002230-00 vrealize Automation

More information

Studuino소프트웨어 설치

Studuino소프트웨어 설치 Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...

More information

슬라이드 1

슬라이드 1 한국산업기술대학교 제 4 강프레임리스너 (Frame Listener) 이대현교수 학습안내 학습목표 프레임리스너를이용하여게임루프를구현하는방법을이해한다. 오우거엔짂의키입력처리방식을이해한다. 학습내용 프레임리스너의개념프레임리스너를이용한게임캐릭터의이동캐릭터의이동속도조절 OIS 입력시스템을이용한키보드입력의처리 기본게임루프 Initialization Game Logic

More information

Microsoft PowerPoint - 권장 사양

Microsoft PowerPoint - 권장 사양 Autodesk 제품컴퓨터사양 PRONETSOFT.CO 박경현 1 AutoCAD 시스템사양 시스템요구사양 32 비트 AutoCAD 2009 를위한시스템요구사항 Intel Pentium 4 프로세서 2.2GHz 이상, 또는 Intel 또는 AMD 듀얼 코어프로세서 16GH 1.6GHz 이상 Microsoft Windows Vista, Windows XP Home

More information

안전한 웨 애플리케이션을 위한 자바스크립트 보안

안전한 웨 애플리케이션을 위한 자바스크립트 보안 119 안전한웹애플리케이션을위한 Y.E 리앙지음 / 박미정옮김 자바스크립트보안 119 안전한웹애플리케이션을위한 Y.E 리앙지음 / 박미정옮김 자바스크립트보안 이도서는 JavaScript Security(PACKT publishing) 의번역서입니다 표지사진김민국이책의표지는김민국님이보내주신풍경사진을담았습니다. 리얼타임은독자의시선을담은풍경사진을책표지로보여주고자합니다.

More information

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기 Mango-IMX6Q mfgtool 을 이용한이미지 Write 하기 http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology 1 Document

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

View Licenses and Services (customer)

View Licenses and Services (customer) 빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차

More information

PowerPoint Presentation

PowerPoint Presentation 언리얼엔진 4 모바일개발팁 신광섭 Developer Relations Lead / Programmer 에픽게임즈코리아 목차 Unreal Plugin Language 언리얼엔진 4 프로젝트 Android Studio 사용하기 (Java 빌드 / 디버깅 ) 모바일알려진이슈와팁 UE4 모바일지원에부족한부분은?( 피드백 ) Unreal Plugin Language

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx) w w w. g b t e c. c o. k r 6 안드로이드 App 적용하기 115 1. 안드로이드개요 모바일 OS 의종류 - 스마트폰 : 스마트폰운영체제탑재 애플의 IOS(iPhone OS) - 아이폰, 아이패드, 아이팟터치 구글의안드로이드 - Nexus, 갤럭시 A, S, 모토로이, 시리우스,... MS 의윈도우모바일 ( 윈도우폰 7) - 옴니아 2,

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java(  혹은   에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을 안드로이드설치및첫번째예제 안드로이드설치 안드로이드개발킷은안드로이드개발자사이트 (http://developer.android.com/) 에서다운로드받을수있으며현재 1.5 버전으로윈도우즈, 맥 OS X( 인텔 ), 리눅스플랫폼패키지가링크되어져있다. 안드로이드개발킷을설치하기위해서는다음과같은시스템환경이갖추어져있어야한다. 플랫폼 Windows Mac Linux 지원환경

More information

JDK이클립스

JDK이클립스 JDK 와이클립스설치 A. JDK 다운로드, 설치및환경설정 지금부터 JDK를다운로드받아설치하고 JDK를윈도우에서활용할수있도록환경을설정하는전과정을소개한다. 다운로드 www.oracle.com 사이트에접속하여 Downloads 메뉴를선택한후 [ 그림 1] 과같이 "Java for Developers" 를클릭한다. [ 그림 1] www.oracle.com 사이트

More information

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows

More information

오버라이딩 (Overriding)

오버라이딩 (Overriding) WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View

More information

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

PathEye 공식 블로그 다운로드 받으세요!!   지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye Mobile Ver. 0.71b 2009. 3. 17 By PathEye 공식 블로그 다운로드 받으세요!! http://blog.patheye.com 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye 설치 1/3 최종 배포 버전을 다 운로드 받습니다. 다운로드된 파일은 CAB 파일입니다. CAB 파일에는

More information

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

var answer = confirm( 확인이나취소를누르세요.); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write( 확인을눌렀습니다.); else { document.write( 취소를눌렀습니다.); 자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트

More information

클라우드컴퓨팅 주요법령해설서 2017. 11. 목차 3... 5 I... 15 II... 39 1. 공공분야... 41 2. 금융분야... 71 3. 의료분야... 81 4. 교육분야... 95 5. 신산업등기타분야... 101 III... 109 요약문 5, 15 3, 1 16~ 18 15 11 16 4, 16 7,,, 5 16 5, 16 7~10,,,

More information

Visual Studio online Limited preview 간략하게살펴보기

Visual Studio online Limited preview 간략하게살펴보기 11월의주제 Visual Studio 2013 제대로파헤쳐보기! Visual Studio online Limited preview 간략하게살펴보기 ALM, 언제어디서나 연결된 IDE Theme와 Visual Design 편집기의강화된생산성기능들성능최적화및디버깅개선 Microsoft 계정으로 IDE에서로그인가능다양한머신사이에서개발환경유지다양한디바이스에걸쳐설정을동기화개선된

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

(Microsoft PowerPoint - \301\24615\260\255 - \303\346\265\271\303\263\270\256)

(Microsoft PowerPoint - \301\24615\260\255 - \303\346\265\271\303\263\270\256) 게임엔진 제 15 강충돌처리 이대현교수 한국산업기술대학교게임공학과 학습목차 엔터티본구조의이해 콘솔입출력방법 본의위치좌표의획득 충돌오브젝트를이용한충돌처리기법 OgreOPCODE 를이용한충돌처리실습 본 (Bone) 뼈대애니메이션 (skeletal animation) 의기본구조. 위치와방향정보를가지고있는조인트. 본이여러개모여서 ( 트리구조 ) 하나의뼈대를이루게됨.

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

슬라이드 1

슬라이드 1 Gradle 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제 1. 도구개요 1.1 도구정보요약 도구명 소개 특징 Gradle (http://www.gradle.org) 소프트웨어빌드자동화도구 라이선스 Apache License v2.0 Gradle 을통해소프트웨어패키지나프로젝트의빌드, 테스팅, 퍼블리슁, 배포등을자동화할수있다. Ant 의유연성과기능을

More information

슬라이드 1

슬라이드 1 Subclipse 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제 1. 도구개요 도구명 Subclipse (http://subclipse.tigris.org/) 라이선스 Eclipse Public License v1.0 소개 Subversion( 이하 svn) 용 Eclipse 플러그인 SVN 을만든 Tigris.org 에서만든클라이언트툴 Java

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

Windows Live Hotmail Custom Domains Korea

Windows Live Hotmail Custom Domains Korea 매쉬업코리아2008 컨퍼런스 Microsoft Windows Live Service Open API 한국 마이크로소프트 개발자 플랫폼 사업 본부 / 차세대 웹 팀 김대우 (http://www.uxkorea.net 준서아빠 블로그) Agenda Microsoft의 매쉬업코리아2008 특전 Windows Live Service 소개 Windows Live Service

More information

C++ Programming

C++ Programming C++ Programming 상속과다형성 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 상속의이해 상속과다형성 다중상속 2 상속과다형성 객체의이해 상속클래스의객체의생성및소멸 상속의조건 상속과다형성 다중상속 3 상속의이해 상속 (Inheritance) 클래스에구현된모든특성 ( 멤버변수와멤버함수 )

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4> 쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 통합개발환경 통합개발환경 (IDE: integrated development environment) 에디터 + 컴파일러 + 디버거 Visual C++: 이클립스 (eclipse): Dev-C++: 마이크로소프트제작 오픈소스프로젝트 오픈소스프로젝트 통합개발환경의종류 비주얼 C++(Visual C++)

More information

Microsoft PowerPoint - 2-Objective-C 기초

Microsoft PowerPoint - 2-Objective-C 기초 클래스와오브젝트 메모리관리 순천향대학교컴퓨터공학과이상정 1 Objective-C 소개 C 언어에 Smalltalk 스타일의메시지전달을결합한객체지향프로그래밍언어 Objective-C 와코코아는 Mac OS X 운영체제의핵심 개발역사 1980 년대초에 Stepstone 사의 Brad Cox 와 Tom Love 가개발 1985년에 Steve Jobs가저렴한워크스테이션개발을위해

More information

MVVM 패턴의 이해

MVVM 패턴의 이해 Seo Hero 요약 joshua227.tistory. 2014 년 5 월 13 일 이문서는 WPF 어플리케이션개발에필요한 MVVM 패턴에대한내용을담고있다. 1. Model-View-ViewModel 1.1 기본개념 MVVM 모델은 MVC(Model-View-Contorl) 패턴에서출발했다. MVC 패턴은전체 project 를 model, view 로나누어

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 15 고급프로그램을 만들기위한 C... 1. main( ) 함수의숨겨진이야기 2. 헤더파일 3. 전처리문과예약어 1. main( ) 함수의숨겨진이야기 main( ) 함수의매개변수 [ 기본 14-1] main( ) 함수에매개변수를사용한예 1 01 #include 02 03 int main(int argc, char* argv[])

More information

윈도 모바일 6.1을 OS로 사용하는 스마트폰(옴니아2 등)에서의 Tcl/Tk의 사용

윈도 모바일 6.1을 OS로 사용하는 스마트폰(옴니아2 등)에서의 Tcl/Tk의 사용 일, 12/27/2009-18:11 bonkora 첨부 파일 1.png [1] 2.png [2] 3.png [3] 4.png [4] 5.png [5] 6.png [6] 7.png [7] 8.png [8] 9.png [9] 10.png [10] 11.png [11] study4etcl.zip [12] 파일 크기 11.91 KB 19.69 KB 21.67 KB

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode] Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

슬라이드 1

슬라이드 1 모바일소프트웨어프로젝트 지도 API 1 조 20070216 김성수 20070383 김혜준 20070965 이윤상 20071335 최진 1 매시업? 공개 API? 2 매시업 웹으로제공하고있는정보와서비스를융합하여새로운소프트웨어나서비스, 데이터베이스등을만드는것 < 최초의매시업 > 3 공개 API 누구나사용할수있도록공개된 API 지도, 검색등다양한서비스들에서제공 대표적인예

More information

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.

More information

Windows 10 General Announcement v1.0-KO

Windows 10 General Announcement v1.0-KO Windows 10 Fuji Xerox 장비와의호환성 v1.0 7 July, 2015 머리말 Microsoft 는 Windows 10 이 Windows 자동업데이트기능을통해예약되어질수있다고 6 월 1 일발표했다. 고객들은 윈도우 10 공지알림을받기 를표시하는새로운아이콘을알아차릴수있습니다. Fuji Xerox 는 Microsoft 에서가장최신운영시스템인 Windows

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

유니티 변수-함수.key

유니티 변수-함수.key C# 1 or 16 (Binary or Hex) 1:1 C# C# (Java, Python, Go ) (0101010 ). (Variable) : (Value) (Variable) : (Value) ( ) (Variable) : (Value) ( ) ; (Variable) : (Value) ( ) ; = ; (Variable) : (Value) (Variable)

More information

vi 사용법

vi 사용법 네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

System Recovery 사용자 매뉴얼

System Recovery 사용자 매뉴얼 Samsung OS Recovery Solution 을이용하여간편하게 MagicInfo 의네트워크를설정하고시스템을백업및복원할수있습니다. 시스템시작시리모컨의 - 버튼이나키보드의 F3 키를연속해서누르면복구모드로진입한후 Samsung OS Recovery Solution 이실행됩니다. Samsung OS Recovery Solution 은키보드와리모컨을사용하여조작할수있습니다.

More information

Android Master Key Vulnerability

Android Master Key Vulnerability Android Master Key Vulnerability Android Bug 8219321 2013/08/06 http://johnzon3.tistory.com Johnzone 内容 1. 개요... 2 1.1. 취약점요약... 2 1.2. 취약점정보... 2 2. 분석... 2 2.1. 기본개념... 2 2.2. 공격방법... 4 3. 방어대책... 7

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT 2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

consulting

consulting CONSULTING 전략 컨설팅 클라우드 마이그레이션 애플리케이션 마이그레이션 데이터 마이그레이션 HELPING YOU ADOPT CLOUD. 클라우드로 가기로 결정했다면 누구와 함께 갈지를 선택해야 합니다. 처음부터 끝까지 믿을만한 파트너를 찾는다면 베스핀글로벌이 정답입니다. 전략 컨설팅 다양한 클라우드 공급자가 존재하고, 클라우드 공급자마다 다른 장단점을

More information

SBR-100S User Manual

SBR-100S User Manual ( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S

More information

tiawPlot ac 사용방법

tiawPlot ac 사용방법 tiawplot ac 매뉴얼 BORISOFT www.borisoft.co.kr park.ji@borisoft.co.kr HP : 00-370-077 Chapter 프로그램설치. 프로그램설치 3 2 Chapter tiawplot ac 사용하기.tiawPlot ac 소개 2.tiawPlot ac 실행하기 3. 도면파일등록및삭제 4. 출력장치설정 5. 출력옵션설정

More information

서현수

서현수 Introduction to TIZEN SDK UI Builder S-Core 서현수 2015.10.28 CONTENTS TIZEN APP 이란? TIZEN SDK UI Builder 소개 TIZEN APP 개발방법 UI Builder 기능 UI Builder 사용방법 실전, TIZEN APP 개발시작하기 마침 TIZEN APP? TIZEN APP 이란? Mobile,

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc Visual Studio 2005 + Intel Visual Fortran 9.1 install Intel Visual Fortran 9.1 intel Visual Fortran Compiler 9.1 만설치해서 DOS 모드에서실행할수있지만, Visual Studio 2005 의 IDE 를사용하기위해서는 Visual Studio 2005 를먼저설치후 Integration

More information

Windows Server 2012

Windows Server  2012 Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB

More information

Microsoft PowerPoint - 14주차 강의자료

Microsoft PowerPoint - 14주차 강의자료 Java 로만드는 Monster 잡기게임예제이해 2014. 12. 2 게임화면및게임방법 기사초기위치 : (0,0) 아이템 10 개랜덤생성 몬스터 10 놈랜덤생성 Frame 하단에기사위치와기사파워출력방향키로기사이동아이템과몬스터는고정종료버튼클릭하면종료 Project 구성 GameMain.java GUI 환경설정, Main Method 게임객체램덤위치에생성 Event

More information

Chapter_02-3_NativeApp

Chapter_02-3_NativeApp 1 TIZEN Native App April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 목차 2 Tizen EFL Tizen EFL 3 Tizen EFL Enlightment Foundation Libraries 타이젠핵심코어툴킷 Tizen EFL 4 Tizen

More information

( )부록

( )부록 A ppendix 1 2010 5 21 SDK 2.2. 2.1 SDK. DevGuide SDK. 2.2 Frozen Yoghurt Froyo. Donut, Cupcake, Eclair 1. Froyo (Ginger Bread) 2010. Froyo Eclair 0.1.. 2.2. UI,... 2.2. PC 850 CPU Froyo......... 2. 2.1.

More information

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

Microsoft PowerPoint - 09-CE-5-윈도우 핸들 순천향대학교컴퓨터학부이상정 1 학습내용 윈도우핸들 윈도우찿기 윈도우확인및제거 윈도우숨기기 윈도우포커스 윈도우텍스트 윈도우핸들 순천향대학교컴퓨터학부이상정 3 핸들 (handle) 윈도우에서구체적인어떤대상을구분하기위해지정되는고유의번호 32비트의정수값 핸들은운영체제가발급하고사용자가이값을사용 실제값이무엇인지는몰라도상관없음 윈도우, DC, 브러쉬등등 순천향대학교컴퓨터학부이상정

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

슬라이드 1

슬라이드 1 Delino EVM 용처음시작하기 - 프로젝트만들기 (85) Delfino EVM 처음시작하기앞서 이예제는타겟보드와개발홖경이반드시갖추어져있어야실습이가능합니다. 타겟보드 : Delfino EVM + TMS0F85 초소형모듈 개발소프트웨어 : Code Composer Studio 4 ( 이자료에서사용된버전은 v4..입니다. ) 하드웨어장비 : TI 정식 JTAG

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

(Microsoft PowerPoint - \301\24613\260\255 - oFusion \276\300 \261\270\274\272)

(Microsoft PowerPoint - \301\24613\260\255 - oFusion \276\300 \261\270\274\272) 게임엔진 제 13 강 ofusion 씬구성 이대현교수 한국산업기술대학교게임공학과 학습목차 Ofusion 을이용한 export Export 된씬의재현 씬노드애니메이션을이용한수동카메라트래킹 ofusion OGRE3D 엔진용 3D MAX 익스포터 http://www.ofusiontechnologies.com ofusion 의특징 Realtime Viewport 3D

More information

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot) 1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다. 1.1. 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot) 만별도로필요한경우도있어툴체인설치및설정에대해알아봅니다. 1.1.1. 툴체인설치 다음링크에서다운받을수있습니다.

More information

PowerPoint Presentation

PowerPoint Presentation FAST CAMPUS 2014년 6월 2일 애플(Apple)이 세계개발자대회 (WWDC 2014)에서 ios와os X 기반의 애플리케이션 개발을 위해 새로운 프로그래밍 언어 스위프트 를 선보였습니다. 보통 프로그램 언어의 경우 사람이 사용하는 말과 유사할수록 성능은 떨어지는데 이는 사람의 말과 유사할 경우 컴퓨터가 이해하도록 바꾸는 데 시간이 많이 걸리기 때문입니다.

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

미디어 및 엔터테인먼트 업계를 위한 Adobe Experience Manager Mobile

미디어 및 엔터테인먼트 업계를 위한 Adobe Experience Manager Mobile Adobe Experience Manager Mobile 앱 제작을 넘어 고객, 파트너 및 직원과의 유대 관계 형성 매년 모바일 디바이스에서 읽고 듣고 교류하는 사람들이 증가하고 있습니다. 미디어 및 엔터테인먼트 조직은 모바일 디바이스를 통해 고객, 직원, 파트너 및 광고주와 직접 교류할 수 있는 새로운 기회를 얻을 수 있는데, 이 기회를 민첩하게 활용하는

More information

C 언어와 프로그래밍 개요

C 언어와 프로그래밍 개요 2019-1 st 프로그래밍입문 (1) 1 장. C 언어와프로그래밍개요 박종혁교수 서울과학기술대학교컴퓨터공학과 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr 목차 C 소개 프로그래밍의개념 C 언어의특징 C 프로그램개발 일반적인 C 프로그램개발과정 Visual Studio 를이용한 C 프로그램개발과정 2 소프트웨어의중요성

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

슬라이드 1

슬라이드 1 IntelliJ IDEA 1. 도구개요 2. 설치및실행 3. 주요기능 1. 도구개요 도구명 IntelliJ IDEA (http://www.jetbrains.com/idea/) 라이선스 Apache 2 소개 Java 용통합개발도구 요구사항을정의하고전체개발과정에서요구사항을추적할수있도록지원. 특징 Java IDE 환경제공 모바일및엔터프라이저개발을위한프레임워크제공

More information