Как я представляю hextile/hex сетку в памяти?

Вы говорите о том, что называют "клиентской проблемой" доверия. Поскольку клиент (этими наличными, SWF, работающий в браузере), делает что-то, что они разработаны, чтобы сделать. Сохраните высокий счет.

проблема состоит в том, что Вы хотите удостовериться, что "сохраняют счет" запросы, прибывают из Вашего фильма флэш-памяти, и не некоторого произвольного Запроса HTTP. Возможное решение для этого состоит в том, чтобы закодировать маркер, сгенерированный сервером в SWF во время запроса (использующий flasm), который должен сопровождать запрос для сохранения высокого счета. Как только сервер сохраняет тот счет, маркер истекает и больше не может использоваться для запросов.

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

115
задан Peter O. 17 April 2015 в 21:06
поделиться

4 ответа

Такую сетку можно представить в виде двумерного массива:

Если

   2
7     3
   1   
6     4
   5

- это номер один со своими соседями в шестнадцатеричной сетке, то вы можете поместить это в 2D массив вроде этого:

2 3
7 1 4
  6 5

Очевидно, что соседство в этой сетке определяется не только соседством по горизонтали или вертикали, но и использованием одной диагонали.

Вы также можете использовать график, если хотите.

17
ответ дан 24 November 2019 в 02:26
поделиться

Эта статья проходит как настроить игру изомерной / гексагональной сетки. Я рекомендую вам взглянуть на раздел Принуждение изометрических и гексагональных карт к прямоугольной сетке и раздел перемещения. Хотя это отличается от того, что вы ищете, оно может помочь вам сформулировать, как делать то, что вы хотите.

11
ответ дан 24 November 2019 в 02:26
поделиться
   2
7     3
   1   
6     4
   5

Вы также можете попытаться «выровнять» ряды карты. В этом примере это будет:

  2
7 1 3
6 5 4

Иногда более полезно иметь строки в одной строке: P

0
ответ дан 24 November 2019 в 02:26
поделиться

Я бы предложил что-то вроде следующего (я буду использовать объявления в стиле Delphi):

type
  THexEdge = record
    Hexes: array[1..2] of Integer; // Index of adjoining hexes.
    // Other edge stuff goes here.
  end;

  THexVertex = record
    Hexes: array[1..3] of Integer; // Index of adjoining hexes.
    // Other vertex stuff goes here.
  end;

  THex = record
    Edges: array[1..6] of Integer; // Index of edge.
    Vertices: array[1..6] of Integer; // Index of vertex.
    // Other hex stuff goes here.
  end;

var
  Edges: array of THexEdge;
  Vertices: array of THexVertex;
  HexMap: array of THex;

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

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

Надеюсь, это может дать вам некоторые идеи об одном подходе это хотя.

0
ответ дан 24 November 2019 в 02:26
поделиться
Другие вопросы по тегам:

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