Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Исходники Форум Информер Страны мира
   Графические Игры    >>    Кубик Рубика
   
 
 Кубик Рубика   Евгений Скляревский 16.07.1991


Графическая игра "Кубик Рубика" для TP5.5-7.0. BGI-графика. Кубик можно крутить с помощью цифровой клавиатуры. Для запуска необходим драйвер EGAVGA.BGI


3k 
 

Кубик Рубика на экране.

Примечание от RSWAG:
Эта программа не может служить образцом "как надо писать программы".
Скорее наоборот - это пример того, как "не надо писать".
Стиль - просто отвратительный, но... во-первых, автор честно сообщает,
что это была его _первая_ программа, а во-вторых, "вам шашечки или ехать?" :)
По крайнее мере, алгоритм программы может оказаться для кого-то интересным.


Это моя первая программа на Turbo Pascal'e - лет десять назад, все были молодые и... но, учитывая, что текст программы займёт много места, прерву воспоминания и коротко о главном. Грани кубика на экране можно вращать, используя "правую" часть клавиатуры мнемонически:
8 - верхняя грань,
2 - нижняя,
4 - левая,
6 - правая,
1 - задняя,
. - передняя - по часовой стрелке,
они же вместе с "Shift" - против.
Используя F1 - F6 можно посмотреть кубик с разных сторон.
Если вы... в общем, нажав "0", вы вернете кубик в исходное "собранное" состояние, это самое большое преимущество перед настоящим кубиком (ещё вопрос, какой более настоящий?), опять же не уроните. Выход, конечно, "Esc".
Поворот сопровождается настоящим скрипом. При движении нет раздражающего мигания потому, что кубик не перерисовывается, а заново "заливается" цветом - это ещё и быстрее чем перерисовывание. Набирать, конечно, много, но и покрутить его на экране приятно.
Можно копировать текст через клипборд - сразу заработает! Если конечно у вас подключен графический модуль и вообще стоит Turbo Pascal:

