.NET 4.x Игра типа Pong - C#
Формулировка задачи:
Короче заступорился на этапе отбиве ракетками мячика.
Ввиду моего плохого умения оперировать графикой,я использовал неактивные текстбоксы в качестве объектов.
Проблема состоит в том,что сторона делиться на два и одна из них отбивает мяч полностью,а вторая работает правильно.Пока про траэкторию не думал,мяч просто двигаеться влево-вправо по прямой линии.
Я специально не добавил "||",так как при проверке оно использует именно первое написанное,а при "&&" не работает правильно.
Помогите определить границы текстбокса так,чтобы весь текстбокс отбивал мяч,а не один верх и конец.
Скрин с расстановкой:
Листинг программы
- private void Form1_KeyPress(object sender, KeyPressEventArgs e)
- {
- string K = e.KeyChar.ToString();
- if (K == "W")
- {
- player1.Top = player1.Top - 10;
- }
- if (K == "S")
- {
- player1.Top = player1.Top + 10;
- }
- if (K == "I")
- {
- player2.Top = player2.Top - 10;
- }
- if (K == "K")
- {
- player2.Top = player2.Top + 10;
- }
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- }
- private void dot_TextChanged(object sender, EventArgs e)
- {
- }
- private void timer1_Tick(object sender, EventArgs e)
- {
- int score11 = 0;
- dot.Left = dot.Left - 10;
- if (dot.Left == 0)
- {
- score11 = score11 + 1;
- score1.Text = score11.ToString();
- }
- if ((dot.Left <= 20) && (dot.Top >= player1.Top))
- {
- timer1.Enabled = false; ;
- }
- }
- private void dott_Tick(object sender, EventArgs e)
- {
- int score12 = 0;
- if (dot.Left == 0)
- {
- score12 = score12 + 1;
- score2.Text = score12.ToString();
- }
- if (timer1.Enabled == false)
- {
- dot.Left = dot.Left + 10;
- if ((dot.Left >= 465) && (dot.Top >= player2.Top))
- {
- timer1.Enabled = true;
- dott.Enabled = false;
- }
- }
- }
о! починил
Как лучше сделать траэкторию движения шарика? Через if и random? Или можно как-то менее по-индусски?
Решение задачи: «.NET 4.x Игра типа Pong»
textual
Листинг программы
- private void timer1_Tick(object sender, EventArgs e)
- {
- int score11 = 0;
- int score12 = 0;
- if (dot.Left == 500)
- {
- score11 = score11 + 1;
- score1.Text = score11.ToString();
- }
- if (dot.Left <= 0)
- {
- score12 = score12 + 1;
- score2.Text = score12.ToString();
- }
- if ((dot.Left <= 20) && (dot.Top <= player1.Top + 100) && (dot.Top >= player1.Top))
- {
- double normalvetcx = player1.Left + 30 - player1.Left;
- double normalvetcy = player1.Top;
- double normalvetc = Math.Sqrt(normalvetcx*normalvetcx + normalvetcy*normalvetcy);
- double dotvectx = dot.Left+30 - dot.Left;
- double dotvecty = dot.Top - dot.Top-20;
- double dotvect = Math.Sqrt(dotvectx * dotvectx + dotvecty * dotvecty);
- double r;
- r = dotvect - 2 * normalvetc * dotvect*normalvetc/normalvetc*normalvetc;
- int rr = Convert.ToInt32(r);
- dot.Left = rr;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д