#c#
Вопрос:
Что не так с моим кодом, я пытаюсь сделать space invader с помощью visual studio
using System; using System.Windows.Forms; namespace _2nd_game_try { public partial class Form1 : Form { bool goleft, goright; int playerSpeed = 13; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void keydown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Left) { goleft = true; } if (e.KeyCode == Keys.Right) { goright = true; } } private void keyup(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Left) { goleft = false; } if (e.KeyCode == Keys.Right) { goright = false; } } private void gameTime_Tick(object sender, EventArgs e) { } private void Walk() { while (true) { if (goleft) { player.Left -= playerSpeed; } if (goright) { player.Left = playerSpeed; } } } } }
Комментарии:
1. Добро пожаловать в Stack Overflow! Почему вы думаете , что что-то не так с вашим кодом? Какая конкретная операция работает не так, как ожидалось? Когда вы отлаживаете, какую конкретную проблему вы наблюдаете? Какая операция завершается неудачно? Какие значения использовались в то время? Каков же результат? Какого результата ожидали? Почему?
2. Вам, вероятно, нужно позвонить
Walk()
с вашего timer_Tick. Кроме того, не похоже, что вы сопоставили какие-либо из ваших событий с их обработчиками событий.3. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.
Ответ №1:
- Включите таймер и используйте допустимый интервал.
- Удалите while (true) из
Walk()
метода. - Вызов
Walk()
внутри таймера callbak. - Подпишитесь на обработчики событий keyup и keydown.
- Установите для свойства keypreview значение true в своей форме.