Бесконечный цикл с выходом при условии ,не выходит даже после return - C#

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

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

Листинг программы
  1. private void start()
  2. {
  3. testboi();
  4. }
  5. private void testboi()
  6. {
  7. provesti_1_boi();
  8. MessageBox.Show("Вышли из цикла боя.");
  9. }
  10. #region Функция проведения 1 боя
  11. private void provesti_1_boi()
  12. {
  13. zapusk_poiska_hp();
  14. AutoItX3 au3 = new AutoItX3();
  15. ImageSearch img = new ImageSearch();
  16. int pitgigda = 1;
  17. while (true)
  18. {
  19. int y = au3.WinGetPosY("Raga Dwar Bot C#");
  20. int x = au3.WinGetPosX("Raga Dwar Bot C#");
  21. this.toolStripStatusLabel2.Text = ("Ищу");
  22. string col_udarov_read = au3.IniRead("settings.ini", "SU", "udarov", "");
  23. int mochnaudar = Convert.ToInt32(au3.IniRead("settings.ini", "boevaya_sistema", "nas3data", ""));
  24. int krovnaudar = Convert.ToInt32(au3.IniRead("settings.ini", "boevaya_sistema", "nas4data", ""));
  25. int vampnaudar = Convert.ToInt32(au3.IniRead("settings.ini", "boevaya_sistema", "nas5data", ""));
  26. int col_udarov = Convert.ToUInt16(col_udarov_read);
  27. var end_battle1 = img.CapSearchBmp(435, 249, 509, 282, "img/main/end_battle.bmp", "temp.bmp", 0, "Raga Dwar Bot C#");
  28. if (end_battle1.Location.X > 1)
  29. {
  30. au3.MouseClick("LEFT", x + 479, y + 371, 1, 0); // выход из боя
  31. Thread.Sleep(2000);
  32. foreach (Thread potokhp in threads) potokhp.Abort();
  33. this.toolStripStatusLabel2.Text = ("Вышел из цикла");
  34. // Если бой закончен выходим из provesti_1_boi() и возвращаемся в testboi()
  35. return;
  36. }
  37. for (int i = 0; i < col_udarov; )
  38. {
  39. var need_udar = img.CapSearchBmp(414, 410, 452, 443, "img/main/need_udar.bmp", "temp.bmp", 0, "Raga Dwar Bot C#");
  40. var end_battle = img.CapSearchBmp(435, 249, 509, 282, "img/main/end_battle.bmp", "temp.bmp", 0, "Raga Dwar Bot C#");
  41. if (end_battle.Location.X > 1)
  42. {
  43. break;
  44. // Если бой закончен выходим из цикла For
  45. }
  46. if (need_udar.Location.X > 1)
  47. {
  48. if (au3.IniRead("settings.ini", "boevaya_sistema", "nas6", "") == "da" && i == 0)
  49. {
  50. au3.MouseClick("LEFT", 363 + x, 374 + y, 1, 0);
  51. Thread.Sleep(200);
  52. }
  53. if (au3.IniRead("settings.ini", "boevaya_sistema", "nas6", "") == "da" && i == col_udarov - 1)
  54. {
  55. au3.MouseClick("LEFT", 363 + x, 374 + y, 1, 0);
  56. Thread.Sleep(200);
  57. }
  58. if (pitgigda == 1)
  59. {
  60. pitgig();
  61. pitgigda = 0;
  62. }
  63. if (i == mochnaudar - 1)
  64. {
  65. mosh();
  66. }
  67. if (i == krovnaudar - 1)
  68. {
  69. krov();
  70. }
  71. if (i == vampnaudar - 1)
  72. {
  73. vamp();
  74. }
  75. string udarit = au3.IniRead("settings.ini", "SU", "udar" + i, "");
  76. if (udarit == "1")
  77. {
  78. pitjizniqq();
  79. toolStripStatusLabel2.Text = "Удар в голову";
  80. au3.MouseClick("LEFT", x + 447, y + 317, 1, 0); // удар по голове
  81. Thread.Sleep(2500);
  82. i++;
  83. }
  84. if (udarit == "2")
  85. {
  86. pitjizniqq();
  87. toolStripStatusLabel2.Text = "Удар в корпус";
  88. au3.MouseClick("LEFT", x + 475, y + 369, 1, 0); // удар по телу
  89. Thread.Sleep(2500);
  90. i++;
  91. }
  92. if (udarit == "3")
  93. {
  94. pitjizniqq();
  95. toolStripStatusLabel2.Text = "Удар в ноги";
  96. au3.MouseClick("LEFT", x + 449, y + 419, 1, 0); // удар по ногам
  97. Thread.Sleep(2500);
  98. i++;
  99. }
  100. }
  101. else if (need_udar.Location.X < 1)
  102. {
  103. this.toolStripStatusLabel2.Text = ("Не нашел... ищу");
  104. Thread.Sleep(150);
  105. }
  106. }
  107. }
  108. }
  109. #endregion
Не выходит из provesti_1_boi() после return; В чем проблема?

Решение задачи: «Бесконечный цикл с выходом при условии ,не выходит даже после return»

