Какой метод я должен использовать, чтобы дать представление, которое компьютер думает в программировании?
Я хочу создать простую игру, такую как tic tac toe, где пользовательский пользователь играет против компьютера. Компьютерная функция занимает пару миллисекунд для запуска, но я хотел бы дать представление о том, что компьютер занимает 5 секунд, чтобы сделать ход. Какой метод следует использовать?
1) Создайте два потока памяти. Один для компьютера и один для пользователя. Когда компьютер занимает 5 секунд, чтобы подражать мышлению, пользовательский поток пользователя приостанавливается на 5 секунд.
2) Отключить устройства ввода в течение 5 секунд с помощью таймера или диспетчера.
3) Любые лучшие методы, о которых вы можете думать.
Спасибо!
Изменить. Вопрос в том, как и почему. 5 секунд - пример. Я предпочитаю 1-2 секунды, но, например, для целей, которые я только выбрал 5. Поэтому, пожалуйста, сосредоточьтесь на том, что лучший способ сделать это, а не на 5 секунд. Еще раз спасибо.
Ответы
Ответ 1
Шум и мигающие огни = цифровая мысль.
Переверните процессор на 100% с помощью бесконечного цикла для генерирования тепла.
Начните циклическое перемещение по всем файлам, чтобы индикатор жесткого диска мигал и делал круговые шумы.
Запустите команду оболочки, чтобы сменить каталог на оптический привод, чтобы заставить оптический привод вращаться.
Включение и выключение блокировки замков, numlock и блокировки прокрутки, для некоторых клавиатур есть подсветка.
Убедитесь, что ваша материнская плата поддерживает любые дополнительные мигающие индикаторы.
Ах! Хорошая точка зрения. У многих фанатов есть доступ к API, поэтому включение вентиляторов на 100% классно. Возвращение в нормальное состояние может быть опасным, потому что, если вы случайно отключите вентиляторы, это может стать серьезным ущербом.
Ответ 2
вы могли бы просто сделать курсор в песочные часы и отключить основную форму (что не позволит пользователю вводить что-либо), запустить таймер на 5 секунд (я бы сделал это время настраиваемым), когда срабатывает таймер, и снова установите курсор в нормальное состояние. Что-то вроде этого:
Вызвать этот метод, когда пользователь сделал свой ход:
private void UserHasMoved()
{
Enabled = false;
timer1.Interval = 5000;
timer1.Start ();
}
то событие для таймера:
private void timer1_Tick(object sender, EventArgs e)
{
Enabled = true;
timer1.Stop ();
}
Ответ 3
разве это не раздражало бы более быстрых игроков? Может быть, секунда на терне, но вы скоро узнаете, что 5 секунд слишком много.
В любом случае, не приостанавливайте поток пользовательского интерфейса, потому что интерфейс "заморозится".
Ответ 4
Поскольку человек использует GUI в качестве своего интерфейса, вы не можете приостановить его поток. Приостановка потока GUI отключит вашу форму от перекраски, таким образом не показывая движение компьютера.
Я просто отключил бы все связанные с игрой входные данные и покажу анимацию компьютера, работающего над его мозгом.
Ответ 5
Из вашего вопроса кажется, что вы не хотите, чтобы компьютерная игра была такой молниеносной, что человеческий игрок не может ее увидеть. Для этого, почему бы вам не показать какую-то случайную анимацию, показывающую возможные пьесы, и в конечном итоге оживить выбранный ход.
Изменить: Я должен согласиться с тем, что отключение устройств ввода немного жесткое. Может быть, переключить приложение в состояние, в котором любой вход пользователя не может повлиять на плату, но может повлиять на другие команды, такие как сохранение, перезагрузка или выход.
Ответ 6
Два очень важных принципа юзабилити:
- Не блокируйте поток пользовательского интерфейса! Только отключите управление игрой, чтобы игрок не мог выполнить шаг во время мышления.
- Покажите визуальную обратную связь с пользователем, указывающую мышление, и что он не может выполнить этот шаг некоторое время.
И, конечно же, аккуратно сбалансируйте точную продолжительность мышления. Рассматривайте время игроков как очень ценное.