アットウィキロゴ

game29

using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

namespace game0229
{
  /// <summary>
  /// ゲームメインクラス
  /// </summary>
  public class Game1 : Microsoft.Xna.Framework.Game
  {
      /// <summary>
      /// グラフィックデバイス管理クラス
      /// </summary>
      private GraphicsDeviceManager graphics = null;

      /// <summary>
      /// スプライトのバッチ化クラス
      /// </summary>
      private SpriteBatch spriteBatch = null;

      /// <summary>
      /// 頂点データ定義
      /// </summary>
      private VertexDeclaration vertexDeclaration = null;

      /// <summary>
      /// 頂点バッファ
      /// </summary>
      private VertexBuffer vertexBuffer = null;

      /// <summary>
      /// 基本エフェクト
      /// </summary>
      private BasicEffect basicEffect = null;

      /// <summary>
      /// テクスチャー
      /// </summary>
      private Texture2D texture = null;


      /// <summary>
      /// GameMain コンストラクタ
      /// </summary>
      public Game1()
      {
          // グラフィックデバイス管理クラスの作成
          this.graphics = [[new]] GraphicsDeviceManager(this);

          // ゲームコンテンツのルートディレクトリを設定
          this.Content.RootDirectory = "Content";
      }

      /// <summary>
      /// ゲームが始まる前の初期化処理を行うメソッド
      /// グラフィック以外のデータの読み込み、コンポーネントの初期化を行う
      /// </summary>
      protected override void Initialize()
      {
          // TODO: ここに初期化ロジックを書いてください

          // コンポーネントの初期化などを行います
          base.Initialize();
      }

      /// <summary>
      /// ゲームが始まるときに一回だけ呼ばれ
      /// すべてのゲームコンテンツを読み込みます
      /// </summary>
      protected override void LoadContent()
      {
          // テクスチャーを描画するためのスプライトバッチクラスを作成します
          this.spriteBatch = new SpriteBatch(this.GraphicsDevice);

          // 頂点定義データを作成
          this.vertexDeclaration = new VertexDeclaration(
              this.GraphicsDevice, VertexPositionTexture.VertexElements);

          // エフェクトを作成
          this.basicEffect = new BasicEffect(this.GraphicsDevice, null);

          // テクスチャーの使用を許可する
          this.basicEffect.TextureEnabled = true;

          // ビューマトリックスをあらかじめ設定 ((5, 2, 10) から原点を見る)
          this.basicEffect.View = Matrix.CreateLookAt(
                  new Vector3(5.0f, 2.0f, 10.0f),
                  Vector3.Zero,
                  Vector3.Up
              );

          // プロジェクションマトリックスをあらかじめ設定
          this.basicEffect.Projection = Matrix.CreatePerspectiveFieldOfView(
                  MathHelper.ToRadians(45.0f),
                  (float)this.GraphicsDevice.Viewport.Width /
                      (float)this.GraphicsDevice.Viewport.Height,
                  1.0f,
                  [[100]].0f
              );

          // 頂点バッファ作成
          this.vertexBuffer = new VertexBuffer(this.GraphicsDevice,
              VertexPositionTexture.SizeInBytes * 4, BufferUsage.None);

          // 頂点データを作成する
          VertexPositionTexture[] vertices = new VertexPositionTexture[4];

          vertices[0] = new VertexPositionTexture(new Vector3(-2.0f, 2.0f, 0.0f),
                                                  new Vector2(0.0f, 0.0f));
          vertices[1] = new VertexPositionTexture(new Vector3(2.0f, 2.0f, 0.0f),
                                                  new Vector2(1.0f, 0.0f));
          vertices[2] = new VertexPositionTexture(new Vector3(-2.0f, -2.0f, 0.0f),
                                                  new Vector2(0.0f, 1.0f));
          vertices[3] = new VertexPositionTexture(new Vector3(2.0f, -2.0f, 0.0f),
                                                  new Vector2(1.0f, 1.0f));

          // 頂点データを頂点バッファに書き込む
          this.vertexBuffer.SetData<VertexPositionTexture>(vertices);

          // テクスチャーの読み込み
          this.texture = this.Content.Load<Texture2D>("pic");

          // エフェクトにテクスチャーをセットする
          this.basicEffect.Texture = this.texture;
      }

      /// <summary>
      /// ゲームが終了するときに一回だけ呼ばれ
      /// すべてのゲームコンテンツをアンロードします
      /// </summary>
      protected override void UnloadContent()
      {
          // TODO: ContentManager で管理されていないコンテンツを
          //       ここでアンロードしてください
      }

      /// <summary>
      /// 描画以外のデータ更新等の処理を行うメソッド
      /// 主に入力処理、衝突判定などの物理計算、オーディオの再生など
      /// </summary>
      /// <param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
      protected override void Update(GameTime gameTime)
      {
          // Xbox 360 コントローラの BACK ボタンを押したときにゲームを終了させます
          if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
              this.Exit();

          // TODO: ここに更新処理を記述してください

          // 登録された GameComponent を更新する
          base.Update(gameTime);
      }

      /// <summary>
      /// 描画処理を行うメソッド
      /// </summary>
      /// <param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
      protected override void Draw(GameTime gameTime)
      {
          // 画面を指定した色でクリアします
          this.GraphicsDevice.Clear(Color.CornflowerBlue);

          // 描画する頂点データの定義を設定
          this.GraphicsDevice.VertexDeclaration = this.vertexDeclaration;

          // 頂点バッファをセットします
          this.GraphicsDevice.Vertices[0].SetSource(
              this.vertexBuffer,
              0,
              VertexPositionTexture.SizeInBytes);

          // エフェクトの使用を開始します
          this.basicEffect.Begin();

          // パスの数だけ繰り替えし描画
          [[foreach]] (EffectPass pass in this.basicEffect.CurrentTechnique.Passes)
          {
              // パスの開始
              pass.Begin();

              // ポリゴン描画する
              this.GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);

              // パスの終了
              pass.End();
          }

          // エフェクトの使用を終了する
          this.basicEffect.End();

          // 登録された DrawableGameComponent を描画する
          base.Draw(gameTime);
      }
  }
}
最終更新:2011年02月16日 10:40