Вы говорите о том, что называют "клиентской проблемой" доверия. Поскольку клиент (этими наличными, SWF, работающий в браузере), делает что-то, что они разработаны, чтобы сделать. Сохраните высокий счет.
проблема состоит в том, что Вы хотите удостовериться, что "сохраняют счет" запросы, прибывают из Вашего фильма флэш-памяти, и не некоторого произвольного Запроса HTTP. Возможное решение для этого состоит в том, чтобы закодировать маркер, сгенерированный сервером в SWF во время запроса (использующий flasm), который должен сопровождать запрос для сохранения высокого счета. Как только сервер сохраняет тот счет, маркер истекает и больше не может использоваться для запросов.
оборотная сторона этого - то, что пользователь только будет в состоянии отправить один высокий счет на загрузку фильма флэш-памяти - Вы имеете, должны вынудить их обновить/перезагрузить SWF, прежде чем они смогут играть снова для нового счета.
Такую сетку можно представить в виде двумерного массива:
Если
2
7 3
1
6 4
5
- это номер один со своими соседями в шестнадцатеричной сетке, то вы можете поместить это в 2D массив вроде этого:
2 3
7 1 4
6 5
Очевидно, что соседство в этой сетке определяется не только соседством по горизонтали или вертикали, но и использованием одной диагонали.
Вы также можете использовать график, если хотите.
Эта статья проходит как настроить игру изомерной / гексагональной сетки. Я рекомендую вам взглянуть на раздел Принуждение изометрических и гексагональных карт к прямоугольной сетке
и раздел перемещения. Хотя это отличается от того, что вы ищете, оно может помочь вам сформулировать, как делать то, что вы хотите.
2
7 3
1
6 4
5
Вы также можете попытаться «выровнять» ряды карты. В этом примере это будет:
2
7 1 3
6 5 4
Иногда более полезно иметь строки в одной строке: P
Я бы предложил что-то вроде следующего (я буду использовать объявления в стиле 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;
Каждый шестиугольник имеет шесть ребер и шесть вершин. Каждое ребро отслеживает свои два соседних гекса, а каждая вершина отслеживает свои три смежных гекса (гексы на краях карты будут особым случаем).
Есть много вещей, которые вы могли бы сделать по-другому. курс. Вы можете использовать указатели, а не массивы, вы можете использовать объекты, а не записи, и вы можете хранить свои гексы в двумерном массиве, как предлагали другие ответчики.
Надеюсь, это может дать вам некоторые идеи об одном подходе это хотя.