Лабиринт Pacman в Java


@Import(FeignClientsConfiguration.class)
@RestController
public class TestController {

    @Autowired
    private UserFeignClient userFeignClient;

    @Autowired
    private UserFeignClient adminFeignClient;

    @GetMapping("/test")
    @ResponseBody
    public String test() {
        return userFeignClient.findById(123L);
    }

    @GetMapping("/testAdmin")
    @ResponseBody
    public String test2() {
        return adminFeignClient.findById(123L);
    }
}

Я изменил предыдущий код контроллера на текущий. эффективный запасной метод Hystrix.

8
задан Community 8 February 2017 в 14:10
поделиться

4 ответа

Я не сделал бы этого тот путь.

Я нарисовал бы графическую карту и затем создал бы 2D массив данных, который представляет карту. Карта данных была бы ответственна за определение коллизий, съев точки, где леденец и где фантомы. После того как вся логика для всего обрабатывается, просто используют 2D массив для отображения всего в их надлежащих пиксельных координатах по графической карте.

Например, пользователь нажимает левую клавишу. Сначала Вы решаете, что pacman в элементе 3, 3. Элемент 3, 2 содержит информацию, обозначающую стену, таким образом, можно реализовать код, чтобы заставить его проигнорировать команду.

Править:

Каждый элемент представил бы о том, где точка могла быть. Например:

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

d,d,d,d,d,d,d,d,d,d,d,d,w,w,d,d,d,d,d,d,d,d,d,d,d,d
d,w,w,w,w,d,w,w,w,w,w,d,w,w,d,w,w,w,w,w,d,w,w,w,w,d
p,w,w,w,w,d,w,w,w,w,w,d,w,w,d,w,w,w,w,w,d,w,w,w,w,p    
d,w,w,w,w,d,w,w,w,w,w,d,w,w,d,w,w,w,w,w,d,w,w,w,w,d    
d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d

И так далее. Вы могли бы хотеть выбрать более гибкую структуру данных, чем просто символы однако, так как некоторые области должны содержать набор другой информации. IE даже при том, что фантомной нерестящейся областью является пробел, pacman, не позволяется там. Перемещение фантомов и pacman отличается для Escape стороны, точка икры леденца является пустым местом, но если Вы захотите остаться гибкими, то Вы захотите обозначить, где это идет на основание карты.

Другая вещь, которую Вы захотите помнить, состоит в том, что pacman и фантомы часто являются промежуточными точками, таким образом, содержащими информацию, которая представляет процент пространства, которое они поднимают между 1,2, и 1,3 важно для обнаружения коллизий, а также определения, когда Вы хотите удалить точки, включения питания и леденец от платы.

9
ответ дан 5 December 2019 в 08:54
поделиться

Вот подсказка для Вас:

сопроводительный текст http://www.freeimagehosting.net/uploads/66e4131f59.jpg

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

6
ответ дан 5 December 2019 в 08:54
поделиться
  1. Можно нарисовать карту в BufferedImage и просто drawImage это на каждой краске (). Вы получите довольно разумную производительность этот путь.

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

  3. Игровая карта Pacman сделана из квадратов и Pacman, и фантомы всегда перемещаются от одного квадрата до соседнего квадрата на анимированном шаге (т.е. Вы нажимаете право, pacman перемещает один квадрат направо). Это означает, что обнаружение коллизий легко: просто не позволяйте перемещения квадратам, которые не пусты.

  4. Я не понимаю то, что Вы пытаетесь спросить здесь.

2
ответ дан 5 December 2019 в 08:54
поделиться

1) Только дать мой совет относительно перерисовки. Что-то, что можно сделать при нахождении перерисовки всего изображения, медленно, определяют только элементы, которые изменились на экране и перерисовывают их. Подход для этого был бы следующим: Определите спрайты, которые переместились. Определите (приближают) прямоугольник вокруг тех спрайтов. Перерисуйте те прямоугольники только. Таким образом, Вы только обновляете части экрана а не целого экрана. Это должно привести к увеличению производительности по перерисовке всего экрана.

Другие ответы были разумны для других вопросов, которые Вы задали.

2
ответ дан 5 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: