Gistrec

test robot

Jul 17th, 2014
450
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 11.30 KB | None | 0 0
  1. uses crt;
  2. {             A_ _ _B_ _ _C_ _ _D
  3.               |     |     |     |
  4.               |  11 |  12 |  13 |
  5.               E_ _ _F_ _ _G_ _ _J
  6.               |     |     |     |
  7.               |  21 |РОБОТ|  23 |
  8.               K_ _ _L_ _ _M_ _ _N
  9.               |     |     |     |
  10.               |  31 |  32 |  33 |
  11.               O_ _ _P_ _ _Q_ _ _S        }
  12. var {Горизонтальные стенки:}
  13.     AB,BC,CD,EF,FG,GJ,KL,LM,MN,OP,PQ,QS:integer;
  14.     {Вертикальные стенки:}
  15.     AE,EK,KO,BF,FL,LP,CG,GM,MQ,DJ,JN,NS:integer;
  16.     {Клетки:}
  17.     ABFE,DCGF,CDJG,EFLK,FGML,GJNM,KLPO,LMQP,MNSQ:integer;
  18.     {Координаты робота:}
  19.     pos:integer;
  20.     finish:string;//клетка финиша
  21.     status:integer;//Ввод линий, координат робота
  22.     x:integer;
  23.     up,down,left,right:integer;
  24. label start;
  25.  
  26.  
  27. procedure write_robot;
  28. begin
  29.                        gotoxy(25,1);write('Введите начальное положение робота');
  30.                        gotoxy(25,2);writeln('ABFE = 1');
  31.                        gotoxy(25,3);writeln('DCFG = 2');
  32.                        gotoxy(25,4);writeln('CDJG = 3');
  33.                        gotoxy(25,5);writeln('EFLK = 4');
  34.                        gotoxy(25,6);writeln('FGML = 5');
  35.                        gotoxy(25,7);writeln('GJNM = 6');
  36.                        gotoxy(25,8);writeln('KLPO = 7');
  37.                        gotoxy(25,9);writeln('LMQP = 8');
  38.                        gotoxy(25,10);writeln('MNSQ = 9');
  39. end;
  40.  
  41. procedure write_pos(pos:integer);
  42. begin
  43.    case pos of                    
  44.               11:begin gotoxy(2,3);write('РОБОТ');end;
  45.               12:begin gotoxy(8,3);write('РОБОТ');end;
  46.               13:begin gotoxy(14,3);write('РОБОТ');end;
  47.               21:begin gotoxy(2,6);write('РОБОТ');end;
  48.               22:begin gotoxy(8,6);write('РОБОТ');end;
  49.               23:begin gotoxy(14,6);write('РОБОТ');end;
  50.               31:begin gotoxy(2,9);write('РОБОТ');end;
  51.               32:begin gotoxy(8,9);write('РОБОТ');end;
  52.               33:begin gotoxy(14,9);write('РОБОТ');end;
  53.     end;
  54. end;
  55.  
  56. procedure dir;
  57. begin
  58. if pos=11 t
  59. \hen begin if AB=0 then up:=1 else up:=0; if BF=0 then right:=1 else right:=0; if EF=0 then down:=1 else down:=0; if AE=0 then left:=1 else left:=0;end;
  60. if pos=12 then begin if BC=0 then up:=1 else up:=0; if CG=0 then right:=1 else right:=0; if FG=0 then down:=1 else down:=0; if BF=0 then left:=1 else left:=0;end;
  61. if pos=13 then begin if CD=0 then up:=1 else up:=0; if DJ=0 then right:=1 else right:=0; if GJ=0 then down:=1 else down:=0; if CG=0 then left:=1 else left:=0;end;
  62. if pos=21 then begin if EF=0 then up:=1 else up:=0; if FL=0 then right:=1 else right:=0; if KL=0 then down:=1 else down:=0; if EK=0 then left:=1 else left:=0;end;
  63. if pos=22 then begin if FG=0 then up:=1 else up:=0; if GM=0 then right:=1 else right:=0; if LM=0 then down:=1 else down:=0; if FL=0 then left:=1 else left:=0;end;
  64. if pos=23 then begin if GJ=0 then up:=1 else up:=0; if JN=0 then right:=1 else right:=0; if MN=0 then down:=1 else down:=0; if GM=0 then left:=1 else left:=0;end;
  65. if pos=31 then begin if KL=0 then up:=1 else up:=0; if LP=0 then right:=1 else right:=0; if KO=0 then down:=1 else down:=0; if OP=0 then left:=1 else left:=0;end;
  66. if pos=32 then begin if LM=0 then up:=1 else up:=0; if MQ=0 then right:=1 else right:=0; if LP=0 then down:=1 else down:=0; if PQ=0 then left:=1 else left:=0;end;
  67. if pos=33 then begin if MN=0 then up:=1 else up:=0; if NS=0 then right:=1 else right:=0; if MQ=0 then down:=1 else down:=0; if QS=0 then left:=1 else left:=0;end;
  68.    gotoxy(25,1);writeln('Введите направление робота ( 0 - автопрохождение)');
  69.    gotoxy(25,2);writeln('Вверх = 1');
  70.    gotoxy(25,3);writeln('Вниз = 2');
  71.    gotoxy(25,4);writeln('Вправо = 3');
  72.    gotoxy(25,5);writeln('Влево = 4');
  73.    gotoxy(1,12);
  74.    read(x);
  75.    case x of
  76.    0:status:=0;
  77.    1:if up=1 then pos:=pos-10 else begin TextColor(red);writeln('Нельзя двигаться наверх');readkey;end;
  78.    2:if down=1 then pos:=pos+10 else begin TextColor(red);writeln('Нельзя двигаться вниз');readkey;end;
  79.    3:if right=1 then pos:=pos+1 else begin TextColor(red);writeln('Нельзя двигаться вправо');readkey;end;
  80.    4:if left=1 then pos:=pos-1 else begin TextColor(red);writeln('Нельзя двигаться влево');readkey;end;
  81.    end;
  82. end;
  83.  
  84. procedure wall;
  85. begin
  86. gotoxy(25,1);
  87. write('Выберите стенки (Чтобы продолжить, введите 0)');
  88.       gotoxy(25,2);write('AB = 1');gotoxy(25,3);write('BC = 2');gotoxy(25,4);write('CD = 3');
  89.       gotoxy(25,5);write('EF = 4');gotoxy(25,6);write('FG = 5');gotoxy(25,7);write('GJ = 6');
  90.       gotoxy(25,8);write('KL = 7');gotoxy(25,9);write('LM = 8');gotoxy(25,10);write('MN = 9');
  91.       gotoxy(25,11);write('OP = 10');gotoxy(25,12);write('PQ = 11');gotoxy(25,13);write('QS = 12');
  92. { II }gotoxy(35,2);write('AE = 13');gotoxy(35,3);write('EK = 14');gotoxy(35,4);write('KO = 15');
  93.       gotoxy(35,5);write('BF = 16');gotoxy(35,6);write('FL = 17');gotoxy(35,7);write('LP = 18');
  94.       gotoxy(35,8);write('CG = 19');gotoxy(35,9);write('GM = 20');gotoxy(35,10);write('MQ = 21');
  95.       gotoxy(35,11);write('DJ = 22');gotoxy(35,12);write('JN = 23');gotoxy(35,13);write('NS = 24');
  96. end;
  97.  
  98. procedure write_pole;
  99. begin
  100. gotoxy(1,1);
  101. TextColor(white);write('A');if AB=1 then TextColor(green) else TextColor(white);write('_ _ _');TextColor(white); write('B');if BC=1 then TextColor(green) else TextColor(white);write('_ _ _');TextColor(white);write('C');if CD=1 then TextColor(green) else TextColor(white);write('_ _ _');Textcolor(white);writeln('D');
  102. if AE=1 then TextColor(green) else TextColor(white); write('|     ');if BF=1 then TextColor(green) else TextColor(white); write('|     ');if CG=1 then TextColor(green) else Textcolor(white);write('|     ');if DJ=1 then textcolor(green) else Textcolor(white);writeln('|     ');
  103. if AE=1 then TextColor(green) else TextColor(white); write('|     ');if BF=1 then TextColor(green) else TextColor(white); write('|     ');if CG=1 then TextColor(green) else Textcolor(white);write('|     ');if DJ=1 then textcolor(green) else Textcolor(white);writeln('|     ');
  104. TextColor(white);write('E');if EF=1 then TextColor(green) else TextColor(white);write('_ _ _');TextColor(white); write('F');if FG=1 then TextColor(green) else TextColor(white);write('_ _ _');TextColor(white);write('G');if GJ=1 then TextColor(green) else TextColor(white);write('_ _ _');Textcolor(white);writeln('J');
  105. if EK=1 then TextColor(green) else TextColor(white); write('|     ');if FL=1 then TextColor(green) else TextColor(white); write('|     ');if GM=1 then TextColor(green) else Textcolor(white);write('|     ');if JN=1 then textcolor(green) else Textcolor(white);writeln('|     ');
  106. if EK=1 then TextColor(green) else TextColor(white); write('|     ');if FL=1 then TextColor(green) else TextColor(white); write('|     ');if GM=1 then TextColor(green) else Textcolor(white);write('|     ');if JN=1 then textcolor(green) else Textcolor(white);writeln('|     ');
  107. TextColor(white);write('K');if KL=1 then TextColor(green) else TextColor(white);write('_ _ _');TextColor(white); write('L');if LM=1 then TextColor(green) else TextColor(white);write('_ _ _');TextColor(white);write('M');if MN=1 then TextColor(green) else TextColor(white);write('_ _ _');Textcolor(white);writeln('N');
  108. if KO=1 then TextColor(green) else TextColor(white); write('|     ');if LP=1 then TextColor(green) else TextColor(white); write('|     ');if MQ=1 then TextColor(green) else Textcolor(white);write('|     ');if NS=1 then textcolor(green) else Textcolor(white);writeln('|     ');
  109. if KO=1 then TextColor(green) else TextColor(white); write('|     ');if LP=1 then TextColor(green) else TextColor(white); write('|     ');if MQ=1 then TextColor(green) else Textcolor(white);write('|     ');if NS=1 then textcolor(green) else Textcolor(white);writeln('|     ');
  110. TextColor(white);write('O');if OP=1 then TextColor(green) else TextColor(white);write('_ _ _');TextColor(white); write('P');if PQ=1 then TextColor(green) else TextColor(white);write('_ _ _');TextColor(white);write('Q');if QS=1 then TextColor(green) else TextColor(white);write('_ _ _');Textcolor(white);writeln('S');
  111. end;
  112. begin
  113. status:=1;
  114. start:
  115.    if status=1 then begin
  116.                     write_pole;
  117.                     wall;
  118.                     gotoxy(1,13);
  119.                     read(x);
  120.                     case x of
  121.                     0: status:=2;
  122.                     1: if AB=1 then AB:=0 else AB:=1;
  123.                     2: if BC=1 then BC:=0 else BC:=1;
  124.                     3: if CD=1 then CD:=0 else CD:=1;
  125.                     4: if EF=1 then EF:=0 else EF:=1;
  126.                     5: if FG=1 then FG:=0 else FG:=1;
  127.                     6: if GJ=1 then GJ:=0 else GJ:=1;
  128.                     7: if KL=1 then KL:=0 else KL:=1;
  129.                     8: if LM=1 then LM:=0 else LM:=1;
  130.                     9: if MN=1 then MN:=0 else MN:=1;
  131.                     10: if OP=1 then OP:=0 else OP:=1;
  132.                     11: if PQ=1 then PQ:=0 else PQ:=1;
  133.                     12: if QS=1 then QS:=0 else QS:=1;
  134.                     13: if AE=1 then AE:=0 else AE:=1;
  135.                     14: if EK=1 then EK:=0 else EK:=1;
  136.                     15: if KO=1 then KO:=0 else KO:=1;
  137.                     16: if BF=1 then BF:=0 else BF:=1;
  138.                     17: if FL=1 then FL:=0 else FL:=1;
  139.                     18: if LP=1 then LP:=0 else LP:=1;
  140.                     19: if CG=1 then CG:=0 else CG:=1;
  141.                     20: if GM=1 then GM:=0 else GM:=1;
  142.                     21: if MQ=1 then MQ:=0 else MQ:=1;
  143.                     22: if DJ=1 then DJ:=0 else DJ:=1;
  144.                     23: if JN=1 then JN:=0 else JN:=1;
  145.                     24: if NS=1 then NS:=0 else NS:=1;
  146.                     end;
  147.                     clrscr();
  148.                     goto start;
  149.                     end;
  150.       if status=2 then begin
  151.                        write_pole;
  152.                        write_robot;
  153.                        read(x);
  154.                        case x of
  155.                        1:begin gotoxy(2,3);write('РОБОТ');pos:=11;end;
  156.                        2:begin gotoxy(8,3);write('РОБОТ');pos:=12;end;
  157.                        3:begin gotoxy(14,3);write('РОБОТ');pos:=13;end;
  158.                        4:begin gotoxy(2,6);write('РОБОТ');pos:=21;end;
  159.                        5:begin gotoxy(8,6);write('РОБОТ');pos:=22;end;
  160.                        6:begin gotoxy(14,6);write('РОБОТ');pos:=23;end;
  161.                        7:begin gotoxy(2,9);write('РОБОТ');pos:=31;end;
  162.                        8:begin gotoxy(8,9);write('РОБОТ');pos:=32;end;
  163.                        9:begin gotoxy(14,9);write('РОБОТ');pos:=33;end;
  164.                        end;
  165.                        status:=3;
  166.                        clrscr();
  167.                        end;
  168.        if status=3 then begin
  169.                         write_pole;
  170.                         write_pos(pos);
  171.                         dir;
  172.                         clrscr();
  173.                         goto start;
  174.                         end;
  175.                        
  176.        if status=4 then begin
  177.                    
  178.                     end;
  179. end.
Advertisement
Add Comment
Please, Sign In to add comment