#region Using Statements using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Storage; using Nuclex.Fonts; #endregion namespace pong { /// /// This is the main type for your game /// public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; ContentManager content; SpriteBatch batch; Texture2D ballT; Texture2D paddle; Texture2D paddle2; player player1; ball ball1; int aiPos; BitmapFont myFont; BitmapFont arial56; public Game1() { graphics = new GraphicsDeviceManager(this); content = new ContentManager(Services); graphics.PreferredBackBufferWidth = 800; graphics.PreferredBackBufferHeight = 600; } /// /// 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. /// protected override void Initialize() { // TODO: Add your initialization logic here base.Initialize(); } /// /// Load your graphics content. If loadAllContent is true, you should /// load content from both ResourceManagementMode pools. Otherwise, just /// load ResourceManagementMode.Manual content. /// /// Which type of content to load. protected override void LoadGraphicsContent(bool loadAllContent) { if (loadAllContent) { ballT = content.Load("images/ball"); paddle = content.Load("images/paddle"); paddle2 = content.Load("images/paddle"); batch = new SpriteBatch(graphics.GraphicsDevice); player1 = new player(); ball1 = new ball(); myFont = this.content.Load("fonts/arial.ttf"); // TODO: Load any ResourceManagementMode.Automatic content } // TODO: Load any ResourceManagementMode.Manual content } /// /// Unload your graphics content. If unloadAllContent is true, you should /// unload content from both ResourceManagementMode pools. Otherwise, just /// unload ResourceManagementMode.Manual content. Manual content will get /// Disposed by the GraphicsDevice during a Reset. /// /// Which type of content to unload. protected override void UnloadGraphicsContent(bool unloadAllContent) { if (unloadAllContent == true) { content.Unload(); } } /// /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input and playing audio. /// /// Provides a snapshot of timing values. protected override void Update(GameTime gameTime) { // Allows the default game to exit on Xbox 360 and Windows if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); if (player1.exit == true) this.Exit(); // TODO: Add your update logic here aiPos = ball1.aiPos; ball1.checkPaddles(player1.playerPos, ball1.aiPos); ball1.updateAI(ball1.ballX, this.aiPos); player1.updatePos(); ball1.checkWalls(); Window.Title = "Pong -- Ball PosX: " + ball1.ballX + " Ball PosY: " + ball1.ballY; base.Update(gameTime); } /// /// This is called when the game should draw itself. /// /// Provides a snapshot of timing values. protected override void Draw(GameTime gameTime) { graphics.GraphicsDevice.Clear(Color.CornflowerBlue); batch.Begin(SpriteBlendMode.AlphaBlend); batch.Draw(ballT, new Vector2(ball1.ballX, ball1.ballY), Color.White); batch.Draw(paddle, new Vector2(ball1.aiPos, 0), Color.White); batch.Draw(paddle2, new Vector2(player1.playerPos, 523), Color.White); batch.End(); this.arial56.DrawString( new Vector2(200.0f, 60.0f), // location in pixels from upper left "Hello World!", Color.White ); // TODO: Add your drawing code here base.Draw(gameTime); } } }