Как передать элементу управления PictureBox пулю или траекторию, подобную снаряду, при нажатии определенной клавиши - PullRequest
0 голосов
/ 06 апреля 2019

Я новичок в C #. Я делаю какой-то школьный проект с помощью приложения Windows Form. Это простая игра, но я столкнулся с некоторыми проблемами, я хочу дать элементу управления графическим блоком траекторию, похожую на пулю, когда [Space] клавиша нажата, но еще не смогла это сделать. Я получил указание сделать это только с использованием потоков и без таймеров.

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

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

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

    if (e.KeyCode == Keys.Space)
                        {
                            if(pbEnergy.Value <= 0)
                            {
                                pbEnergy.Value = 0;
                                System.Media.SoundPlayer SFX = new System.Media.SoundPlayer(@"C:\SFX\nolaser.wav");
                                SFX.Play();
                            }
                            else
                            {
                                System.Media.SoundPlayer SFX = new System.Media.SoundPlayer(@"C:\SFX\laser.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;
                }

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

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