1. C++ / Говнокод #22725

    −21

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 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) RSS

    • это какая-то часть компилятора?
      ни одного имени, который бы мог использовать прикладной программист
      Ответить
      • Это мой уникальный говно-стиль писанины, используемый говно-мной в моём говно-коде, воспринимай как нормальные переменные :D
        Ответить
        • не могу
          он не читаем и нарушает стандарт языка, если ты не знал
          §17.6.4.3.2
          Ответить
          • Я сделяль :D
            void _TETRIS::_TETRIS_SET_POINT() {
                for (int x; x < height; ++x) {
            	for (int y = 0; y < width; ++y) {
            	    if (entities[(x * width) + y].static == true) {
            		++static_check;
            		if (static_check == width) {
            		    for (int entity = (x * width); entity < (x * width) + width; ++entity) {
            			entities[entity].static = false;
            		    }
            		    for (int 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;
            	}
            
                }
            }
            Ответить
          • показать все, что скрытоЛадно дефекате, что ты доебался? Скажи лучше человеку почему код не пашет.
            Ответить
            • показать все, что скрытоДоебался до тебя, проверь.
              Ответить
            • я то думал, что говнокод - это сайт, где можно потешить своё чсв, унизив собеседника
              а тут ещё и помогать надо?
              Ответить
              • Помни, помогая одному новичку, ты помогаешь всей индустрии в будущем, а помогая индустрии ты помогаешь себе! :D
                Ответить
                • > отвечает за статичность обьекта
                  что это? какие в тетрисе статичные объекты?

                  > всей индустрии в будущем
                  обычно наоборот

                  ты тут наревел больше, чем в принципе должен делать некий абстрактный код абстрактного тетриса
                  Ответить
                  • Статичные объекты в тетрисе это те которые больше не двигаются, вот падает фигура вниз и останавливается об край карты, становится статичным, нужна для просчитывания collision :)

                    Что означает наревел и почему его слишком много? Я ничего не понял
                    Ответить
                    • У тебя все объекты больше не двигаются, кроме фигуры, которая падает.
                      Всё, что тебе надо было хранить - это карту битов, 0 - пусто, 1 - занято (более того, в реальном аппаратном тетрисе так и был, скорее всего, устроен дисплей - битовая область тупо мапилась на экран).

                      Отдельным методом тебе надо было бы обеспечивать движение вниз (вызывается по таймеру), отдельными - поворот фигуры, ещё один нужен, чтобы уронить фигуру до текущего предела. Когда фигура упала/достигла до предела тебе надо вызвать отдельный метод, который для всех строк, находящихся в интервале между нижней и верхней точкой этой фигуры, проверит, что они заполненные, и => уничтожит их (возможно, с анимацией). После чего запустить новую фигуру.

                      Что же натворил ты я хз.
                      Твой метод называется "установить точку". Только тебе ведомо что это и зачем.
                      Ответить
                      • Остальная часть работает, этот метод это то самое уничтожение, и вопрос по нему, то что ты говорил конечно интересно, но у меня тетрис уйдёт под апгрейд, фигуры разных цветов, плюс ещё и координаты храню в объекте. Так вот, если ты заметил может какие ошибки в данном методе, то блин скажи, а по остальной части то тем я доволен, есть там один баг но вскоре я и его выловлю
                        Ответить
                        • >Фигуры разных цветов
                          Кодируй цвет целым, тогда заполненный ряд - ряд без нулевых элементов. Если анимация удаления ряда не нужна, то код будет тривиален.
                          int PlayingField[ROWCOUNT][COLCOUNT]; // допустим, поле выглядит так, нулевой ряд вверху. Инициализацию опускаю.
                          int row = ROWCOUNT-1; 
                          while (row >= 0) {
                              bool rowisfull = true;
                              for (int col = 0; rowisfull && (col < COLCOUNT); col++) // споткнемся на первом же нуле
                                  rowisfull = PlayingField[row][col] != 0;
                              if (rowisfull) { //полный ряд - смещаем поле
                                  for (int row2 = row-1; row2 >= 0; row2--)
                                      for (int col = 0; col < COLCOUNT; col++)
                                          PlayingField[row2+1][col] = PlayingField[row2][col];
                                  //пустой верхний ряд
                                  for (int col = 0; col < COLCOUNT; col++)
                                      PlayingField[0][col] = 0;
                              }
                              else //неполный ряд, переходим к следующему
                                  row--;
                          }
                          Ответить
                          • > Кодируй цвет целым
                            У меня ещё 4 флажка в каждой клеточке хранилось, чтобы псевдо-3д грани у клеточек правильно рисовались...
                            Ответить
    • показать все, что скрытоПорт с древнего бейсика или фортрана? Ну откуда ещё в 21 веке возьмётся СТОЛЬКО КАПСА...
      Ответить

    Добавить комментарий