![]() |
![]() |
setare |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
Здравствуйте! Мне очень сильно нужно помощь! Нам задали написать тгру определитель, предварительно даже не рассмотрев хотя бы одну программу по написанию игр на Паскале. Я тоже не могу найти никакую литературу по теории игр и реализации их на Паскале. Суть игры состоит в следующем: Есть матрица 3 на 3. 2 Игрока ходят поочередно и ставят цифры в любое место матрицы, при том цифры не должны повторяться. Когда вся матрица заполнена, мы считаем ее детерминант. Если Д больше 0, то выиграет первый, если меньше, то второй, если равно, то ничья. Моя проблема в том, что откуда приступить в задаче. С чего вообще начать? Понятно какими методами нужно пользовться: перебором, отсечением альфа-бета, рекурсией. Но откуда приступить к написанию кода? Как сделать так, чтобы пользователь вписал цифру в таблицу и компьютер отвечал?
Пожалуйста, обьясните мне и не закрывайте тему! Спасибо большое!!!! -------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
setare, а обязательно надо использовать "альфа - бета отсечение"? Просто в задаче такого рода это не имеет особого смысла, ведь при размере матрицы (3 х 3) имеется всего 9! вариантов взаимного расположения чисел, то есть 362880... Причем после того, как первый ход сделан, количество оставшихся вариантов сокращается уже до 8! = 40320, и т.д. => быстродействие может быть приемлемым без отсечения вариантов...
Я бы попробовал сделать так: процедура AI компьютера получает на вход частично заполненную матрицу, генерирует (рекурсивно) для нее все возможные варианты продолжения, и выбирает из них тот (само число и его расположение), при котором окончательный детерминант будет максимальным/минимальным (в зависимости от очередности хода компьютера). Если представлять матрицу как строку из 9-ти символов (развернуть матрицу построчно), то памяти в "куче" должно хватить. P.S. klem4, на самом деле подозрительно. У меня например D считается вот так: function get_determ(mx: tmatrix): integer; т.е. используются все элементы... |
![]() ![]() |
![]() |
Текстовая версия | 15.07.2025 5:28 |