2012-04-19 2 views
0

Я собираюсь построить свой собственный bejeweld в c с Glut и Opengl game info(wiki).C++ bejeweld связанный список vs arraylist

короткая информация об игре Игра состоит из сетки, скажем, 8х8, с разными драгоценными камнями. Когда вы создаете строку/столбец, по меньшей мере, из 3 драгоценных камней того же типа, путем замены двух смежных драгоценных камней, драгоценные камни будут исчезать. Игровое поле будет заполнено сверху.

Два дизайн consepts Связанные списки против массива

Есть несколько способов реализации этого, но я хотел бы самым простым в обслуживании и эффективным способом. Моя идея:

(2D-массив представляет игровое поле/сетку).

1) Связанный список, содержащий все указатели на объекты драгоценных камней (экземпляры). И 2D-массив, который содержит все указатели на элементы связанного списка для быстрого доступа к списку. Связанный список можно использовать для легкой печати игровых объектов. Каждый связанный объект списка поставляется с местом (драгоценными камнями, табло, время ГЭ)

2) Той же идеей, что и выше, но связанным списком для каждой строки или столбца и связанный список для других игровых элементов

3) Только 2D-массив с указателями на объекты/экземпляры (драгоценные камни).

необходимые операции

-swap элементы (камни), путем замены указателей?

- «создать» новые элементы (в верхней части сетки)

-check для строк/colomns с по крайней мере 3 того же вида драгоценных камней рядом друг с другом

Я надеюсь, что я сделал все ясно. Как вы думаете, что будет лучшим решением?

+0

Это действительно не вопрос.Попробуйте то, что вы считаете лучшим. Если это не так, начните, если это произойдет, ура! – Anthales

+0

Я думаю, что лучше всего использовать только 2-мерный массив, но я получил подсказку для использования 2D-массива в сочетании со связанным списком (идея 1). Поэтому я хотел бы знать мысли других – user1345112

ответ

1

Я думаю, что это чрезмерное использование связанных списков. Единственное, что я могу думать о том, что они будут полезны, - это сбросить драгоценные камни сверху, но даже это довольно тривиально с 2D-массивом.

A 2d массив int не должен быть проблемой. Это просто и быстро.

0

Я бы использовал 2D-массив. Это проще в использовании, поскольку вы можете напрямую обращаться к элементу, а не итерировать его, пока не достигнете необходимого элемента.

Однако я также вижу преимущества связанного списка, вы можете просто удалить участника после того, как вы поменяете местами и получите 3 строки; вы можете просто добавить новый элемент в голову/хвост после итерации через каждый элемент и сдвинуть его так, как вам нужно, если будете использовать массивы.

+0

Спасибо за ваш ответ, я тоже об этом думал, но «поблем» заключается в том, что вам придется создавать новые экземпляры каждый раз, когда драгоценные камни «исчезают». Я думаю, что это тоже будет неэффективно? – user1345112

+0

Нет, нет. Вам нужно только установить значение этой ячейки [x] [y]. И если это слишком много, вы можете сделать массив массив указателей на драгоценные камни вместо массива драгоценных камней. Это помогает? –

+0

@ user1345112 Почему вы думаете с точки зрения эффективности, когда говорите о «драгоценной игре»? Эффективность - это не проблема для таких простых игр. Подумайте о том, что принесет пользу кодексу _development_ и _maintainance_! – Anthales

0

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

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