{**** КУБИК РУБИКА ****************************} {**** первая программа Евгения Скляревского ***} {**** для Turbo Pascal ************************} USES Graph,CRT; LABEL 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, 21,22,23; VAR CH: CHAR; graphdriver,graphmode,I,K:integer; FACE:ARRAY[1..9] OF INTEGER; UP,RR:ARRAY[1..9] OF INTEGER; RIGHT:ARRAY[1..9] OF INTEGER; LEFT:ARRAY[1..9] OF INTEGER; DARK:ARRAY[1..9] OF INTEGER; DOWN:ARRAY[1..9] OF INTEGER; procedure KUB( X1,X2,X3,X4,Y1,Y2,Y3,Y4,COL:INTEGER); BEGIN setcolor(8); LINE(X1,Y1,X2,Y2);SOUND(100*COL); LINE(X2,Y2,X3,Y3); LINE(X3,Y3,X4,Y4); LINE(X4,Y4,X1,Y1); NOSOUND { READLN; } END; procedure KUB1( X4,Y4,COL1:INTEGER); BEGIN SOUND(1000*COL1); SetFillstyle(1,COL1); FLOODFILL(X4+5,Y4+5,8); NOSOUND; { READLN; } END; procedure RISUNOK(C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13, C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27: INTEGER); CONST X00=150;Y00=150;AA=40;D=6; VAR A1,A2,X0,Y0,A,B,B1,B2,B3,C,YY,E:INTEGER; BEGIN A:=AA; A1:=A*2+D; A2:=A*3+D*2; X0:=X00 ; Y0:=Y00; Initgraph(graphdriver,graphmode,''); KUB(X0,X0+A,X0+A,X0,Y0+A,Y0+A,Y0,Y0,C1); KUB(X0+A+D,X0+A1,X0+A1,X0+A+D,Y0+A,Y0+A,Y0,Y0,C2); KUB(X0+A1+D,X0+A2,X0+A2,X0+A1+D,Y0+A,Y0+A,Y0,Y0,C3); KUB(X0+A1+D,X0+A2,X0+A2,X0+A1+D,Y0+A1,Y0+A1,Y0+A+D,Y0+A+D,C6); KUB(X0+A+D,X0+A1,X0+A1,X0+A+D,Y0+A1,Y0+A1,Y0+A+D,Y0+A+D,C5); KUB(X0,X0+A,X0+A,X0,Y0+A1,Y0+A1,Y0+A+D,Y0+A+D,C4); KUB(X0+A1+D,X0+A2,X0+A2,X0+A1+D,Y0+A2,Y0+A2,Y0+A1+D,Y0+A1+D,C9); KUB(X0+A+D,X0+A1,X0+A1,X0+A+D,Y0+A2,Y0+A2,Y0+A1+D,Y0+A1+D,C8); KUB(X0,X0+A,X0+A,X0,Y0+A2,Y0+A2,Y0+A1+D,Y0+A1+D,C7); X0:=X00+A2+D; Y0:=Y00; C:=10;YY:=25; A:=AA; A1:=A*2+D; A2:=A*3+D*2; B:=15; B1:=B*2+D; B2:=B*3+D*2;E:=D; KUB(X0,X0+B,X0+B,X0,Y0+A,Y0+A-YY,Y0-YY,Y0,C10); KUB(X0+B+D,X0+B1,X0+B1,X0+B+D,Y0+A-YY-E,Y0+A-2*YY-E,Y0-2*YY-E, Y0-YY-E,C11); KUB(X0+B1+D,X0+B2,X0+B2,X0+B1+D,Y0+A-2*YY-2*E,Y0+A-3*YY-2*E, Y0-3*YY-2*E,Y0-2*YY-2*E,C12); KUB(X0+B1+D,X0+B2,X0+B2,X0+B1+D,Y0+A1-2*YY-2*E,Y0+A1-3*YY-2*E, Y0+A+D-3*YY-2*E,Y0+A+D-2*YY-2*E,C15); KUB(X0+B+D,X0+B1,X0+B1,X0+B+D,Y0+A1-YY-E,Y0+A1-2*YY-E, Y0+A+D-2*YY-E,Y0+A+D-YY-E,C14); KUB(X0,X0+B,X0+B,X0,Y0+A1,Y0+A1-YY,Y0+A+D-YY,Y0+A+D,C13); KUB(X0+B1+D,X0+B2,X0+B2,X0+B1+D,Y0+A2-2*YY-2*E,Y0+A2-3*YY-2*E, Y0+A1+D-3*YY-2*E,Y0+A1+D-2*YY-2*E,C18); KUB(X0+B+D,X0+B1,X0+B1,X0+B+D,Y0+A2-YY-E,Y0+A2-2*YY-E,Y0+A1+D-2*YY-E, Y0+A1+D-YY-E,C17); KUB(X0,X0+B,X0+B,X0,Y0+A2,Y0+A2-YY,Y0+A1+D-YY,Y0+A1+D,C16); X0:=X00+2*D ; Y0:=Y00-3*YY-3*D; C:=9;YY:=0; A:=25; A1:=A*2+D; A2:=A*3+D*2; B:=40; B1:=B*2+D; B2:=B*3+D*2;E:=0;B3:=15; KUB(X0+2*B3+6,X0+B+2*B3+4,X0+B+3*B3+6,X0+3*B3+9,Y0+A,Y0+A-YY, Y0-YY,Y0,C19); KUB(X0+B+D+2*B3+4,X0+B1+2*B3+2,X0+B1+3*B3+3,X0+B+D+3*B3+6, Y0+A-YY-E,Y0+A-2*YY-E,Y0-2*YY-E,Y0-YY-E,C20); KUB(X0+B1+D+2*B3+3,X0+B2+2*B3,X0+B2+3*B3,X0+B1+D+3*B3+3, Y0+A-2*YY-2*E,Y0+A-3*YY-2*E,Y0-3*YY-2*E,Y0-2*YY-2*E,C21); X0:=X00+D; KUB(X0+B1+D+B3+1,X0+B2+B3,X0+B2+2*B3,X0+B1+D+2*B3+2, Y0+A1-2*YY-2*E,Y0+A1-3*YY-2*E,Y0+A+D-3*YY-2*E,Y0+A+D-2*YY-2*E,C24); KUB(X0+B+D+B3+2,X0+B1+B3+1,X0+B1+2*B3+2,X0+B+D+2*B3+4, Y0+A1-YY-E,Y0+A1-2*YY-E,Y0+A+D-2*YY-E,Y0+A+D-YY-E,C23); KUB(X0+B3+3,X0+B+B3+2,X0+B+2*B3+4,X0+2*B3+6,Y0+A1, Y0+A1-YY,Y0+A+D-YY,Y0+A+D,C22); X0:=X00; KUB(X0+B1+D,X0+B2,X0+B2+B3,X0+B1+D+B3+1,Y0+A2-2*YY-2*E, Y0+A2-3*YY-2*E,Y0+A1+D-3*YY-2*E,Y0+A1+D-2*YY-2*E,C27); KUB(X0+B+D,X0+B1,X0+B1+B3+1,X0+B+D+B3+2,Y0+A2-YY-E,Y0+A2-2*YY-E, Y0+A1+D-2*YY-E,Y0+A1+D-YY-E,C26); KUB(X0,X0+B,X0+B+B3+2,X0+B3+3,Y0+A2,Y0+A2-YY,Y0+A1+D-YY,Y0+A1+D,C25); END; procedure RISUNOK1(C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14, C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27:INTEGER); CONST X00=150;Y00=150;AA=40;D=6; VAR A1,A2,X0,Y0,A,B,B1,B2,B3,C,YY,E:INTEGER; BEGIN A:=AA; A1:=A*2+D; A2:=A*3+D*2; X0:=X00 ; Y0:=Y00; KUB1(X0,Y0,C1); KUB1(X0+A+D,Y0,C2); KUB1(X0+A1+D,Y0,C3); KUB1(X0+A1+D,Y0+A+D,C6); KUB1(X0+A+D,Y0+A+D,C5); KUB1(X0,Y0+A+D,C4); KUB1(X0+A1+D,Y0+A1+D,C9); KUB1(X0+A+D,Y0+A1+D,C8); KUB1(X0,Y0+A1+D,C7); X0:=X00+A2+D ; Y0:=Y00; C:=10;YY:=25; A:=AA; A1:=A*2+D; A2:=A*3+D*2; B:=15; B1:=B*2+D; B2:=B*3+D*2;E:=D; KUB1(X0,Y0,C10); KUB1(X0+B+D,Y0-YY-E,C11); KUB1(X0+B1+D,Y0-2*YY-2*E,C12); KUB1(X0+B1+D,Y0+A+D-2*YY-2*E,C15); KUB1(X0+B+D,Y0+A+D-YY-E,C14); KUB1(X0,Y0+A+D,C13); KUB1(X0+B1+D,Y0+A1+D-2*YY-2*E,C18); KUB1(X0+B+D,Y0+A1+D-YY-E,C17); KUB1(X0,Y0+A1+D,C16); X0:=X00+2*D ; Y0:=Y00-3*YY-3*D; C:=9;YY:=0; A:=25; A1:=A*2+D; A2:=A*3+D*2; B:=40; B1:=B*2+D; B2:=B*3+D*2;E:=0;B3:=15; KUB1(X0+3*B3+9,Y0,C19); KUB1(X0+B+D+3*B3+6,Y0-YY-E,C20); KUB1(X0+B1+D+3*B3+3,Y0-2*YY-2*E,C21); X0:=X00+D; KUB1(X0+B1+D+2*B3+2,Y0+A+D-2*YY-2*E,C24); KUB1(X0+B+D+2*B3+4,Y0+A+D-YY-E,C23); KUB1(X0+2*B3+6,Y0+A+D,C22); X0:=X00; KUB1(X0+B1+D+B3+1,Y0+A1+D-2*YY-2*E,C27); KUB1(X0+B+D+B3+2,Y0+A1+D-YY-E,C26); KUB1(X0+B3+3,Y0+A1+D,C25); END; begin {********************************НАЧАЛО************************} 1: FOR I:=1 TO 9 DO BEGIN UP[I]:=9; FACE[I]:=12;RIGHT[I]:=10;LEFT[I]:=15;DOWN[I]:=5;DARK[I]:=14; END; RISUNOK (FACE[1],FACE[2],FACE[3],FACE[4],FACE[5],FACE[6],FACE[7], FACE[8],FACE[9],RIGHT[1],RIGHT[2],RIGHT[3],RIGHT[4],RIGHT[5], RIGHT[6],RIGHT[7],RIGHT[8],RIGHT[9],UP[1],UP[2],UP[3], UP[4],UP[5],UP[6],UP[7],UP[8],UP[9]); 3: RISUNOK1 (FACE[1],FACE[2],FACE[3],FACE[4],FACE[5],FACE[6],FACE[7], FACE[8],FACE[9],RIGHT[1],RIGHT[2],RIGHT[3],RIGHT[4],RIGHT[5], RIGHT[6],RIGHT[7],RIGHT[8],RIGHT[9],UP[1],UP[2],UP[3], UP[4],UP[5],UP[6],UP[7],UP[8],UP[9]); 2: CH:=ReadKey; CASE CH OF #48 : GOTO 1; #54 : GOTO 12; '.' : GOTO 16; #52 : GOTO 14; #56 : GOTO 18; #49 : GOTO 20; #50 : GOTO 22; #27 : GOTO 4; #0 : GOTO 11; ELSE GOTO 2 END; 11: CH:=ReadKey; CASE CH OF #59 : GOTO 5; #60 : GOTO 6; #61 : GOTO 7; #62 : GOTO 8; #63 : GOTO 9; #77 : GOTO 13; #83 : GOTO 17; #75 : GOTO 15; #64 : GOTO 10; #72 : GOTO 19; #80 : GOTO 23; 'O' : GOTO 21; ELSE GOTO 2 END; 5:{************ВРАЩЕНИЕ ВОКРУГ ВЕРТИКАЛЬНОЙ ОСИ**В*ПРАВО*****} FOR I:=1 TO 9 DO BEGIN RR[I]:=LEFT[I];LEFT[I]:=DARK[I]; DARK[I]:=RIGHT[I]; RIGHT[I]:=FACE[I];FACE[I]:=RR[I]; END; GOTO 3; 6:{***********ВРАЩЕНИЕ ВОКРУГ ВЕРТИКАЛЬНОЙ ОСИ***В ЛЕВО******} FOR I:=1 TO 9 DO BEGIN RR[I]:=LEFT[I];LEFT[I]:=FACE[I];FACE[I]:=RIGHT[I]; RIGHT[I]:=DARK[I];DARK[I]:=RR[I]; END; GOTO 3; 7:{************ВРАЩЕНИЕ ВОКРУГ ПЕРЕДНЕЙ ГРАНИ ПО ЧАС СТР*****} FOR I:=1 TO 9 DO BEGIN RR[I]:=LEFT[I];LEFT[I]:=DOWN[I];DOWN[I]:=RIGHT[I]; RIGHT[I]:=UP[I];UP[I]:=RR[I]; END; GOTO 3; 8:{*********ВРАЩЕНИЕ ВОКРУГ ПЕРЕДНЕЙ ГРАНИ ПPOT ЧАС СТР******} FOR I:=1 TO 9 DO BEGIN RR[I]:=LEFT[I];LEFT[I]:=UP[I];UP[I]:=RIGHT[I]; RIGHT[I]:=DOWN[I];DOWN[I]:=RR[I]; END; GOTO 3; 9:{**************ВРАЩЕНИЕ ВОКРУГ ПРАВОЙ ГРАНИ ПО ЧАС СТР*****} FOR I:=1 TO 9 DO BEGIN RR[I]:=FACE[I];FACE[I]:=DOWN[I];DOWN[I]:=DARK[I]; DARK[I]:=UP[I];UP[I]:=RR[I]; END; GOTO 3; 10:{**********ВРАЩЕНИЕ ВОКРУГ ПРАВОЙ ГРАНИ ПPOT ЧАС СТР******} FOR I:=1 TO 9 DO BEGIN RR[I]:=FACE[I];FACE[I]:=UP[I];UP[I]:=DARK[I]; DARK[I]:=DOWN[I];DOWN[I]:=RR[I]; END; GOTO 3; 12:{*******************ВРАЩЕНИЕ ПРАВОЙ ГРАНИ ПO ЧАС СТР******} I:=RIGHT[1];RIGHT[1]:=RIGHT[7];RIGHT[7]:=RIGHT[9]; RIGHT[9]:=RIGHT[3];RIGHT[3]:=I; I:=RIGHT[2];RIGHT[2]:=RIGHT[2]; RIGHT[4]:=RIGHT[8];RIGHT[8]:=RIGHT[6];RIGHT[6]:=I; RR[3]:=FACE[3]; FACE[3]:=DOWN[3];DOWN[3]:=DARK[3];DARK[3]:=UP[3];UP[3]:=RR[3]; RR[6]:=FACE[6];FACE[6]:=DOWN[6];DOWN[6]:=DARK[6];DARK[6]:=UP[6]; UP[6]:=RR[6]; RR[9]:=FACE[9];FACE[9]:=DOWN[9];DOWN[9]:=DARK[9]; DARK[9]:=UP[9];UP[9]:=RR[9]; GOTO 3; 13:{*****************ВРАЩЕНИЕ ПРАВОЙ ГРАНИ ПPOT ЧАС СТР******} FOR K:=1 TO 3 DO BEGIN I:=RIGHT[1];RIGHT[1]:=RIGHT[7];RIGHT[7]:=RIGHT[9];RIGHT[9]:=RIGHT[3]; RIGHT[3]:=I;I:=RIGHT[2];RIGHT[2]:=RIGHT[2];RIGHT[4]:=RIGHT[8]; RIGHT[8]:=RIGHT[6]; RIGHT[6]:=I;RR[3]:=FACE[3];FACE[3]:=DOWN[3]; DOWN[3]:=DARK[3]; DARK[3]:=UP[3];UP[3]:=RR[3];RR[6]:=FACE[6]; FACE[6]:=DOWN[6];DOWN[6]:=DARK[6]; DARK[6]:=UP[6];UP[6]:=RR[6]; RR[9]:=FACE[9];FACE[9]:=DOWN[9];DOWN[9]:=DARK[9]; DARK[9]:=UP[9]; UP[9]:=RR[9]; END; GOTO 3; 14:{*********************ВРАЩЕНИЕ LEВОЙ ГРАНИ ПO ЧАС СТР******} I:=LEFT[1];LEFT[1]:=LEFT[7];LEFT[7]:=LEFT[9];LEFT[9]:=LEFT[3]; LEFT[3]:=I;I:=LEFT[2];LEFT[2]:=LEFT[2];LEFT[4]:=LEFT[8]; LEFT[8]:=LEFT[6]; LEFT[6]:=I;RR[1]:=FACE[1];FACE[1]:=UP[1]; UP[1]:=DARK[1]; DARK[1]:=DOWN[1];DOWN[1]:=RR[1];RR[4]:=FACE[4]; FACE[4]:=UP[4];UP[4]:=DARK[4]; DARK[4]:=DOWN[4];DOWN[4]:=RR[4]; RR[7]:=FACE[7];FACE[7]:=UP[7];UP[7]:=DARK[7]; DARK[7]:=DOWN[7]; DOWN[7]:=RR[7]; GOTO 3; 15:{********************ВРАЩЕНИЕ LEВОЙ ГРАНИ ПPOT ЧАС СТР******} FOR K:=1 TO 3 DO BEGIN I:=LEFT[1];LEFT[1]:=LEFT[7]; LEFT[7]:=LEFT[9];LEFT[9]:=LEFT[3];LEFT[3]:=I;I:=LEFT[2]; LEFT[2]:=LEFT[2];LEFT[4]:=LEFT[8];LEFT[8]:=LEFT[6]; LEFT[6]:=I; RR[1]:=FACE[1];FACE[1]:=UP[1];UP[1]:=DARK[1]; DARK[1]:=DOWN[1]; DOWN[1]:=RR[1];RR[4]:=FACE[4];FACE[4]:=UP[4];UP[4]:=DARK[4]; DARK[4]:=DOWN[4];DOWN[4]:=RR[4];RR[7]:=FACE[7];FACE[7]:=UP[7]; UP[7]:=DARK[7]; DARK[7]:=DOWN[7];DOWN[7]:=RR[7]; END; GOTO 3; 16:{*****************ВРАЩЕНИЕ ПЕРЕДНЕЙ ГРАНИ ПO ЧАС СТР******} I:=FACE[1];FACE[1]:=FACE[7];FACE[7]:=FACE[9];FACE[9]:=FACE[3]; FACE[3]:=I; I:=FACE[2];FACE[2]:=FACE[4];FACE[4]:=FACE[8]; FACE[8]:=FACE[6]; FACE[6]:=I;RR[1]:=RIGHT[1];RIGHT[1]:=UP[7]; UP[7]:=LEFT[9]; LEFT[9]:=DOWN[3];DOWN[3]:=RR[1];RR[1]:=RIGHT[4]; RIGHT[4]:=UP[8];UP[8]:=LEFT[6]; LEFT[6]:=DOWN[2];DOWN[2]:=RR[1]; RR[1]:=RIGHT[7];RIGHT[7]:=UP[9];UP[9]:=LEFT[3]; LEFT[3]:=DOWN[1]; DOWN[1]:=RR[1]; GOTO 3; 17:{*****************ВРАЩЕНИЕ ПЕРЕДНЕЙ ГРАНИ ПPOT ЧАС СТР******} FOR K:=1 TO 3 DO BEGIN I:=FACE[1];FACE[1]:=FACE[7]; FACE[7]:=FACE[9];FACE[9]:=FACE[3];FACE[3]:=I; I:=FACE[2]; FACE[2]:=FACE[4];FACE[4]:=FACE[8];FACE[8]:=FACE[6]; FACE[6]:=I; RR[1]:=RIGHT[1];RIGHT[1]:=UP[7];UP[7]:=LEFT[9]; LEFT[9]:=DOWN[3]; DOWN[3]:=RR[1];RR[1]:=RIGHT[4];RIGHT[4]:=UP[8];UP[8]:=LEFT[6]; LEFT[6]:=DOWN[2];DOWN[2]:=RR[1];RR[1]:=RIGHT[7];RIGHT[7]:=UP[9]; UP[9]:=LEFT[3]; LEFT[3]:=DOWN[1];DOWN[1]:=RR[1]; END; GOTO 3; 18:{********************ВРАЩЕНИЕ ВЕРХНЕЙ ГРАНИ ПO ЧАС СТР******} I:=UP[1];UP[1]:=UP[7];UP[7]:=UP[9];UP[9]:=UP[3]; UP[3]:=I; I:=UP[2];UP[2]:=UP[4];UP[4]:=UP[8];UP[8]:=UP[6]; UP[6]:=I; RR[1]:=RIGHT[1];RIGHT[1]:=DARK[3];DARK[3]:=LEFT[1]; LEFT[1]:=FACE[1];FACE[1]:=RR[1]; RR[1]:=RIGHT[2];RIGHT[2]:=DARK[2];DARK[2]:=LEFT[2]; LEFT[2]:=FACE[2];FACE[2]:=RR[1]; RR[1]:=RIGHT[3];RIGHT[3]:=DARK[1];DARK[1]:=LEFT[3]; LEFT[3]:=FACE[3];FACE[3]:=RR[1]; GOTO 3; 19:{******************ВРАЩЕНИЕ ВЕРХНЕЙ ГРАНИ ПPOT ЧАС СТР******} FOR K:=1 TO 3 DO BEGIN I:=UP[1];UP[1]:=UP[7];UP[7]:=UP[9]; UP[9]:=UP[3];UP[3]:=I;I:=UP[2];UP[2]:=UP[4];UP[4]:=UP[8]; UP[8]:=UP[6]; UP[6]:=I; RR[1]:=RIGHT[1];RIGHT[1]:=DARK[3];DARK[3]:=LEFT[1]; LEFT[1]:=FACE[1];FACE[1]:=RR[1]; RR[1]:=RIGHT[2];RIGHT[2]:=DARK[2];DARK[2]:=LEFT[2]; LEFT[2]:=FACE[2];FACE[2]:=RR[1]; RR[1]:=RIGHT[3];RIGHT[3]:=DARK[1];DARK[1]:=LEFT[3]; LEFT[3]:=FACE[3];FACE[3]:=RR[1]; END; GOTO 3; 21:{******************ВРАЩЕНИЕ 3AДНЕЙ ГРАНИ ПPOT ЧАС СТР******} I:=DARK[1];DARK[1]:=DARK[7];DARK[7]:=DARK[9];DARK[9]:=DARK[3]; DARK[3]:=I;I:=DARK[2];DARK[2]:=DARK[4];DARK[4]:=DARK[8]; DARK[8]:=DARK[6]; DARK[6]:=I;RR[1]:=RIGHT[3];RIGHT[3]:=UP[1]; UP[1]:=LEFT[7]; LEFT[7]:=DOWN[9];DOWN[9]:=RR[1]; RR[1]:=RIGHT[6];RIGHT[6]:=UP[2];UP[2]:=LEFT[4]; LEFT[4]:=DOWN[8];DOWN[8]:=RR[1]; RR[1]:=RIGHT[9];RIGHT[9]:=UP[3];UP[3]:=LEFT[1]; LEFT[1]:=DOWN[7];DOWN[7]:=RR[1]; GOTO 3; 20:{****************************ВРАЩЕНИЕ 3AДНЕЙ ГРАНИ ПO ЧАС СТР******} FOR K:=1 TO 3 DO BEGIN I:=DARK[1];DARK[1]:=DARK[7]; DARK[7]:=DARK[9];DARK[9]:=DARK[3];DARK[3]:=I; I:=DARK[2]; DARK[2]:=DARK[4];DARK[4]:=DARK[8];DARK[8]:=DARK[6]; DARK[6]:=I; RR[1]:=RIGHT[3];RIGHT[3]:=UP[1];UP[1]:=LEFT[7]; LEFT[7]:=DOWN[9];DOWN[9]:=RR[1]; RR[1]:=RIGHT[6];RIGHT[6]:=UP[2];UP[2]:=LEFT[4]; LEFT[4]:=DOWN[8];DOWN[8]:=RR[1]; RR[1]:=RIGHT[9];RIGHT[9]:=UP[3];UP[3]:=LEFT[1]; LEFT[1]:=DOWN[7];DOWN[7]:=RR[1]; END; GOTO 3; 22:{******************ВРАЩЕНИЕ НИЖНЕЙ ГРАНИ ПO ЧАС СТР******} I:=DOWN[1];DOWN[1]:=DOWN[7];DOWN[7]:=DOWN[9];DOWN[9]:=DOWN[3]; DOWN[3]:=I; I:=DOWN[2];DOWN[2]:=DOWN[4];DOWN[4]:=DOWN[8]; DOWN[8]:=DOWN[6]; DOWN[6]:=I; RR[1]:=RIGHT[7];RIGHT[7]:=FACE[7];FACE[7]:=LEFT[7]; LEFT[7]:=DARK[9];DARK[9]:=RR[1]; RR[1]:=RIGHT[8];RIGHT[8]:=FACE[8];FACE[8]:=LEFT[8]; LEFT[8]:=DARK[8];DARK[8]:=RR[1]; RR[1]:=RIGHT[9];RIGHT[9]:=FACE[9];FACE[9]:=LEFT[9]; LEFT[9]:=DARK[7];DARK[7]:=RR[1]; GOTO 3; 23:{****************ВРАЩЕНИЕ НИЖНЕЙ ГРАНИ ПPOT ЧАС СТР******} FOR K:=1 TO 3 DO BEGIN I:=DOWN[1];DOWN[1]:=DOWN[7]; DOWN[7]:=DOWN[9];DOWN[9]:=DOWN[3]; DOWN[3]:=I; I:=DOWN[2];DOWN[2]:=DOWN[4];DOWN[4]:=DOWN[8]; DOWN[8]:=DOWN[6]; DOWN[6]:=I; RR[1]:=RIGHT[7];RIGHT[7]:=FACE[7];FACE[7]:=LEFT[7]; LEFT[7]:=DARK[9];DARK[9]:=RR[1]; RR[1]:=RIGHT[8];RIGHT[8]:=FACE[8];FACE[8]:=LEFT[8]; LEFT[8]:=DARK[8];DARK[8]:=RR[1]; RR[1]:=RIGHT[9];RIGHT[9]:=FACE[9];FACE[9]:=LEFT[9]; LEFT[9]:=DARK[7];DARK[7]:=RR[1]; END; GOTO 3; 4: CLOSEGRAPH END.