−21
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
void _TETRIS::_TETRIS_SET_POINT() {
for (int _ENTITY_X = 0; _ENTITY_X < _HEIGHT; ++_ENTITY_X) {
for (int _ENTITY_Y = 0; _ENTITY_Y < _WIDTH; ++_ENTITY_Y) {
if (_ENTITIES[(_ENTITY_X * _WIDTH) + _ENTITY_Y]._STATIC == true) {
++_STATIC_CHECK;
if (_STATIC_CHECK == _WIDTH) {
for (int _ENTITY = (_ENTITY_X * _WIDTH); _ENTITY < (_ENTITY_X* _WIDTH) + _WIDTH; ++_ENTITY) {
_ENTITIES[_ENTITY]._STATIC = false;
}
for (int _ENTITY = (_ENTITY_X * _WIDTH) + _WIDTH; _ENTITY < 200; ++_ENTITY) {
if (_ENTITIES[_ENTITY]._STATIC == true) {
_ENTITIES[_ENTITY - _WIDTH]._STATIC = true;
_ENTITIES[_ENTITY]._STATIC = false;
}
}
_STATIC_CHECK = 0;
}
}
_STATIC_CHECK = 0;
}
}
}
Кусок тетриса отвечающий за уничтожение уже полного ряда
_HEIGHT это константа высоты, равна (20) рядам
_WIDTH константа ширины, равна (10) клеткам
_STATIC_CHECK - проверка статичных блоков в ширину, инициализирована 0-м
_ENTITIES <- элемент массива класса клеток, их в общем (200) элементов
_STATIC <- параметр каждого обьекта _ENTITIES, отвечает за статичность обьекта
данный метод отказывается хоть что-то делать вообще, cout не предлагать, программа на GL-е :D
Помогите люди добрые :(
Запостил:
Shantykoff,
02 Апреля 2017
ни одного имени, который бы мог использовать прикладной программист
он не читаем и нарушает стандарт языка, если ты не знал
§17.6.4.3.2
а тут ещё и помогать надо?
что это? какие в тетрисе статичные объекты?
> всей индустрии в будущем
обычно наоборот
ты тут наревел больше, чем в принципе должен делать некий абстрактный код абстрактного тетриса
Что означает наревел и почему его слишком много? Я ничего не понял
Всё, что тебе надо было хранить - это карту битов, 0 - пусто, 1 - занято (более того, в реальном аппаратном тетрисе так и был, скорее всего, устроен дисплей - битовая область тупо мапилась на экран).
Отдельным методом тебе надо было бы обеспечивать движение вниз (вызывается по таймеру), отдельными - поворот фигуры, ещё один нужен, чтобы уронить фигуру до текущего предела. Когда фигура упала/достигла до предела тебе надо вызвать отдельный метод, который для всех строк, находящихся в интервале между нижней и верхней точкой этой фигуры, проверит, что они заполненные, и => уничтожит их (возможно, с анимацией). После чего запустить новую фигуру.
Что же натворил ты я хз.
Твой метод называется "установить точку". Только тебе ведомо что это и зачем.
Кодируй цвет целым, тогда заполненный ряд - ряд без нулевых элементов. Если анимация удаления ряда не нужна, то код будет тривиален.
У меня ещё 4 флажка в каждой клеточке хранилось, чтобы псевдо-3д грани у клеточек правильно рисовались...
ИЛИ-С-КОММОН-ЛИСПА