主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

XNA: キーボード入力、画像表示、オーディオ再生

                
tags: C# XNA
using System;
using System.Collections.Generic;
using System.Linq;
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;

namespace WindowsGame1
{
/// <summary>
/// 基底 Game クラスから派生した、ゲームのメイン クラスです。
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

SoundEffect soundEffect;

Texture2D playerImg;
Texture2D mapImg;

int frame = 0;
int playerFrame = 0;
int drawFrames;
Vector2 playerPos = new Vector2(0, 0);
Vector2 playerOrigin;
double time = 0;
int time2;
float playerRot = 0;
float playerRot_time = 0;
KeyboardState keyboardState;

public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}

/// <summary>
/// ゲームの開始前に実行する必要がある初期化を実行できるようにします。
/// ここで、要求されたサービスを問い合わせて、非グラフィック関連のコンテンツを読み込むことができます。
/// base.Initialize を呼び出すと、任意のコンポーネントが列挙され、
/// 初期化もされます。
/// </summary>
protected override void Initialize()
{
// TODO: ここに初期化ロジックを追加します。
this.TargetElapsedTime = TimeSpan.FromSeconds(1.0 / 30.0);
base.Initialize();
}

/// <summary>
/// LoadContent はゲームごとに 1 回呼び出され、ここですべてのコンテンツを
/// 読み込みます。
/// </summary>
protected override void LoadContent()
{
// 新規の SpriteBatch を作成します。これはテクスチャーの描画に使用できます。
spriteBatch = new SpriteBatch(GraphicsDevice);

// TODO: this.Content クラスを使用して、ゲームのコンテンツを読み込みます。
playerImg = Content.Load<Texture2D>("player");
mapImg = Content.Load<Texture2D>("map");
playerOrigin = new Vector2(playerImg.Width / 2, playerImg.Height);
soundEffect = Content.Load<SoundEffect>(@"sounds\AfternoonAmbienceSimple_01");
var soundEffectInstance = soundEffect.CreateInstance();
soundEffectInstance.IsLooped = true;
soundEffectInstance.Play();

}

/// <summary>
/// UnloadContent はゲームごとに 1 回呼び出され、ここですべてのコンテンツを
/// アンロードします。
/// </summary>
protected override void UnloadContent()
{
// TODO: ここで ContentManager 以外のすべてのコンテンツをアンロードします。
}

/// <summary>
/// ワールドの更新、衝突判定、入力値の取得、オーディオの再生などの
/// ゲーム ロジックを、実行します。
/// </summary>
/// <param name="gameTime">ゲームの瞬間的なタイミング情報</param>
protected override void Update(GameTime gameTime)
{
keyboardState = Keyboard.GetState();
// ゲームの終了条件をチェックします。
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();

// TODO: ここにゲームのアップデート ロジックを追加します。
//frame++;
time += (double)gameTime.ElapsedGameTime.TotalSeconds;
time2 = (int)time % 10;
if (keyboardState.IsKeyDown(Keys.Right))
{
playerRot += 2.0F;
}
else if (keyboardState.IsKeyDown(Keys.Left))
{
playerRot -= 2.0F;
}

else
{
playerRot += 1.0F;
}
base.Update(gameTime);
}

/// <summary>
/// ゲームが自身を描画するためのメソッドです。
/// </summary>
/// <param name="gameTime">ゲームの瞬間的なタイミング情報</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
drawFrames++;

// TODO: ここに描画コードを追加します。
spriteBatch.Begin();
spriteBatch.Draw(mapImg, new Vector2(0, 0), Color.White);
spriteBatch.Draw(playerImg, new Vector2(100, 100), null, Color.White,
MathHelper.ToRadians(playerRot), playerOrigin,
new Vector2(1, 1), SpriteEffects.None, 0);

spriteBatch.End();

base.Draw(gameTime);
}
}
}
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。