Начать игру по нажатию ENTER!

294
29 апреля 2017, 20:05

Это код игры в WindowsForm. При открытии игра сразу начинает работать но нужно что бы было по нажатию ENTER, как это сделать это я не понял

namespace OdevProje
{
    public partial class Form1 : Form
    {
        int moveLeft = 0;
        int enemyMove = 2;
        Random rnd = new Random();
        int bulletSpeed = 15;
        bool shooting = false;
        public Form1()
        {
            InitializeComponent();
            dusman1.Top = -500;
            dusman2.Top = -500;
            dusman3.Top = -500;
            dusman4.Top = -500;
            dusman5.Top = -500;
            dusman6.Top = -500;
            dusman7.Top = -500;
            mermer.Top = -100;
            mermer.Left = -100;
        }
        private void tusaBasldgnda(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Left)
            {
                if (tabanca.Location.X < 0)
                {
                    moveLeft = 0;
                }
                else
                {
                    moveLeft = -8;
                }
            }
            else if (e.KeyCode == Keys.Right)
            {
                if (tabanca.Location.X > 935)
                {
                    moveLeft = 0;
                }
                else
                {
                    moveLeft = 8;
                }
            }
            else if (e.KeyCode == Keys.Space)
            {
                if (shooting == false)
                {
                    bulletSpeed = 15;
                    mermer.Left = tabanca.Left + 10;
                    mermer.Top = tabanca.Top;
                    shooting = true;
                }
            }  
        }
        private void tusBrakldgnda(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Left)
            {
                moveLeft = 0;
            }
            else if (e.KeyCode == Keys.Right)
            {
                moveLeft = 0;
            }
        }
        private void oyunTimer_Tick(object sender, EventArgs e)
        {
                tabanca.Left += moveLeft;
                mermer.Top -= bulletSpeed;
                dusman1.Top += enemyMove;
                dusman2.Top += enemyMove;
                dusman3.Top += enemyMove;
                dusman4.Top += enemyMove;
                dusman5.Top += enemyMove;
                dusman6.Top += enemyMove;
                dusman7.Top += enemyMove;

            if (dusman1.Top == 560 || dusman2.Top == 560 || dusman3.Top == 560 || dusman4.Top == 560 || dusman5.Top == 560 || dusman6.Top == 560 || dusman7.Top == 560)
            {
                gameOver();
            }
            if (shooting && mermer.Top < 0)
            {
                shooting = false;
                bulletSpeed = 0;
                mermer.Top = -100;
                mermer.Left = -100;
            }
            enemyHit();
        }
        private void enemyHit()
        {
            if (mermer.Bounds.IntersectsWith(dusman1.Bounds))
            {
                dusman1.Top = -500;
                int ranP = rnd.Next(1, 300);
                dusman1.Left = ranP;
                shooting = false;
                bulletSpeed = 0;
                mermer.Top = -100;
                mermer.Left = -100;
            }
            else if (mermer.Bounds.IntersectsWith(dusman2.Bounds))
            {
                dusman2.Top = -650;
                int ranP = rnd.Next(1, 400);
                dusman2.Left = ranP;
                shooting = false;
                bulletSpeed = 0;
                mermer.Top = -100;
                mermer.Left = -100;
            }
            else if (mermer.Bounds.IntersectsWith(dusman3.Bounds))
            {
                dusman3.Top = -660;
                int ranP = rnd.Next(1, 600);
                dusman3.Left = ranP;
                shooting = false;
                bulletSpeed = 0;
                mermer.Top = -100;
                mermer.Left = -100;
            }
            else if (mermer.Bounds.IntersectsWith(dusman4.Bounds))
            {
                dusman4.Top = -420;
                int ranP = rnd.Next(1, 630);
                dusman4.Left = ranP;
                shooting = false;
                bulletSpeed = 0;
                mermer.Top = -100;
                mermer.Left = -100;
            }
            else if (mermer.Bounds.IntersectsWith(dusman5.Bounds))
            {
                dusman5.Top = -1300;
                int ranP = rnd.Next(1, 620);
                dusman5.Left = ranP;
                shooting = false;
                bulletSpeed = 0;
                mermer.Top = -100;
                mermer.Left = -100;
            }
            else if (mermer.Bounds.IntersectsWith(dusman6.Bounds))
            {
                dusman6.Top = -700;
                int ranP = rnd.Next(1, 600);
                dusman6.Left = ranP;
                shooting = false;
                bulletSpeed = 0;
                mermer.Top = -100;
                mermer.Left = -100;
            }
            else if (mermer.Bounds.IntersectsWith(dusman7.Bounds))
            {
                dusman7.Top = -680;
                int ranP = rnd.Next(1, 600);
                dusman7.Left = ranP;
                shooting = false;
                bulletSpeed = 0;
                mermer.Top = -100;
                mermer.Left = -100;
            }
        }
        private void gameOver()
        {
            oyunTimer.Enabled = false;
            MessageBox.Show(" Click OK to play Again");
            dusman1.Top = -500;
            dusman2.Top = -650;
            dusman3.Top = -660;
            dusman4.Top = -420;
            dusman5.Top = -700;
            dusman6.Top = -680;
            dusman7.Top = 720;
            mermer.Top = -100;
            mermer.Left = -100;
            oyunTimer.Enabled = true;
        }
    }
}
Answer 1

Исходя из имеющегося кода видно, что в двух обработчиках с невозможно говорящими названиями tusaBasldgnda() и tusBrakldgnda() присутствует обработка нажатий клавиш Keys.Left, Keys.Right и Keys.Space.

Вам требуется добавить обработку клавиши Keys.Return. Боюсь предположить на какие объекты привязаны обработчики tusaBasldgnda() и tusBrakldgnda(), поэтому предложу повесить хендлер на все окно. Не забываем установить свойство Form.KeyPreview в true. Также могу предположить, что таймер oyunTimer при старте уже включен, поэтому его после инициализации компонентов окна надо его остановить.

public Form1()
{
    InitializeComponent();
    ...
    oyunTimer.Stop();
    KeyPreview = true;
    KeyPress += Form1OnKeyPressed;
}
private void Form1OnKeyPressed(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Return)
    {
        oyunTimer.Start();
    }
}
READ ALSO
Как проверять в редиректе REQUEST массив?

Как проверять в редиректе REQUEST массив?

Есть задача сделать редирект с https://wwwsite

231
Как реализоваться обращение к двум и более бд yii2

Как реализоваться обращение к двум и более бд yii2

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

288
Warning: Illegal string offset &#39;size&#39;

Warning: Illegal string offset 'size'

Здравствуйте, помогите разобраться, пожалуйста, на страницах почти везде данное сообщениеWarning: Illegal string offset 'size' in "/home/

344
Путь к файлам на локальном сервере

Путь к файлам на локальном сервере

При разработке приходится много тестировать и на локальном и на удалённом сервере, а пути к файлам и папкам различные на этих серверахДопустим...

357