HaxeFlixel Пуйо Пуйо

Я давно хотел сделать блочную игру, но никогда не понимал, как это сделать на самом деле. Я вечно гуглил, и там не так много, а то, что есть, идет с условием, с которым я не хочу возиться (лицензия gpl, вся база кода и лицензия в любом проекте, бле). Поэтому я отправился на форум со своей проблемой. Я этого не знал, но я пытался сделать игру типа Puyo Puyo. Блоки падают с потолка, а затем очищаются, если есть совпадение 3 или более. Я понятия не имел о том, как сделать сопоставление. Что я и хотел узнать. Один очень милый, обаятельный и интеллигентный парень дал мне вот это:

http://hastebin.com/ziyejejoxu.js

Конечно, это довольно много, но то, как ему удалось это закодировать, позволило мне немного понять это. Однако есть одна досадная проблема. Одна, ровно ОДНА строка кода не компилируется и ломается. Я спросил его, могу ли я написать ему об этом по электронной почте, и он сказал хорошо. Я еще не получил ответа, поэтому, возможно, я его не получу, поэтому я беру это здесь. Вот как я использую код до сих пор. Есть две части: игровое состояние и часть головоломки:

http://pastebin.com/SvMR9mMb

Программа ломается в playstate, выдавая эту ошибку:

source/PlayState.hx:291: символы 33-52: доступ к массиву запрещен на x: Int -> Int

Что я пробовал:

Я предположил, что это не разрешено, потому что часть головоломки x является числом с плавающей запятой, и, конечно же, вы не можете вставить число с плавающей запятой в массив int. Итак, что я сделал, так это сначала просто в части головоломки преобразовать число с плавающей запятой в целое число. Это не сработало. ТОГДА в состоянии я переключил float на int. Это не сработало. В качестве упражнения я попытался преобразовать игру Flixel в HaxeFlixel, чтобы посмотреть, смогу ли я чему-нибудь научиться. Я, наверное, сделал это неправильно и не сделал.

Итак, вопрос: почему эта строка не компилируется и что мне нужно сделать, чтобы она скомпилировалась или достигла своей цели?


person Robert Clemmons jr    schedule 14.07.2015    source источник


Ответы (1)


Синтаксис неверен. push — это функция, а вызовы функций используют (). [] для доступа к массиву (отсюда и сообщение об ошибке).

Это должно работать:

if (this_piece_is_in_a_match) matched_pieces.push(_i);
person Gama11    schedule 14.07.2015
comment
Хорошо. Это, НАКОНЕЦ, компилируется чисто. Спасибо. НО я не вижу никаких изменений в состоянии. Но блоки не убиваются. Есть идеи, что там не так? - person Robert Clemmons jr; 14.07.2015
comment
Я просто хотел бы сделать скромное предложение, а именно начать с нуля, следовать инструкциям на веб-сайте и постепенно изучать синтаксис haxe. Может быть приятно видеть кучу кода, написанного для вас, но на самом деле вы не научитесь так многому, как очень простой стартовый проект. На веб-сайте haxe есть несколько руководств, и документация отличная. Удачи. - person 5Mixer; 01.08.2015