2014-10-30 3 views
0

Итак, я создаю игру на основе плитки, если персонаж, основной элемент управления персонажа, переходит в определенные области на карте, он получает повышение энергии или отравляется в зависимости от того, какая плитка персонажа играет на шаге/приземляется Я уже создал двухмерный массив с объектами игрока. Поэтому я хотел спросить, как я должен применять повышающие или отравляющие персонажи, которые работают на определенных позициях на карте. Поэтому мне интересно, нужно ли мне создавать дополнительное измерение для добавления этих специальных «зон» в мою карту, или поэтому я создаю дополнительные Связанные списки для хранения специальных «зон» и их реализации?Плитки со специальными атрибутами

public final class Engine 
{ 
    private int maximumAttackerWarrior; 
    private int maximumDefenderWarrior; 
    private int attackerWarrior; 
    private int defenderWarrior; 
    private final Random rand; 
    private ArrayList<Integer> defenderA; 
    private ArrayList<Integer> attackerA; 

    /** 
    * Constructor of class Engine 
    */ 
    public Engine() { 
     // initialise instance variables 
     rand = new Random(); 
     maximumAttackerWarrior = 0; 
     maximumDefenderarrior = 0; 
     attackerWarrior = 0; 
     defenderWarrior = 0; 
     defenderDices = new ArrayList<Integer>(); 
     attackerDices = new ArrayList<Integer>(); 
    } 
public map{ 
// purely for visualization purposes 
Zones [][] map = 
{ 
    {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} 
};}} 

ответ

1

Если только типы плитки вы будете использовать это подталкивание/яд, то я хотел бы использовать массив карты для хранения значений усиления/Яда каждой позиции (положительные значения означает повышение и отрицательный смысл яд, 0 регулярны кафельная плитка). И храните позиции игрока x и y отдельно.

С другой стороны, если вы считаете, что позже у вас могут быть еще более причудливые плитки, я бы пошел с объектно-ориентированным подходом, когда карта содержит объекты плитки (вы можете использовать шаблон Fly Fly для устранения повторного создания объекта, если ваш карта очень большая).

Надеется, что это помогает

+0

Да что помогло так большое спасибо моего другу, я думаю, что я должен пойти прочитать по образцу GoF наилегчайшего. –

Смежные вопросы