Как дать PictureBox управление подносом, подобным пуле или снаряду, при нажатии определенной клавиши

#c# #winforms

#c# #winforms

Вопрос:

Я новичок в C #, я делаю какой-то школьный проект с использованием приложения Windows Form, это простая игра, но я столкнулся с некоторыми проблемами, я хочу придать picturebox управление траекторией, подобной пуле, при нажатии клавиши [Пробел], но пока не смог этого сделать. Мне было поручено делать это только с использованием потоков и БЕЗ таймеров.

Также я хочу, чтобы это поле с изображением «появлялось» и начинало перемещаться из другого поля с изображением под названием «Космический корабль», но я не знаю, как я мог это сделать

Конечно, советы и предложения очень приветствуются, даже если это означает изменение целых частей моего ужасного кода

Я пытался использовать picturebox.Слева = picturebox.Осталось 5; но я думаю, что я делаю что-то не так

     if (e.KeyCode == Keys.Space)
                        {
                            if(pbEnergy.Value <= 0)
                            {
                                pbEnergy.Value = 0;
                                System.Media.SoundPlayer SFX = new System.Media.SoundPlayer(@"C:SFXnolaser.wav");
                                SFX.Play();
                            }
                            else
                            {
                                System.Media.SoundPlayer SFX = new System.Media.SoundPlayer(@"C:SFXlaser.wav");
                                SFX.Play();
                                pbEnergy.Value -= 10;
                                ThreadStart Delegate = new ThreadStart(phys);
                                Thread MovTh = new Thread(Delegate);
                                MovTh.Start();
                            }
                        }

     public void phys()
            {
                for (int i = 0; i <= 60; i  )
                {
                    Thread.Sleep(10);
                    Progress(i);
                    if (i == 60) //stop when value is reached
                    {
                        Thread.CurrentThread.Suspend();
                    }
                }
            }

            delegate void Delegate(int n);

            private void Progress(int num)
            {
                if (this.InvokeRequired)
                {
                    Delegate d = new Delegate(Progress);
                    object[] Parameters = new object[] { num };
                    this.Invoke(d, Parameters);
                }
                else
                {
                    picprj.Visible = true;
                    picprj.Left = picprj.Left   5;
                }
  

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

Комментарии:

1. I expected the picture box to travel and then disappear but it finishes its trajectory and stays visible Я не вижу никакого кода, который вызывает picprj.Visible = false; WinForms не является отличной игровой платформой.

2. Я правильно понимаю? Но я застрял на этом, мой профессор хотел этот проект только в приложениях Windows Form «picprj.Visible = false;» находится в событии Form_Load извините, если я вызвал путаницу

3. Ну, хорошо, это не видно при загрузке формы, но затем вы показываете это. Он никогда не вернется к значению visible = false, если вы не укажете это.