|
|
tetris.PAS |
|
{* TETRIS *}Unit TETRIS;Interface Implementation Begin writeln('Игра TETRIS в текстовом режиме '); End. Program tetris; Uses tetris.pas; {* Эту строку можно удалить *} Uses crt; {* Подключаем внешние файлы *} Var {* Необходимые переменные *} ss : integer; nn : integer; x : integer; y : integer; pus : integer; a : integer; b : integer; c : integer; d : integer; lin : integer; rlin : integer; st : Array[1..12] Of Array[1..22] Of integer; Procedure k(x : integer); y : integer); {Рисуем квардратик} If (ss = 3) And (st[x := 1; y] > 0) Then pus := 1; If ss = 4 Then st[x := 1; y] := 1; Procedure fig(x : integer); y : integer); n : integer); s : integer); {Рисуем фигуру} Begin If s = 3 Then pus := 0; ss := s; {Поворот фигуры} Begin nn := nn - 1; If nn = 15 Then nn := 19; If nn = 13 Then nn := 15; If nn = 11 Then nn := 13; If nn = 7 Then nn := 11; If nn = 3 Then nn := 7; If nn = 1 Then nn := 3; If nn = 0 Then nn := 1; {Очистка стакана} Begin For x := 1 To 12 Do; {* Цикл для x => [1 .. 12] *} {Рисовать весь стакан} Begin For x := 1 To 12 Do; {* Цикл для x => [1 .. 12] *} {Движение} Var {* Объявление переменных *} i : integer; key : char; Begin For i := 1 To 10 Do {* Увеличиваем i от 1 до 10 с шагом 1 *} Begin delay(d); key := ' '; If keypressed Then key := readkey; {* Ждем нажатия пользователя *} If key = 'i' Then Begin fig(x - 1, y, nn, 3); If pus = 0 Then Begin fig(x, y, nn, 0); x := x - 1; fig(x, y, nn, 1); End; End; If key = 'p' Then Begin fig(x + 1, y, nn, 3); If pus = 0 Then Begin fig(x, y, nn, 0); x := x + 1; fig(x, y, nn, 1); End; End; If key = 'o' Then Begin pov; fig(x, y, nn, 3); pov; pov; pov; If pus = 0 Then Begin fig(x, y, nn, 0); pov; fig(x, y, nn, 1); End; End; If key = 'z' Then d := 5; End; End; {Главная программа} Begin randomize; clrscr; {* Очистка экрана *} clrst; risvesst; lin := 0; Repeat nn := 1 + random(18); x := 6; y := 20; fig(x, y, nn, 3); d := 70 - (lin * 5); If pus = 0 Then Begin Repeat fig(x, y, nn, 1); dvig; fig(x, y - 1, nn, 3); If pus = 0 Then Begin fig(x, y, nn, 0); y := y - 1; End; Until pus = 1; fig(x, y, nn, 4); For y := 22 Downto 2 Do Begin a := 0; For x := 2 To 11 Do {* Увеличиваем x от 2 до 11 с шагом 1 *} a := a + st[x, y]; If a = 10 Then Begin For b := y To 21 Do {* Увеличиваем b от y до 21 с шагом 1 *} For c := 2 To 11 Do {* Увеличиваем c от 2 до 11 с шагом 1 *} st[c, b] := st[c, b + 1]; lin := lin + 1; gotoxy(2, 2); writeln('Линии: ', lin) End; End; risvesst; pus := 0; End; Until pus = 1; End.... 07.08.2014 - Breakpoint - точка остановки 07.08.2014 - Топ-10 самых популярных приложений в Facebook 18.11.2013 - Панель управления и персонализация системы. Windows Vista 18.11.2013 - Логические и физические диски. Windows Vista 18.11.2013 - Удаление файлов и папок 01.11.2013 - Программирование дисковых подсистем: возможности 31.10.2013 - Windows8 или Windows7? 31.10.2013 - Windows8, игры |
|
Non-commercial fansite
|