Какой метод я должен использовать, чтобы дать представление, которое компьютер думает в программировании?

Я хочу создать простую игру, такую ​​как 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

Два очень важных принципа юзабилити:

  • Не блокируйте поток пользовательского интерфейса! Только отключите управление игрой, чтобы игрок не мог выполнить шаг во время мышления.
  • Покажите визуальную обратную связь с пользователем, указывающую мышление, и что он не может выполнить этот шаг некоторое время.

И, конечно же, аккуратно сбалансируйте точную продолжительность мышления. Рассматривайте время игроков как очень ценное.