소년포비의 세계정복!!

소년포비의 XNA for Windows Phone 7 초보탈출 2탄!! 본문

윈도우폰 세상/XNA for WP7

소년포비의 XNA for Windows Phone 7 초보탈출 2탄!!

소년포비 2011. 3. 13. 21:59

안녕하세요 ^^

 

소년포비입니다. 요번에는 저번시간에 이어

 

헬로우 월드 응용편을 알아보도록 하겠습니다.

 

PART 2  : “HELLO WORLD 응용편”

 

 

 

저번 시간에 보신 내용의 소스코드는 오늘 보실 코드와

 

크게 다른 내용은 많치 않을거라 생각 됩니다.

 

단지 좀더 액션감있게 가미한 코드라 생각 하시면 됩니다.

 

자 그럼 본격적인 코드속으로 고~~

 

 

<신규 추가 부분>

const float SPEED = 240f; // pixels per second

 

// 신규 변수 선언 부분

   (저번시간에는 직접 LoadContent 이부분에 직접선언했지만 요번시간에는 요기에

     선언 한것입니다. 신규 추가 선언된 부분도 있는거 보이시죠?)

GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
SpriteFont segoe14;
Viewport viewport;
Vector2 textSize;

Vector2 textPosition;
bool isGoingUp = false;

 

 

어떤 부분이 더 추가되었는지 금방 감이 오시죠?

 

위 코드는 초반 진입점 전에 선언 하시면 됩니다.

 

그럼 또 변화된 LoadContent 부분을 한번 보시고 넘어가도록 하겠습니다. ^^

 

 

 

 

protected override void LoadContent()
{
   //  요부분이 좀 변화가 이루어 졌죠? ^^
 
  spriteBatch = new SpriteBatch(GraphicsDevice);
   viewport = this.GraphicsDevice.Viewport;
   segoe14 = this.Content.Load<SpriteFont>("Segoe14");
   textSize = segoe14.MeasureString(TEXT);

   textPosition = new Vector2(viewport.X + (viewport.Width - textSize.X) / 2, 0);
}

 

 

보셨죠? 저번 코드와 어디가 다른지 아시겠죠? 위 부분에 직접 선언해서 했던걸

 

요번에는 초기진입점전에 미리 선억한 부분을요

 

자 그럼 이제 액션이 일어나는 부분을 확인 해보시겠습니다. ^^

 

 

protected override void Update(GameTime gameTime)
{
   if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
   this.Exit();

   // 바로 이부분이 액션이 일어나는부분이죠. 아까 위에서 false로 선언했으니

      if을 타고 SPEED 부분에서 240이 플러스가 적용이 되고 else 부분에서는 240이

      마이너스 되는게 보이시죠? 그러면서 X,Y 축이 변화되며 글자를 뿌려 주게 됩니다. 
   if (!isGoingUp)
   {

      textPosition.Y += SPEED * (float)gameTime.ElapsedGameTime.TotalSeconds;

      if (textPosition.Y + textSize.Y > viewport.Height)

     {
       float excess = textPosition.Y + textSize.Y - viewport.Height;

       textPosition.Y -= 2 * excess;
       isGoingUp = true;
     }
   }
   else
   {
       textPosition.Y -= SPEED * (float)gameTime.ElapsedGameTime.TotalSeconds;
       if (textPosition.Y < 0)
      {
         float excess = - textPosition.Y;
         textPosition.Y += 2 * excess;
         isGoingUp = false;
       }
    }

    base.Update(gameTime);

}

 

자 여기까지 잘 보셨나요 응용편에서 사용할 코드는 전부 나왔습니다. ^^

 

위 코드까지 정확하게 이해하시고 사용하셨다면 여러분들이 원하는

 

빌드만 하시면 여러분이 지금까지 적용한 코드들을 통해서 실행되는

 

헬로우 월드가 어떻게 움직이는 확인이 되시죠?

 

 

 

 

 

 

 

자 위에 처럼 글자가 위...아래로 움직이는게 보이시죠

 

프레임당 240이 움직이는걸요 ^^

 

그럼 저 숫자 240을 변경하시면서 어떻게 움직이는지 확인해보시면 되시겠죠? ^^

 

 

자 그럼 다음 시작에는 정말 이지 저두 두려운

 

A Brief Review of Vectors 부분에 대해서 알아보도록 하겠습니다.

 

사실 이부분이 정말 어려운 부분이라서 제가 어떻게 풀어서

 

설명을 드려야 할지 좀 어렵지만 고민고민해서 좀 쉽게 풀어보도록

 

노력 할게요 ^^ 다음 시간까지 여러분들도 공부해보세요 ^^