Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Uses Graph,Crt;
- label qwerty;
- const clr:FillPatternType=(255,255,255,255,255,255,255,255);
- max=159; maxb=79;
- VAR
- _Pole1:Array [ 0..max , 0..101 ] of byte;
- _Pole2:Array [ 0..max , 0..101 ] of byte;
- _X,_Y,__X,__Y,_I,_J,__i:byte;
- _A:char;
- FilNam:string;
- F:File of byte;
- Kom:array [0..135] of char;
- Pocol:longInt;
- function _Str(a:LongInt):String;
- var qw:String;
- begin
- Str(a:28,qw);
- _Str:=qw;
- end;
- Procedure Load;
- var GD,GR:Integer;
- begin
- GD:=9{Detect};GR:=2;Pocol:=0;
- InitGraph(GD,GR,'DRIVERS');
- setbkcolor(0);
- SetFillPattern( clr , 1 );
- bar(0,2,639,404);
- end;
- Begin
- Load;
- For _J:=0 to 101 do
- For _I:=0 to maxb do begin
- _Pole1[_I*2+1,_j]:=0;_Pole2[_I*2+1,_j]:=0;_Pole1[_I*2,_j]:=0;_Pole2[_I*2,_j]:=0;
- end;
- _X:=1;_Y:=1;_A:=#0;__X:=0;__Y:=0;
- while _A<>#27 do
- begin
- _A:=readkey;
- SetFillPattern( clr , 1 );
- bar(_X*4-2,_Y*4,3+_X*4-2,3+_Y*4);
- if _Pole1[_X,_Y]=0 then begin {setcolor(0);} SetFillPattern( clr , 0 ); bar(_I*4,_J*4,2+_I*4,2+_J*4); end
- else begin {setcolor(7);} SetFillPattern( clr , 2 ); bar(_I*4,_J*4,2+_I*4,2+_J*4); end;
- if _A=#60 Then
- begin
- while not keypressed do
- BEGIN
- {delay (1);}
- Pocol:=Pocol+1;
- FOR _I:=1 to max do
- for _J:=1 to 100 do
- begin
- if 3=_pole1[_i-1,_j-1]
- +_pole1[_i,_j-1]+_pole1[_i+1,_j-1]+_pole1[_i-1,_j]+_pole1[_i+1,_j]+_pole1[_i-1,_j+1]+_pole1[_i,_j+1]+_pole1[_i+1,_j+1]
- then _Pole2[_I,_J]:=1;
- if 4<=_pole1[_i-1,_j-1]
- +_pole1[_i,_j-1]+_pole1[_i+1,_j-1]+_pole1[_i-1,_j]+_pole1[_i+1,_j]+_pole1[_i-1,_j+1]+_pole1[_i,_j+1]+_pole1[_i+1,_j+1]
- then _Pole2[_I,_J]:=0;
- if 1>=_pole1[_i-1,_j-1]
- +_pole1[_i,_j-1]+_pole1[_i+1,_j-1]+_pole1[_i-1,_j]+_pole1[_i+1,_j]+_pole1[_i-1,_j+1]+_pole1[_i,_j+1]+_pole1[_i+1,_j+1]
- then _Pole2[_I,_J]:=0;
- if 2=_pole1[_i-1,_j-1]
- +_pole1[_i,_j-1]+_pole1[_i+1,_j-1]+_pole1[_i-1,_j]+_pole1[_i+1,_j]+_pole1[_i-1,_j+1]+_pole1[_i,_j+1]+_pole1[_i+1,_j+1]
- then _Pole2[_I,_J]:=_Pole1[_I,_J];
- end;
- FOR _I:=1 to max do
- for _J:=1 to 100 do
- begin
- _Pole1[_I,_J]:=_Pole2[_I,_J];
- end;
- For _I:=1 to max do
- For _J:=1 to 100 do
- begin
- textbackground(1);
- textcolor(7);
- gotoxy(_I-__X,_J-__Y);
- if (_I=_X)and(_J=_Y) then begin
- textbackground(7);
- textcolor(1);
- end;
- if _Pole1[_I,_J]=0 then begin {setcolor(0);} SetFillPattern( clr , 0 ); bar(_I*4-2,_J*4,2+_I*4-2,2+_J*4); end
- else begin {setcolor(7);} SetFillPattern( clr , 2 ); bar(_I*4-2,_J*4,2+_I*4-2,2+_J*4); end;
- end;
- for _I:=1 to 24 do
- {begin
- gotoxy(51,_I); WRITE(' '); end;
- gotoxy(51,1); WRITE(' _X=',_X,' __X=',__X);
- gotoxy(51,3); WRITE(' _Y=',_Y,' __Y=',__Y);
- gotoxy(51,5); WRITE(' Очистить все F1');
- gotoxy(51,7); WRITE(' жизнь до клавиши F2');}
- {OutTextXY(_I,1,' ');}
- {OutTextXY(1,_I*10+410,'* *');
- OutTextXY(10,420,'F1....Очистить все ');
- OutTextXY(10,430,'F2....Жизнь до клавиши');
- OutTextXY(10,440,'F3....Сохранить, как???');
- OutTextXY(10,450,'F4....Загрузить, что???');
- }
- SetFillPattern( clr , 1 ); bar(245,458,640,468);
- OutTextXY(270,460,'Текущее значение: '+_Str(pocol));
- end;
- end;
- if _A=#59 Then
- begin
- For _J:=0 to 101 do
- For _I:=0 to maxb do begin
- _Pole1[_I*2+1,_j]:=0;_Pole2[_I*2+1,_j]:=0;_Pole1[_I*2,_j]:=0;_Pole2[_I*2,_j]:=0;
- end;
- end;
- if _A=#49 Then Begin _Y:=_Y+10; _X:=_X-10; end;
- if _A=#51 Then Begin _Y:=_Y+10; _X:=_X+10; end;
- if _A=#55 Then Begin _Y:=_Y-10; _X:=_X-10; end;
- if _A=#57 Then Begin _Y:=_Y-10; _X:=_X+10; end;
- if _A=#50 Then _Y:=_Y+10;
- if _A=#52 Then _X:=_X-10;
- if _A=#54 Then _X:=_X+10;
- if _A=#56 Then _Y:=_Y-10;
- if _A=#77 Then _X:=_X+1;
- if _A=#75 Then _X:=_X-1;
- if _A=#80 Then _Y:=_Y+1;
- if _A=#72 Then _Y:=_Y-1;
- if _A=#32 Then If _Pole1[_X,_Y]=0 then _Pole1[_X,_Y]:=1 else _Pole1[_X,_Y]:=0;
- if _A=#53 Then If _Pole1[_X,_Y]=0 then _Pole1[_X,_Y]:=1 else _Pole1[_X,_Y]:=0;
- if _A=#61 Then
- begin
- RestoreCRTMode;
- clrscr;
- WriteLn('Введи, г..д, имя файла. * Сохранение *');
- ReadLn(FilNam);
- Assign(F,FilNam);
- {$I-}
- ReWrite(F);
- IF IOResult<>0 Then begin FilNam:='ErrorFil.TMP'; WriteLn('Имя файла: ','ErrorFil.TMP'); Assign(F,FilNam); ReWrite(F); end;
- {$I+}
- Write(F,_X);
- Write(F,_Y);
- FOR _I:=1 to max do
- for _J:=1 to 100 do
- Write(F,_Pole1[_I,_J]);
- WriteLn('Введите строку комментария.(не более 135 символов)');
- ReadLn(Kom);
- for _i:=0 to Length(Kom) do
- begin
- _J:=Ord(Kom[_I]);
- Write(F,_J);
- end;
- SetGraphMode(GetGraphMode);
- SetFillPattern( clr , 1 );
- bar(2,2,564,404);
- Close(F);
- end;
- if _A=#62 Then
- begin
- RestoreCRTMode;
- clrscr;
- WriteLn('Введи, г..д, имя файла. * Открытие *');
- ReadLn(FilNam);
- Assign(F,FilNam);
- {$I-}
- Reset(F);
- IF IOResult<>0 Then begin WriteLn('Ошибка.');delay(60000); Goto qwerty; end;
- {$I+}
- Read(F,_X);
- Read(F,_Y);
- FOR _I:=1 to max do
- for _J:=1 to 100 do
- Read(F,_Pole1[_I,_J]);
- for _i:=0 to Length(Kom) do
- begin
- {_J:=Ord(Kom[_I]);}
- if not(eof(F)) Then begin
- read(F,_J);
- Kom[_I]:=Chr(_J); end;
- end;
- Close(F);
- qwerty:
- SetGraphMode(GetGraphMode);
- SetFillPattern( clr , 1 );
- bar(2,2,564,404);
- end;
- if _A=#63 Then Pocol:=0;
- if _A=#13 Then
- BEGIN
- Pocol:=Pocol+1;
- FOR _I:=1 to max do
- for _J:=1 to 100 do
- begin
- if 3=_pole1[_i-1,_j-1]
- +_pole1[_i,_j-1]+_pole1[_i+1,_j-1]+_pole1[_i-1,_j]+_pole1[_i+1,_j]+_pole1[_i-1,_j+1]+_pole1[_i,_j+1]+_pole1[_i+1,_j+1]
- then _Pole2[_I,_J]:=1;
- if 4<=_pole1[_i-1,_j-1]
- +_pole1[_i,_j-1]+_pole1[_i+1,_j-1]+_pole1[_i-1,_j]+_pole1[_i+1,_j]+_pole1[_i-1,_j+1]+_pole1[_i,_j+1]+_pole1[_i+1,_j+1]
- then _Pole2[_I,_J]:=0;
- if 1>=_pole1[_i-1,_j-1]
- +_pole1[_i,_j-1]+_pole1[_i+1,_j-1]+_pole1[_i-1,_j]+_pole1[_i+1,_j]+_pole1[_i-1,_j+1]+_pole1[_i,_j+1]+_pole1[_i+1,_j+1]
- then _Pole2[_I,_J]:=0;
- if 2=_pole1[_i-1,_j-1]
- +_pole1[_i,_j-1]+_pole1[_i+1,_j-1]+_pole1[_i-1,_j]+_pole1[_i+1,_j]+_pole1[_i-1,_j+1]+_pole1[_i,_j+1]+_pole1[_i+1,_j+1]
- then _Pole2[_I,_J]:=_Pole1[_I,_J];
- end;
- FOR _I:=1 to max do
- for _J:=1 to 100 do
- begin
- _Pole1[_I,_J]:=_Pole2[_I,_J];
- end;
- END;
- if _X<1 then _x:=1 ;
- if _X>max then _X:=max ;
- if _Y<1 then _Y:=1 ;
- if _Y>100 then _Y:=100 ;
- {if (_Y<=__Y)AND(_Y>0) then __Y:=__Y-1 ;}
- {if (_Y>__Y+25)and(_Y<=100) then __Y:=__Y+1 ;}
- {if __Y<0 then __Y:=0 ;
- if __Y>76 then __Y:=76 ;
- if (_X<=__X)AND(_X>0) then __X:=__X-1 ;
- if (_X>__X+50)and(_X<=100) then __X:=__X+1 ;
- if __X<0 then __X:=0 ;
- if __X>51 then __X:=76 ;}
- For _I:=1 to max do
- For _J:=1 to 100 do
- begin
- textbackground(1);
- textcolor(7);
- gotoxy(_I-__X,_J-__Y);
- if (_I=_X)and(_J=_Y) then begin
- SetFillPattern( clr , 15 );
- bar(_I*4-2,_J*4,3+_I*4-2,3+_J*4);
- end;
- if _Pole1[_I,_J]=0 then begin {setcolor(0);} SetFillPattern( clr , 0 ); bar(_I*4-2,_J*4,2+_I*4-2,2+_J*4); end
- else begin {setcolor(7);} SetFillPattern( clr , 2 ); bar(_I*4-2,_J*4,2+_I*4-2,2+_J*4); end;
- end;
- for _I:=1 to 5 do
- {begin gotoxy(51,_I); WRITE(' '); end;
- gotoxy(51,1); WRITE(' _X=',_X,' __X=',__X);
- gotoxy(51,3); WRITE(' _Y=',_Y,' __Y=',__Y);
- gotoxy(51,5); WRITE(' Очистить все F1');
- gotoxy(51,7); WRITE(' жизнь до клавиши F2');}
- {OutTextXY(1,_I*10+410,'* *');}
- OutTextXY(10,420,'*F1....Очистить все *');
- OutTextXY(10,430,'*F2....Жизнь до клавиши *');
- OutTextXY(10,440,'*F3....Сохранить, как??? *');
- OutTextXY(10,450,'*F4....Загрузить, что??? *');
- OutTextXY(10,460,'*F5....Обнулить счетчик *');
- OutTextXY(270,420,copy(Kom,1,45));
- OutTextXY(270,430,copy(Kom,46,45));
- OutTextXY(270,440,copy(Kom,91,45));
- SetFillPattern( clr , 1 ); bar(245,458,640,468);
- OutTextXY(270,460,'Текущее значение: '+_Str(pocol));
- end;
- CloseGraph;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement