私はコーディングにまったく慣れておらず、数週間しか練習しておらず、単純なことがつまずきになっているように見えるタスクが割り当てられています。
画面に4つのスプライトが描画されていますが、ゲームを開始するたびに、2つのスプライトから1つのスプライトからランダムに選択する必要があり、画面には各スプライトが少なくとも1つ存在する必要があります。
私の家庭教師は、配列を使用してテクスチャを保存し、それをコーディングして、毎回描画するものをランダムに選択することを提案しました
namespace GamesProgrammingAssement1
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
KeyboardState keys;
KeyboardState oldKeys;
GamePadState Pad1;
GamePadState oldPad1;
Texture2D gnome;
Texture2D troll;
Rectangle sprRect1;
Rectangle sprRect2;
Rectangle sprRect3;
Rectangle sprRect4;
SpriteFont Run;
SpriteFont Score;
int scoreNum = 0;
int runNum = 0;
Vector2 scorePos;
Vector2 runPos;
Texture2D[] sprite = new Texture2D[2];
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
/// <summary>
/// Allows the game to perform any initialization it needs to before starting to run.
/// This is where it can query for any required services and load any non-graphic
/// related content. Calling base.Initialize will enumerate through any components
/// and initialize them as well.
/// </summary>
protected override void Initialize()
{
sprRect1 = new Rectangle(375, 100, 64, 64);
sprRect2 = new Rectangle(375, 300, 64, 64);
sprRect3 = new Rectangle(225, 200, 64, 64);
sprRect4 = new Rectangle(525, 200, 64, 64);
scorePos = new Vector2(5, 400);
runPos = new Vector2(5, 425);
sprite[0] = gnome;
sprite[1] = troll;
base.Initialize();
}
/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
gnome = Content.Load<Texture2D>("Gnome");
troll = Content.Load<Texture2D>("Troll");
Score = Content.Load<SpriteFont>("Score");
Run = Content.Load<SpriteFont>("Run");
}
/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}
/// <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)
{
KeyboardState keys = Keyboard.GetState();
KeyboardState oldkeys = keys;
if (keys.IsKeyDown(Keys.Escape)) this.Exit();
// TODO: Add your update logic here
base.Update(gameTime);
}
/// <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();
spriteBatch.Draw(gnome,sprRect1,Color.White);
spriteBatch.Draw(troll, sprRect2,Color.White);
spriteBatch.Draw(troll, sprRect3, Color.White);
spriteBatch.Draw(troll, sprRect4, Color.White);
spriteBatch.DrawString(Score, "SCORE : "+ scoreNum, scorePos, Color.Black);
spriteBatch.DrawString(Run, "RUN OF TROLL : " + runNum, runPos, Color.Black);
spriteBatch.End();
base.Draw(gameTime);
}
}
}
配列を適切に格納しているかどうか、またはランダムに正しく実行しているかどうかがわからないため、ヘルプは素晴らしいでしょう