textual
Листинг программы
  1. #region Функция проведения 1 боя
  2.         private void provesti_1_boi()
  3.         {
  4.             zapusk_poiska_hp();
  5.             AutoItX3 au3 = new AutoItX3();
  6.             ImageSearch img = new ImageSearch();
  7.             int pitgigda = 1;
  8.             while (true)
  9.                 {
  10.                     int y = au3.WinGetPosY("Raga Dwar Bot C#");
  11.                     int x = au3.WinGetPosX("Raga Dwar Bot C#");
  12.                     this.toolStripStatusLabel2.Text = ("Ищу");
  13.                     string col_udarov_read = au3.IniRead("settings.ini", "SU", "udarov", "");
  14.                     int mochnaudar = Convert.ToInt32(au3.IniRead("settings.ini", "boevaya_sistema", "nas3data", ""));
  15.                     int krovnaudar = Convert.ToInt32(au3.IniRead("settings.ini", "boevaya_sistema", "nas4data", ""));
  16.                     int vampnaudar = Convert.ToInt32(au3.IniRead("settings.ini", "boevaya_sistema", "nas5data", ""));
  17.                     int col_udarov = Convert.ToUInt16(col_udarov_read);
  18.                     var end_battle1 = img.CapSearchBmp(435, 249, 509, 282, "img/main/end_battle.bmp", "temp.bmp", 0, "Raga Dwar Bot C#");
  19.                     if (end_battle1.Location.X > 1)
  20.                     {
  21.                         au3.MouseClick("LEFT", x + 479, y + 371, 1, 0); // выход из боя
  22.                         Thread.Sleep(2000);
  23.                         foreach (Thread potokhp in threads) potokhp.Abort();
  24.                         this.toolStripStatusLabel2.Text = ("Вышел из цикла");
  25.                         goto test;
  26.                     }
  27.                     for (int i = 0; i < col_udarov; )
  28.                     {
  29.                         var need_udar = img.CapSearchBmp(414, 410, 452, 443, "img/main/need_udar.bmp", "temp.bmp", 0, "Raga Dwar Bot C#");
  30.                         var end_battle = img.CapSearchBmp(435, 249, 509, 282, "img/main/end_battle.bmp", "temp.bmp", 0, "Raga Dwar Bot C#");
  31.                         if (end_battle.Location.X > 1)
  32.                         {
  33.                             break;
  34.                         }
  35.                         if (need_udar.Location.X > 1)
  36.                         {
  37.                             if (au3.IniRead("settings.ini", "boevaya_sistema", "nas6", "") == "da" && i == 0)
  38.                             {
  39.                                 au3.MouseClick("LEFT", 363 + x, 374 + y, 1, 0);
  40.                                 Thread.Sleep(200);
  41.                             }
  42.                             if (au3.IniRead("settings.ini", "boevaya_sistema", "nas6", "") == "da" && i == col_udarov - 1)
  43.                             {
  44.                                 au3.MouseClick("LEFT", 363 + x, 374 + y, 1, 0);
  45.                                 Thread.Sleep(200);
  46.                             }
  47.                             if (pitgigda == 1)
  48.                             {
  49.                                 pitgig();
  50.                                 pitgigda = 0;
  51.                             }
  52.                             if (i == mochnaudar - 1)
  53.                             {
  54.                                 mosh();
  55.                             }
  56.                             if (i == krovnaudar - 1)
  57.                             {
  58.                                 krov();
  59.                             }
  60.                             if (i == vampnaudar - 1)
  61.                             {
  62.                                 vamp();
  63.                             }
  64.                             string udarit = au3.IniRead("settings.ini", "SU", "udar" + i, "");
  65.                             if (udarit == "1")
  66.                             {
  67.                                 pitjizniqq();
  68.                                 toolStripStatusLabel2.Text = "Удар в голову";
  69.                                 au3.MouseClick("LEFT", x + 447, y + 317, 1, 0); // удар по голове
  70.                                 Thread.Sleep(2500);
  71.                                 i++;
  72.                             }
  73.                             if (udarit == "2")
  74.                             {
  75.                                 pitjizniqq();
  76.                                 toolStripStatusLabel2.Text = "Удар в корпус";
  77.                                 au3.MouseClick("LEFT", x + 475, y + 369, 1, 0); // удар по телу
  78.                                 Thread.Sleep(2500);
  79.                                 i++;
  80.                             }
  81.                             if (udarit == "3")
  82.                             {
  83.                                 pitjizniqq();
  84.                                 toolStripStatusLabel2.Text = "Удар в ноги";
  85.                                 au3.MouseClick("LEFT", x + 449, y + 419, 1, 0); // удар по ногам
  86.                                 Thread.Sleep(2500);
  87.                                 i++;
  88.                             }
  89.                         }
  90.                         else if (need_udar.Location.X < 1)
  91.                         {
  92.                             this.toolStripStatusLabel2.Text = ("Не нашел... ищу");
  93.                             Thread.Sleep(150);
  94.                         }
  95.                     }
  96.                 test:
  97.                     {
  98.                         return;
  99.                     }
  100.                 }
  101.         }
  102.         #endregion

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


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

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

6   голосов , оценка 3.667 из 5

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

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

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