Как заставить компьютер проигрывать в игре в понг? - PullRequest
3 голосов
/ 13 мая 2011

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

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

любой совет поможет!Спасибо

Ответы [ 6 ]

5 голосов
/ 13 мая 2011

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

Вам нужно сделать его медленнее, перемещая его на более короткое расстояние при каждом перемещении.

4 голосов
/ 13 мая 2011

В оригинальной игре в понг весло было идеально синхронизировано с мячом, то есть, когда мяч падал по линии, весло тоже.Очевидно, что это сделало бы игру непобедимой, поэтому разработчики решили пропустить цикл обновления каждые несколько циклов.

С точки зрения непрофессионала, в каждом кадре вы настраиваете расположение весла, чтобы следовать за мячом, кромена пятом, десятом, пятнадцатом и т. д. Таким образом, ваше весло, похоже, будет красиво следовать мячу, но с некоторой задержкой реакции.

1 голос
/ 15 мая 2011

Компьютер должен ошибаться, чтобы проиграть.Уловка в том, что ошибка должна быть реалистичной.Если ошибки кажутся слишком искусственными, игрок через некоторое время теряет интерес.Человек должен верить, что причиной ошибки является его хорошая игра.

  1. Компьютер может время от времени реагировать поздно.Я имею в виду, зависает, когда человек ударил по мячу.Это может особенно случиться, если человек ударит по мячу с краями.

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

  3. Компьютер может просто реагировать на неправильную сторону (например, подниматься, а не опускаться), когдамяч попал в середину летучей мыши.

  4. Компьютер может ожидать мяч в неправильном месте (выкл. на 1), особенно если мяч подпрыгнет.

1 голос
/ 13 мая 2011

Я думаю, что есть игровой сайт для подобных проблем https://gamedev.stackexchange.com/. Но мой ответ - попытаться зациклить максимальную скорость AI-летучей мыши.И сделать летучую мышь короткой.(Отвечайте на положение мяча только тогда, когда оно попало на половину.)

1 голос
/ 13 мая 2011

Я предполагаю, что компьютер никогда не проигрывает, потому что он «знает», куда пойдет мяч. В таком случае, почему вы не можете заставить его идти в неправильное место в определенный процент времени?

Кроме того, если вы просто хотите замедлить его, а не спать, вы можете перемежать «движения» «никуда не ходите» вместе с движением к тому, что, по его мнению, является правильным местом. Таким образом, вместо «вниз 1, вниз 1, вниз 1» можно получить «вниз 1, вниз 0, вниз 0, вниз 1, вниз 0, вниз 0 ...» или что-то в этом духе.

0 голосов
/ 13 мая 2011

При использовании Sleep вся программа останавливается на несколько миллисекунд. У вас есть игровой цикл? Если это так, попробуйте уменьшить сумму перевода и не забудьте нормализовать вектор ускорения.

cpuPadlle.Position += amount * acceleration;

Где:

  • сумма в [0..1]
  • ускорение 2д вектор
...