1. C++ / Говнокод #17305

    +58

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    if(is_ai_on && !white_move)
    			{
    				int tries;
    			start:
    					srand (time(NULL));
    				select_figure:
    					int figure = rand() % (game_field.figures.size() - 1) + 0;
    					if(game_field.figures[figure]->IsWhiteFigure()) goto select_figure;
    					int pos_x;
    					int pos_y;
    					tries = 0;
    				try_move:
    				try
    				{
    					switch(game_field.figures[figure]->GetType())
    					{
    						case PawnType:
    						{
    							pos_x = rand() % (game_field.figures[figure]->GetPositionX() + 2) + (game_field.figures[figure]->GetPositionX() - 2);
    							if(pos_x < 0) pos_x = 0;
    							if(pos_x >= game_field.size) pos_x = game_field.size - 1;
    							pos_y = game_field.figures[figure]->GetPositionY() + 1;
    							if(pos_x == game_field.figures[figure]->GetPositionX() &&
    							   pos_y == game_field.figures[figure]->GetPositionY())
    							   {
    									if(tries < 6)
    									{
    										tries++;
    										goto try_move;
    									}
    									else
    									{
    										goto select_figure;
    									}
    							   }
    						}break;
    						default:
    						{
    							pos_x = rand() % (game_field.figures[figure]->GetPositionX() + 5) + (game_field.figures[figure]->GetPositionX() - 5);
    							pos_y = rand() % (game_field.figures[figure]->GetPositionY() + 5) + (game_field.figures[figure]->GetPositionY() - 5);
    							if(pos_x < 0) pos_x = 0;
    							if(pos_x >= game_field.size) pos_x = game_field.size - 1;
    							if(pos_y < 0) pos_y = 0;
    							if(pos_y >= game_field.size) pos_y= game_field.size - 1;
    							if(pos_x == game_field.figures[figure]->GetPositionX() &&
    							   pos_y == game_field.figures[figure]->GetPositionY())
    							   {
    									if(tries < 6)
    									{
    										tries++;
    										goto try_move;
    									}
    									else
    									{
    										goto select_figure;
    									}
    							   }
    						}break;
    					}
    					game_field.DoMove(figure, pos_x, pos_y, this->white_move);
    				}
    				catch(...)
    				{
    					if(tries < 6)
    					{
    						tries++;
    						goto try_move;
    					}
    					else
    					{
    						goto select_figure;
    					}
    				}
    				this->white_move = true;
    			}

    Скайнет - версия 0.0000000000000000000000000000000001

    Запостил: GreatMASTERcpp, 12 Декабря 2014

    Комментарии (8) RSS

    • Играет в любые игры на квадратной доске, даже не зная правил?
      Ответить
      • В шахматы. Там в doMove проверка правил шахмат и если что то не так - выбрасывается исключение.
        Ответить
        • Меняем проверку на шашки - и начинает играть в шашки...
          Ответить
          • И поддавки с уголками. Вот со всякими реверси и го - не прокатит, нужен другой алгоритм.
            Ответить
            • Нужен более универсальный алгоритм - тупо кликать в произвольные клетки. Авось прокатит.
              Ответить
              • А почему бы и нет? Только ввести память и обучаемость, и заставить играть круглосуточно - освоит.
                Ответить
    • 9 8-спейсных таб индентов, блять.
      Ответить

    Добавить комментарий