.NET 4.x Игра типа Pong - C#

Узнай цену своей работы

Формулировка задачи:

Короче заступорился на этапе отбиве ракетками мячика. Ввиду моего плохого умения оперировать графикой,я использовал неактивные текстбоксы в качестве объектов. Проблема состоит в том,что сторона делиться на два и одна из них отбивает мяч полностью,а вторая работает правильно.Пока про траэкторию не думал,мяч просто двигаеться влево-вправо по прямой линии.
Листинг программы
  1. private void Form1_KeyPress(object sender, KeyPressEventArgs e)
  2. {
  3. string K = e.KeyChar.ToString();
  4. if (K == "W")
  5. {
  6. player1.Top = player1.Top - 10;
  7. }
  8. if (K == "S")
  9. {
  10. player1.Top = player1.Top + 10;
  11. }
  12. if (K == "I")
  13. {
  14. player2.Top = player2.Top - 10;
  15. }
  16. if (K == "K")
  17. {
  18. player2.Top = player2.Top + 10;
  19. }
  20. }
  21. private void Form1_Load(object sender, EventArgs e)
  22. {
  23. }
  24.  
  25. private void dot_TextChanged(object sender, EventArgs e)
  26. {
  27. }
  28. private void timer1_Tick(object sender, EventArgs e)
  29. {
  30. int score11 = 0;
  31. dot.Left = dot.Left - 10;
  32. if (dot.Left == 0)
  33. {
  34. score11 = score11 + 1;
  35. score1.Text = score11.ToString();
  36. }
  37. if ((dot.Left <= 20) && (dot.Top >= player1.Top))
  38. {
  39. timer1.Enabled = false; ;
  40. }
  41. }
  42. private void dott_Tick(object sender, EventArgs e)
  43. {
  44. int score12 = 0;
  45. if (dot.Left == 0)
  46. {
  47. score12 = score12 + 1;
  48. score2.Text = score12.ToString();
  49. }
  50. if (timer1.Enabled == false)
  51. {
  52. dot.Left = dot.Left + 10;
  53. if ((dot.Left >= 465) && (dot.Top >= player2.Top))
  54. {
  55. timer1.Enabled = true;
  56. dott.Enabled = false;
  57. }
  58. }
  59. }
Я специально не добавил "||",так как при проверке оно использует именно первое написанное,а при "&&" не работает правильно. Помогите определить границы текстбокса так,чтобы весь текстбокс отбивал мяч,а не один верх и конец. Скрин с расстановкой:
о! починил Как лучше сделать траэкторию движения шарика? Через if и random? Или можно как-то менее по-индусски?

Решение задачи: «.NET 4.x Игра типа Pong»

textual
Листинг программы
  1. private void timer1_Tick(object sender, EventArgs e)
  2.         {
  3.  
  4.             int score11 = 0;
  5.             int score12 = 0;
  6.             if (dot.Left == 500)
  7.             {
  8.                 score11 = score11 + 1;
  9.                 score1.Text = score11.ToString();
  10.             }
  11.             if (dot.Left <= 0)
  12.             {
  13.                 score12 = score12 + 1;
  14.                 score2.Text = score12.ToString();
  15.             }
  16.              
  17.                 if ((dot.Left <= 20) && (dot.Top <= player1.Top + 100) && (dot.Top >= player1.Top))
  18.                 {
  19.                     double normalvetcx = player1.Left + 30 - player1.Left;
  20.                     double normalvetcy = player1.Top;
  21.                     double normalvetc = Math.Sqrt(normalvetcx*normalvetcx + normalvetcy*normalvetcy);
  22.                     double dotvectx = dot.Left+30 - dot.Left;
  23.                     double dotvecty = dot.Top - dot.Top-20;
  24.                     double dotvect = Math.Sqrt(dotvectx * dotvectx + dotvecty * dotvecty);
  25.                     double r;
  26.                     r = dotvect - 2 * normalvetc * dotvect*normalvetc/normalvetc*normalvetc;
  27.                     int rr = Convert.ToInt32(r);
  28.                     dot.Left = rr;
  29.                 }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы