Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wie bei allen Microsoft XNA-Projekten, leitet sich die Game1-Klasse von der Microsoft.Xna.Framework.Game-Klasse ab, die die grundlegende Initialisierung für Grafikgeräte, die Spiellogik und den Renderingcode für XNA-Spiele bereitstellt. Die Game1-Klasse ist recht einfach aufgebaut, da die meiste Arbeit über die Klassen GamePiece und GamePieceCollection abgewickelt wird.
Erstellen des Codes
Die privaten Member für die Klasse bestehen aus einem GamePieceCollection-Objekt für die Spielsteine, einem GraphicsDeviceManager-Objekt und einem SpriteBatch-Objekt zum Rendern der Spielsteine.
#region PrivateMembers
// Number of game pieces.
private const int GamePieceCount = 6;
// The collection of game pieces.
private GamePieceCollection faces;
// Graphics device manager.
private GraphicsDeviceManager graphics;
// The sprite batch used for rendering game pieces.
private SpriteBatch spriteBatch;
#endregion
Während der Spielinitialisierung werden diese Objekte instanziiert.
#region ConstructorInitialize
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
// This is the default but assigning here explicitly
// to show that resizing is not supported. The view port
// boundaries used to bounce a game piece would not be
// updated if the window was resized.
Window.AllowUserResizing = false;
}
/// <summary>
/// Allows the game to perform any initialization it needs to before starting to run.
/// </summary>
protected override void Initialize()
{
IsMouseVisible = true;
faces = new GamePieceCollection();
// base.Initialize calls the LoadContent method.
base.Initialize();
}
#endregion
Wenn die LoadContent-Methode aufgerufen wird, werden die Spielsteine erstellt und dem GamePieceCollection-Objekt zugewiesen. Es gibt zwei Typen von Spielsteinen. Der Skalierungsfaktor für die Spielsteine wird leicht geändert, sodass einige kleinere und einige größere Spielsteine entstehen.
#region LoadContent
/// <summary>
/// LoadContent will be called once per game. Load all content here.
/// </summary>
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
string filename = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
string path = System.IO.Path.GetDirectoryName(filename) + @"\Content";
// Scale pieces from 100% to 160%
float scale = 1.0f;
float scaleFactor = 0.60f / ((GamePieceCount/2)-1);
for (int k = 0; k < GamePieceCount / 2; k++)
{
GamePiece face1 = new GamePiece(spriteBatch, path + @"\Face1.png");
GamePiece face2 = new GamePiece(spriteBatch, path + @"\Face2.png");
face1.Scale = face2.Scale = scale;
face1.PieceColor = Color.Green;
face2.PieceColor = Color.LightSalmon;
faces.Add(face1);
faces.Add(face2);
scale += scaleFactor;
}
}
#endregion
Die Update-Methode wird von XNA Framework während der Ausführung des Spiels wiederholt aufgerufen. Die Update-Methode ruft die Methoden ProcessInertia und UpdateFromMouse für die Spielsteinauflistung auf. Diese Methoden werden unter Erstellen der GamePieceCollection-Klasse beschrieben.
#region UpdateGame
/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
faces.ProcessInertia();
faces.UpdateFromMouse();
base.Update(gameTime);
}
#endregion
Die Draw-Methode wird von XNA Framework während der Ausführung des Spiels ebenfalls wiederholt aufgerufen. Die Draw-Methode führt das Rendern der Spielsteine durch, indem die Draw-Methode des GamePieceCollection-Objekts aufgerufen wird. Diese Methode ist unter Erstellen der GamePieceCollection-Klasse beschrieben.
#region DrawGame
/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
faces.Draw();
spriteBatch.End();
base.Draw(gameTime);
}
#endregion
Siehe auch
Konzepte
Verwenden von Manipulationen und Trägheit in einer XNA-Anwendung
Erstellen der GamePiece-Klasse
Erstellen der GamePieceCollection-Klasse