Стреляйте шариками по местоположению мыши в c# GDI - PullRequest
0 голосов
/ 25 мая 2020

Здравствуйте, я пытаюсь стрелять шариками в указатель мыши, щелкая. Я действительно не знаю, есть ли ошибка в форме или в игре класса, или я использую неправильное неправильное событие. Прямо сейчас, когда я нажимаю, ничего не происходит.

 public class Game
 {
     public List<Ball> Balls { get; set; } = new List<Ball>();
     public List<Base> Base { get; set; } = new List<Base>();




     public void Draw(Graphics g)
     {
         foreach (Ball item in this.Balls)
         {
             item.Draw(g);
         }




     public void Next()
     {
         foreach (Ball item in this.Balls)
         {
             item.Move();
         }
     }  

Я думаю, что в этой части есть ошибка, но я не знаю, что я делаю неправильно

 public void Click(int x, int y)
     {
         foreach(Ball item in this.Balls)
         {
             Ball b = new Ball(this)
             {
                 X = x,
                 Y = y,
                 Vx = x / 10,
                 Vy = y / 10

             };


             this.Balls.Add(b);
         }

     }
 }



 public partial class Form1 : Form
 {
     private Game game;


     private void PictureBox1_Paint(object sender, PaintEventArgs e)
     {
         this.game.Draw(e.Graphics);
     }

     private void Timer1_Tick(object sender, EventArgs e)
     {
         this.game.Next();
         this.pictureBox1.Refresh();
     }

     private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
     {
         this.game.Click(e.X, e.Y);
    }
 }

1 Ответ

0 голосов
/ 25 мая 2020

В методе Click вы добавляете new Ball(...) для каждого элемента в Balls.

Итак, если вы начнете с 10 шаров, щелчок приведет к добавлению еще 10 шаров. Если вы начнете с 0 шаров, нажатие приведет к добавлению еще 0 шаров.

Мне кажется, вам нужно просто удалить foreach из этого метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...