Исходник программы, показывающей пример создания очередного тетриса. Недоделан сетевой режим. Отдается на растерзание :).
Фигура состоит из 4-х "ячеек" и может быть следующих видов:
"I" "J" "L" "T" "Z" "S" "O"
{o} { o} {o }
{o} { o} {o } { o } {oo } { oo} {oo}
{o} {oo} {oo} {ooo} { oo} {oo } {oo}
{o}
Фигуры могут быть 7ми цветов: синий, голубой, зеленый, оранжевый, пурпурный, красный, желтый.
В момент когда "фигура" ложится на другую или же на дно "стакана" каждой "ячейке" фигуре в зависимости от ее цвета назначается кол-во очков.
"синий" - 1 или 14
"голубой" - 2 или 13
"зеленый" - 3 или 12
"оранжевый" - 4 или 11
"пурпурный" - 5 или 10
"красный" - 6 или 9
"желтый" - 7 или 8
В этот же момент происходит проверка не собрана ли "полная" линия из фигур, для того, чтобы "убрать" ее.
Если это случилось, происходит подсчет очков за такую линию:
Для каждой ячейки фигур в линии берется ее значение и умножается на "множитель очков", при этом если в линии есть подряд идущие ячейки одного цвета, то за каждую такую ячейку начиная с 5-ой идет увеличение "множителя очков" на 0.1.
(обратите внимание: множитель увеличивается только на момент подсчета, т.е если до начала подсчета он был равен 1, а в момент подсчета увеличился до 1.4, то по окончании подсчета он снова будет равен 1).
Например: у нас 6 ячеек "синего" цвета в линии идущих подряд со значениями [1,14,1,14,14,1], а "множитель очков" равен 1, при подсчете очков за 1-4 ячейки мы получим 1*1 + 14*1 + 1*1 +14*1, а вот за 5 и 6 уже 14*1.1 + 1 * 1.2.
Также в случае, если игрок уберет подряд несколько полных линий, то за каждую такую линию начиная с 2-ой "множитель очков" увеличится на 0.1 * кол-во убранных линий (т.е от 0.2 до 0.4) и будет действовать при последующих подсчетах очков.
После набора необходимого кол-ва "убранных" линий, уровень игрока поднимается на 1 вверх. На каждом новом уровне скорость падения фигуры увеливается.
После перехода с каждого 10-го уровня на следующий (11, 21, 31 и тп) скорость падения фигуры возвращается к той же, что была не 1-ом уровне.
Кол-во "убранных" линий необходимых для перехода на след. уровень:
1,11,31 и тп - 5
2,12,32 и тп - 8
3 .. - 10
4 .. - 12
5 ... - 15
6 ... - 18
7 ... - 20
8 ... - 22
9 ... - 25
10 ... - 28
ОБРАТИТЕ ВНИМАНИЕ! Если включен показ след. фигуры то множитель очков всегда равен 1!
ОБРАТИТЕ ВНИМАНИЕ! Если включена "сетка" то скорость падения фигур на текущем уровне будет увеличена до скорости следующего уровня, т.е включили сетку на 2ом уровне - скорость падения будет как на 3м и тд
3 .. - 8 вместо 10
4 .. - 10 вместо 12
5 ... - 13 вместо 15
6 ... - 16 вместо 18
7 ... - 20
8 ... - 22
9 ... - 25
10 ... - 28