Реализация pacman в c, призрачное движение - PullRequest
0 голосов
/ 18 августа 2011

Я создаю pacman в c, и в настоящее время я использую один поток для каждого призрака, и каждый призрак представляет «#», но когда я запускаю его, весь экран наполняется призраками, и не все призраки перемещаются только на один или два.

Я использую эту логику

создать структуру из 5 призраков, каждый из которых содержит позицию x, y. создать массив из 5 потоков, и каждый поток реализует один призрак каждый призрак движется случайным образом на экране, для каждого перемещаемого пространства я печатаю пробел в старой позиции, а затем я печатаю '#' в новой позиции.

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

Спасибо

Ответы [ 2 ]

3 голосов
/ 18 августа 2011

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

Это нечто большее, чем это, но это поможет вам начать.

2 голосов
/ 18 августа 2011

Попытка обновить экран одновременно из нескольких потоков требует мьютекса вокруг кода обновления экрана.

...