Приветствую Вас ГостьВторник, 14.05.2024, 21:42

Сайт о компьютерах и софте


Каталог статей

Главная » Статьи » Программирование » Си++

Как написать тетрис
Категории каталога
Си++ [4]
Друзья сайта
Порно онлайн
Скачать порно бесплатно
Порно фотки
Частная эротика
Фильмы онлайн
Скачать кино бесплатно
Документальное кино
Голые звезды
Игры для PC бесплатно
Маленькие игры
Counter-Strike портал
World of WarCraft
Lineage2
ТВ и радио онлайн
Софт-портал
Музыкальные клипы онлайн
Музыкальный портал
Музыкальные клипы
Весь юмор
Все для сотовых
Бесплатные книги
Все аватары
Портал о графике
Линейки для форумов
Бесплатный хостинг картинок
Форум с оплатой
Портал о любви
Все о беременности и малышах!
Портал по диетологии
Свадебный портал
Все о маникюре

Статистика

С чего начинается тетрис? А он начинается с матрицы, которая имеет определенные размеры. Я не знаю каких размеров должен быть стандартный стакан, в который падают фигуры и поэтому будем считать что он 10 клеток в ширину и 20 в высоту. По этому пространству могут передвигаться фигуры, но возникает другой вопрос - как определить вышла ли фигура за рамки массива? Для этого необходимо создать стенки стакана и дно, что, естественно, приведет к увеличению матрицы, а именно +2 в ширину и +1 в высоту. Можно сделать так же верхнюю стенку стакана, столкновение с которой будет сигнализировать о том, что "Game Over". Итак нужно создать матрицу 12x21, либо вектор это уже дело вкуса(по мне так вектор вкуснее).
Матрица будет содержать информацию о мире. То есть это будет как бы глобальная матрица. Значения в данном упрощенном случае, которые может принимать каждая ячейка матрицы, могут быть либо 0, либо 1. Естественно, если в ячейке значение 1, то она считается заполненной иначе пустой. При инициализации приложения либо при начале новой игры нужно обнулять глобальную матрицу и заполнять стенки и дно значениями 1.
Теперь займемся фигурами. Предположим что есть некий вектор(либо матрица), в котором хранится текущая фигура. Все фигуры в тетрисе состоят из 4 залитых ячеек, а соответственно вектора из 16 значений вполне хватит. Фигура, через определенные промежутки времени, опускается на одно значение вниз. При нажатии на клавиши влево-вправо так же фигура движется и поэтому в обоих случаях необходимо проверять следующее положение фигуры на столкновение с глобальной матрицей. Если столкновение при следующем шаге падения происходит, значит текущие данные фигуры проецируются в глобальную матрицу, если столкновение происходит при нажатии клавиш управления движением, то фигура просто не движется в указанную сторону. С вращением фигуры могут возникнуть некоторые проблемы, а именно нужно проверять следующее состояние фигуры после поворота, и если столкновение происходит то восстановить предыдущее иначе оставить текущее. Так как я написал тетрис на скорую руку, он является образцом упрощенного варианта, хотя сейчас в процессе написания статьи я осознаю то, что правильнее было бы передавать функции проверки столкновений массив , а не заставить функцию работать с массивом текущей фигуры.
В момент каждой проекции вектора текущей фигуры в глобальную матрицу значений необходимо проверять наличие заполненных рядов. Проверка должна осуществляться снизу вверх и при обнаружении полностью заполненного ряда нужно сдвинуть все вышеидущие ряды вниз на 1 значение.



























































  Категория: Си++ | Добавил: comp (11.05.2008)
  | Автор: faceH0r
 Просмотров: 1410 | Комментарии: 1
 | Рейтинг: 0.0/0 |
 Всего комментариев: 0
 
 
Заработай!


Загрузка.