윈도우폰 세상/XNA for WP7

소년포비 2011. 3. 9. 22:30

안녕하세요 ^^

 

소년포비입니다. 요번에는 제가

 

Programming_Windows_Phone_7의 저자 찰스 페졸드의 책을 바탕으로

 

제 입맛에 맛게 여러분들에게 아주 부끄러운 실력이지만 XNA 강좌를

 

해드릴려고 합니다 ^^

 

 

당연히 페졸드 아저씨가 쓴 내용을 그대로 사용 할것입니다.

 

 

저두 아주 오랫만에 해보는거라 정확하게 설명드리기는 어렵구요 ^^

 

 

제가 아는 만큼 설명해 드리도록 하겠습니다.

 

 

 

 

PART 1  : “HELLO WORLD”

 

 

 

제일 중요한 부분이며 이게 제일 어려운듯하네요.

 

바로바로 헬로우 월드요...^^

 

자 그럼 아래 그림 처럼 프로젝트를 만들어 주시면 됩니다. ^^

 

 

 

 

그리고 이제 본격적으로 코드를 살려 보도록 하겠습니다.

 

아래 부분은 책의 처음에 있는 부분으로써

 

헬로우 월드를 찍는데 중요한 핵심 부분입니다.

 

 

// 여기는 먼가 담는거 갔죠?

Vector2 textSize = segoe14.MeasureString(text);

// 여긴 변수를 어디가 또 담죠?
Viewport viewport = this.GraphicsDevice.Viewport;

// 나름대로 담은 녀석들을 X,Y 좌표로 좀 구하는거 갔죠?
textPosition = new Vector2((viewport.Width - textSize.X) / 2,
(viewport.Height - textSize.Y) / 2);

 

위 부분은 아래 코드에서 어떻게 사용되는지 보여드리겠습니다.

 

그리고 또 자세한 설명도 아래 부분에서 해드리도록 하겠습니다. ^^

 

자 그럼 본격적으로 프로젝트를 만드신 풀 소스를 보시면서

 

이해하도록 하시죠 ^^

 

 

        // GraphicsDevice에 접근할수 있도록 해주는 변수입니다.
        GraphicsDeviceManager graphics;
        // 이 객체는 2D, 3D 이미지를 복합적으로 그릴수 있도록 해주는 변수입니다.
        SpriteBatch spriteBatch;

        // 이부분은 머 말 않해도 아시죠?

        string Test = "Windows Phone 7!! WinMoDev!!";

        // 아래부분은 변수 선언부분입니다.
        SpriteFont segoe14;
        Viewport viewport;

 

        // 초기 진입점입니다.
        public Game1()
        {
            // GraphicsDevice를 쓰기 위해서 변수를 선업하는 부분입니다.
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";

            // Frame rate is 30 fps by default for Windows Phone.
            // 실행되어질 부분에 대한 Frame rate설정을 하고 있는 부분입니다.
            TargetElapsedTime = TimeSpan.FromTicks(333333);
        }

        // 해당 부분은 게임이 처음 시작할때 딱 1번 실행 되는 부분으로써

            각종 변수  및 객체를 초기화 해주는 부분입니다.
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here
            base.Initialize();
        }

 

        // 프로그램이 시작되는 시점에 컨텐트를 읽기 위해서

            한번 실행되는 메서드입니다.
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here
            viewport = this.GraphicsDevice.Viewport;
            segoe14 = this.Content.Load<SpriteFont>("Segoe14");
            Vector2 textSize = segoe14.MeasureString(Test);
            textSize = new Vector2((viewport.Width - textSize.X) / 2,

                                           (viewport.Height - textSize.Y) / 2);
        }

 

        // 해당 부분은 위의 부분과 비슷하지만 다른점이 프로그램이 끝나는

            시점에 한번 실행 되게 됩니다.
        protected override void UnloadContent()
        {
            // TODO: Unload any non ContentManager content here
        }

 

        // 해당 부분은 프로그램의 핵심 부분으로써 Update와 Draw를 번갈아 가면서 
            루프를 돌면 프로그램이 끝날때까지 호출되는 부분입니다.
        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();

            // TODO: Add your update logic here
            base.Update(gameTime);
        }

        protected override void Draw(GameTime gameTime)
        {
            // 프로그램 화면에 CornflowerBlue색을 뿌리도록 하는 부분입니다.
            GraphicsDevice.Clear(Color.CornflowerBlue);

 // 요녀석은 블렌드의 시작하는것과 비슷하죠? ^^

 spriteBatch.Begin();

           // 프로그램 화면에 뿌려주기 위해서 넣는 부분입니다.

               1. segoe14 = 요녀석은 바로 SpriteFont 입니다.

               2. Test = 위에 보이시죠 먼지요? ^^

               3. textSize = 사이즈를 말합니다. 위에 좌표 XY놀이 한거요 ^^

               4. Color.Black = 글자 색갈을 말합니다.

            spriteBatch.DrawString(segoe14, Test, textSize, Color.Black);
            spriteBatch.End();
            // TODO: Add your drawing code here
            base.Draw(gameTime);
        }

 

이렇게 하시면 정말 간단한 헬로우 월드를 찍기 위한 이해를

 

마치신 상태입니다.

 

자 그럼 빌드 화면을 보시기 전에

 

아까말한  SpriteFont를 만들기 위해서는

 

아래 그림을 참고하여 만드시면 되겠습니다.

 

 

 

 

 

자 그럼 이제 에러나는게 없이 아주 깔끔하게 하게 완료가 된것입니다.

 

그리고 제가 위에 소스코드에서 설명해드린

 

프로그램 사이클을 한번 정리해 드릴게요 ^^

 

 <프로그램 라이프사이클>

 

 자 어느정도 이해가 되셨나요?

 

저두 이해하느라 힘들었네요 ^^

 

자 그럼 빌드 하셔서 잘 되나 확인해보세요 ^^

 

아 그리고.....SpriteFont부분에 보시면 글자 크기나 기타

 

다른 부분을 고치실수 있습니다.

 

 

자 그럼 위의 그림처럼 잘 나오시죠?

 

오오오....신기하시죠 ^^

 

자 여러분은 이제 아주 기본이 되는

 

프로그램의 라이프사이클과 함께 기본적인 XNA을

 

알게 되신걸 축하드립니다 ^^

 

그럼 다음 시간에는 좀더 응용해서 해보도록 하겠습니다.

 

다음시간까지 연습하세요~~~

 

음 폰트가 없네요 ㅋㅋ.. 잘못 깔렸나봐요.
기본만 들어가 있어서 그럴지도 모르겠네요....하하하...^^