−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
defecate-plusplus 02.04.2017 22:43 # +4
ни одного имени, который бы мог использовать прикладной программист
Shantykoff 02.04.2017 22:55 # −1
defecate-plusplus 02.04.2017 23:04 # +4
он не читаем и нарушает стандарт языка, если ты не знал
§17.6.4.3.2
Shantykoff 02.04.2017 23:34 # 0
inhoguest 02.04.2017 23:36 # −15
barop 02.04.2017 23:57 # −16
defecate-plusplus 03.04.2017 00:15 # +5
а тут ещё и помогать надо?
Shantykoff 03.04.2017 00:16 # 0
defecate-plusplus 03.04.2017 00:29 # 0
что это? какие в тетрисе статичные объекты?
> всей индустрии в будущем
обычно наоборот
ты тут наревел больше, чем в принципе должен делать некий абстрактный код абстрактного тетриса
Shantykoff 03.04.2017 00:32 # 0
Что означает наревел и почему его слишком много? Я ничего не понял
defecate-plusplus 03.04.2017 00:58 # +1
Всё, что тебе надо было хранить - это карту битов, 0 - пусто, 1 - занято (более того, в реальном аппаратном тетрисе так и был, скорее всего, устроен дисплей - битовая область тупо мапилась на экран).
Отдельным методом тебе надо было бы обеспечивать движение вниз (вызывается по таймеру), отдельными - поворот фигуры, ещё один нужен, чтобы уронить фигуру до текущего предела. Когда фигура упала/достигла до предела тебе надо вызвать отдельный метод, который для всех строк, находящихся в интервале между нижней и верхней точкой этой фигуры, проверит, что они заполненные, и => уничтожит их (возможно, с анимацией). После чего запустить новую фигуру.
Что же натворил ты я хз.
Твой метод называется "установить точку". Только тебе ведомо что это и зачем.
Shantykoff 03.04.2017 01:03 # 0
Vindicar 03.04.2017 10:09 # 0
Кодируй цвет целым, тогда заполненный ряд - ряд без нулевых элементов. Если анимация удаления ряда не нужна, то код будет тривиален.
bormand 03.04.2017 18:24 # +2
У меня ещё 4 флажка в каждой клеточке хранилось, чтобы псевдо-3д грани у клеточек правильно рисовались...
bormand 03.04.2017 06:18 # −13
Antervis 03.04.2017 10:33 # +2
roman-kashitsyn 03.04.2017 11:22 # +3
ИЛИ-С-КОММОН-ЛИСПА