2013-07-26 5 views
2

Я работаю над игрой в понг, так как я новичок в программировании, я не знаю, как получить доступ к другой переменной класса. У меня есть отдельные классы, зеленые и синие весла, мяч и game1.cs.Получение доступа к другим классам Переменные

Я управляю движением шара с помощью bool movingUp, movingLeft;

Он отскакивает от границ экрана, но я не знаю, как заставить его работать с веслами. В принципе, как я могу проверить положение весла и сделать так, когда мяч касается весла, он отскакивает? Я имею в виду, как обнаружить столкновение?

public class Ball 
{ 
    ParticleEngine particleEngine; 
    GraphicsDeviceManager graphics; 
    Texture2D texture; 
    Vector2 position; 
    Boolean movingUp, movingLeft; 
    Vector2 origin; 

    public Ball() 
    { 
     position = new Vector2(800/2, 330); 
    } 

    public void LoadContent(ContentManager Content) 
    { 
     texture = Content.Load<Texture2D>("ball"); 
     movingLeft = true; 
     //Particle Engine 
     List<Texture2D> textures = new List<Texture2D>(); 
     textures.Add(Content.Load<Texture2D>("pixel")); 
     particleEngine = new ParticleEngine(textures, new Vector2(400, 240)); 
    } 

    public void Update(GameTime gameTime) 
    { 
     float speed = 2.5f; 

     //Physics 
     if (movingUp) 
     { 
      position.Y -= 3; 
     } 

     if (movingLeft) 
     { 
      position.X -= 3; 
     } 

     if (!movingUp) 
     { 
      position.Y += 3; 
     } 

     if (!movingLeft) 
     { 
      position.X += 3; 
     } 

     if (position.X <= 0 && movingLeft) movingLeft = false; 
     if (position.Y <= 85 && movingUp) movingUp = false; 

     if (position.X >= 800 - texture.Width && !movingLeft) movingLeft = true; 
     if (position.Y >= 500 - texture.Height && !movingUp) movingUp = true; 

     origin = new Vector2(position.X + texture.Width/2, position.Y + texture.Height/2); 

     //Particles 
     particleEngine.EmitterLocation = new Vector2(origin.X, origin.Y); 
     particleEngine.Update(); 
    } 

    public void Draw(SpriteBatch spriteBatch) 
    { 
     particleEngine.Draw(spriteBatch); 
     spriteBatch.Draw(texture, position, Color.White); 
    } 

} 

Один из классов лопастных (они выглядят так же, кроме арматуры имени и движения клавиша):

public class GreenPaddle 
{ 
    Texture2D texture; 
    Vector2 position; 
    float speed = 2f; 
    public GreenPaddle() 
    { 
     position = new Vector2(10, 230); 
    } 
    public void LoadContent(ContentManager Content) 
    { 
     texture = Content.Load<Texture2D>("greenpaddle"); 
    } 
    public void Update(GameTime gameTime) 
    { 
     KeyboardState keyState = Keyboard.GetState(); 
     //Check If Keys Are Pressed // Movement 
     if (keyState.IsKeyDown(Keys.W)) 
      position.Y -= speed; 
     if (keyState.IsKeyDown(Keys.S)) 
      position.Y += speed; 
     //Check Border 
     if (position.Y < 87) 
     { 
      position.Y = 87; 
     } 
     if (position.Y > 396) 
     { 
      position.Y = 396; 
     } 
    } 
    public void Draw(SpriteBatch spriteBatch) 
    { 
     spriteBatch.Draw(texture, position, Color.White); 
    } 
} 

Заранее спасибо, я действительно хочу, чтобы узнать вещи, как это: D

ответ

2

Объявите переменные, к которым вы хотите получить доступ, как общедоступные, или создайте методы получения.

Для публичных переменных, которые вы должны сделать следующее:

public Vector2 Position; 

И получить к нему доступ, вы могли бы назвать:

Ball ball; 
ball.Position 

Для метода GET реализации:

public Vector2 getPosition() 
{ 
    return Position; 
} 

И вы могли бы назвать этот способ получить позицию.

+1

Спасибо, я доволен тем, что вы не опубликовали фиксированный код, теперь я знаю, как это сделать сам, большое вам спасибо: D –

+0

Вы должны задать вопрос и ответить на вопрос как ответ – Rwiti

Смежные вопросы