Advertisement
Guest User

Untitled

a guest
Jul 7th, 2015
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 8.85 KB | None | 0 0
  1. uses crt;
  2. var
  3.   game_over: Boolean;
  4.   i,n,k,m,z,x,y,a,p,max_x,max_y,bomb_count: integer;
  5.   map, map_hidden, map_out: array[1..7,1..7] of integer;
  6.   str_out,s,u,h: string;
  7.   point: array[1..2] of integer;
  8.  
  9.  
  10. //FUNCTION create_matrix(x_value,y_value: integer):array[1
  11.  
  12. //outputing procedure
  13. {
  14. PROCEDURE output_map(var i,n:integer;str_out: string);
  15.   var
  16.   i,n: integer;
  17.   str_out: string;
  18.  
  19.  
  20.   begin
  21.   write(' ');
  22.   for i:= 1 to max_y do write(i);
  23.   writeln();
  24.   for i:= 1 to max_y do
  25.     begin
  26.     str(i,s);
  27.     str_out:= s;
  28.     for n:= 1 to max_x do
  29.       begin
  30.        str_out:= str_out + map_out[i][n]
  31.        
  32.       end;
  33.     end;
  34.   end;
  35.  
  36.   {
  37.   PROCEDURE set_flag()
  38.     begin
  39.    
  40.    
  41.     end;
  42. }
  43.  
  44.  
  45.  
  46.  
  47. begin
  48.  
  49. //input and first operations with variables
  50.  
  51. game_over:= False;
  52.  
  53. writeln('input dimension of map');
  54. readln(max_x);
  55. readln(max_y);
  56. writeln('input bomb_count');
  57. readln(bomb_count);
  58. randomize;
  59. while i < bomb_count do
  60.   BEGIN
  61.     x:= random(max_x - 1) + 1;
  62.     y:= random(max_y - 1) + 1;
  63.     {
  64.     if map_out[y][x] = 0 then  
  65.       begin
  66.         map_out[y][x]:= 'B';
  67.         i:= i + 1;
  68.       end;    
  69.      }
  70.      map_out[y,x]:= 9;
  71.      i:= i + 1;
  72.      
  73.   END;
  74.  writeln(map_out);
  75. writeln('a');
  76. writeln(i);
  77. x:= 1;
  78. y:= 1;
  79. i:= 1;
  80. n:= 1;
  81. str_out:= '';
  82. p:= 1;
  83.  
  84. for i:= 2 to max_y + 1 do
  85.     for n:= 2 to max_x + 1 do
  86.       if map[i,n] <> 9 then
  87.         map[i,n]:= 0;
  88.  
  89. map:= map_out;        
  90.  
  91.  
  92.  
  93. //calculating and iterating map
  94.  
  95.  
  96.  
  97. for i:= 1 to max_y do
  98.     for n:= 1 to max_x  do
  99.     begin
  100.       if map[i][n] = 9 then
  101.         begin
  102.           if (i = 1) and (n = 1) then
  103.             begin
  104.             if map[i][n + 1] <> 9 then   //pravo
  105.               map[i][n + 1]:= map[i][n + 1] + 1;  
  106.             if map[i + 1][n] <> 9 then  //niz
  107.               map[i + 1][n]:= map[i + 1][n] + 1;
  108.             if map[i + 1][n + 1] <> 9 then //pravo niz
  109.               map[i + 1][n + 1]:= map[i + 1][n + 1] + 1;
  110.             end
  111.           else if (i = max_y) and (n = max_x) then
  112.           begin
  113.          
  114.             if map[i - 1][n - 1] <> 9 then //levo verh
  115.               map[i - 1][n - 1]:= map[i - 1][n - 1] + 1;
  116.             if map[i][n - 1] <> 9 then  // levo
  117.               map[i][n - 1]:= map[i][n - 1] + 1;
  118.             if map[i - 1][n] <> 9 then //verh
  119.               map[i - 1][n]:= map[i - 1][n] + 1;
  120.               end
  121.           else if (i = 1) and (n = max_x) then
  122.           begin
  123.             if map[i + 1][n] <> 9 then  //niz
  124.               map[i + 1][n]:= map[i + 1][n] + 1;
  125.             if map[i][n - 1] <> 9 then  // levo
  126.               map[i][n - 1]:= map[i][n - 1] + 1;
  127.             if map[i + 1][n - 1] <> 9 then //levo niz
  128.               map[i + 1][n - 1]:= map[i + 1][n - 1] + 1;
  129.               end
  130.           else if (i = max_y) and (n = 1) then
  131.           begin
  132.             if map[i - 1][n] <> 9 then //verh
  133.               map[i - 1][n]:= map[i - 1][n] + 1;
  134.             if map[i - 1][n] <> 9 then //verh
  135.               map[i - 1][n]:= map[i - 1][n] + 1;
  136.             if map[i - 1][n + 1] <> 9 then //pravo verh
  137.               map[i - 1][n + 1]:= map[i - 1][n + 1] + 1;
  138.               end
  139.           else if (1<i<max_y) and (n = 1) then
  140.           begin
  141.             if map[i][n + 1] <> 9 then   //pravo
  142.               map[i][n + 1]:= map[i][n + 1] + 1;
  143.             if map[i][n - 1] <> 9 then  // levo
  144.               map[i][n - 1]:= map[i][n - 1] + 1;
  145.             if map[i + 1][n] <> 9 then  //niz
  146.               map[i + 1][n]:= map[i + 1][n] + 1;
  147.             if map[i + 1][n + 1] <> 9 then //pravo niz
  148.                 map[i + 1][n + 1]:= map[i + 1][n + 1] + 1;
  149.             if map[i + 1][n - 1] <> 9 then //levo niz
  150.                 map[i + 1][n - 1]:= map[i + 1][n - 1] + 1;
  151.               end
  152.              
  153.           else if (i = 1) and (1<n<max_x) then
  154.           begin
  155.             if map[i - 1][n] <> 9 then //verh
  156.               map[i - 1][n]:= map[i - 1][n] + 1;
  157.             if map[i + 1][n] <> 9 then  //niz
  158.               map[i + 1][n]:= map[i + 1][n] + 1;
  159.             if map[i][n + 1] <> 9 then   //pravo
  160.               map[i][n + 1]:= map[i][n + 1] + 1;
  161.             if map[i - 1][n + 1] <> 9 then //pravo verh
  162.               map[i - 1][n + 1]:= map[i - 1][n + 1] + 1;
  163.             if map[i + 1][n + 1] <> 9 then //pravo niz
  164.               map[i + 1][n + 1]:= map[i + 1][n + 1] + 1;
  165.             if i = max_y and 1 < n < max_x then
  166.             end
  167.  
  168.           else if (1 < i < max_y) and (n = max_x) then        
  169.           begin
  170.             if map[i + 1][n - 1] <> 9 then //levo niz
  171.             map[i + 1][n - 1]:= map[i + 1][n - 1] + 1;
  172.             if map[i - 1][n - 1] <> 9 then //levo verh
  173.             map[i - 1][n - 1]:= map[i - 1][n - 1] + 1;
  174.             if map[i][n - 1] <> 9 then  // levo
  175.             map[i][n - 1]:= map[i][n - 1] + 1;
  176.             if map[i - 1][n] <> 9 then //verh
  177.             map[i - 1][n]:= map[i - 1][n] + 1;
  178.             if map[i + 1][n] <> 9 then  //niz
  179.             map[i + 1][n]:= map[i + 1][n] + 1;
  180.           end
  181.          
  182.           else if (i = max_y) and (1 < n < max_x) then
  183.           begin
  184.             if map[i][n + 1] <> 9 then   //pravo
  185.             map[i][n + 1]:= map[i][n + 1] + 1;
  186.             if map[i][n - 1] <> 9 then  // levo
  187.             map[i][n - 1]:= map[i][n - 1] + 1;
  188.             if map[i + 1][n] <> 9 then  //niz
  189.             map[i + 1][n]:= map[i + 1][n] + 1;
  190.             if map[i + 1][n + 1] <> 9 then //pravo niz
  191.             map[i + 1][n + 1]:= map[i + 1][n + 1] + 1;
  192.             if map[i + 1][n - 1] <> 9 then //levo niz
  193.             map[i + 1][n - 1]:= map[i + 1][n - 1] + 1;
  194.           end
  195.        
  196.        
  197.           else begin
  198.           if map[i][n + 1] <> 9 then   //pravo
  199.             map[i][n + 1]:= map[i][n + 1] + 1;
  200.           if map[i][n - 1] <> 9 then  // levo
  201.             map[i][n - 1]:= map[i][n - 1] + 1;
  202.           if map[i - 1][n] <> 9 then //verh
  203.             map[i - 1][n]:= map[i - 1][n] + 1;
  204.           if map[i + 1][n] <> 9 then  //niz
  205.             map[i + 1][n]:= map[i + 1][n] + 1;
  206.            
  207.           if map[i - 1][n + 1] <> 9 then //pravo verh
  208.             map[i - 1][n + 1]:= map[i - 1][n + 1] + 1;
  209.           if map[i + 1][n + 1] <> 9 then //pravo niz
  210.             map[i + 1][n + 1]:= map[i + 1][n + 1] + 1;
  211.           if map[i + 1][n - 1] <> 9 then //levo niz
  212.             map[i + 1][n - 1]:= map[i + 1][n - 1] + 1;
  213.           if map[i - 1][n - 1] <> 9 then //levo verh
  214.             map[i - 1][n - 1]:= map[i - 1][n - 1] + 1;
  215.           end;
  216.         end;
  217.     end;
  218.  {
  219.  for i:= 1 to max_y - 1 do
  220.   for n:= 1 to max_x - 1 do
  221.     if (map[i + 1,n] = 9) and (map[i,n] < 9)
  222.       then
  223.         map[i,n]:= map[i,n] + 1;
  224.  
  225. for i:= max_y  downto 2 do
  226.   for n:= max_y  downto 2 do
  227.     if (map[i - 1,n] = 9) and (map[i,n]< 9)
  228.       then
  229.         map[i,n]:= map[i,n] + 1;
  230.  
  231.   for n:= 1 to max_y - 1 do
  232.   for i:= 1 to max_x - 1 do
  233.     if (map[i + 1,n] = 9) and  (map[i,n] < 9)
  234.       then
  235.         map[i,n]:= map[i,n] + 1;
  236.        
  237.  for n:= max_y  downto 2 do
  238.   for i:= max_y  downto 2 do
  239.     if (map[i - 1,n] = 9) and (map[i,n] < 9)
  240.       then
  241.         map[i,n]:= map[i,n] + 1;
  242.        
  243.  for n:= ms  
  244.  
  245.  }
  246.  
  247.  
  248.  
  249. i:= 1;
  250. while i <= high(map) do
  251.   BEGIN
  252.   writeln('a');
  253.   n:= 1;
  254.   while n <= high(map) do
  255.   begin
  256.     write(map[i,n]);
  257.     n:= n + 1;
  258.   end;
  259.   i:= i + 1;
  260.   END;
  261.  
  262.  
  263.  
  264. {
  265.     end;
  266.   end;
  267. writeln(map);
  268. }
  269.  
  270. writeln(' ');
  271. writeln(' ');
  272.  
  273. // output matrix
  274. {
  275.   begin
  276.   write(' ');
  277.   for i:= 1 to max_y do write(i);
  278.   writeln();
  279.   for i:= 1 to max_y do
  280.     begin
  281.     str(i,s);
  282.     str_out:= s;
  283.     for n:= 1 to max_x do
  284.       begin
  285.         str(map_out[i,n],s);
  286.        str_out:= str_out + s;
  287.       end;
  288.       writeln(str_out);
  289.     end;
  290.   end;
  291.  
  292. }
  293.  
  294. {
  295. begin
  296. for i:= 1 to max_y do
  297.   writeln(map[i])
  298. end;
  299. }
  300. {
  301.   begin
  302.   write(' ');
  303.   for i:= 1 to max_y do write(i);
  304.   writeln();
  305.   for i:= 2 to (max_y + 1) do
  306.     begin
  307.     str(i - 1,s);
  308.     str_out:= s;
  309.     for n:= 1 to max_x do
  310.       begin
  311.        str_out:= str_out + map[i][n]
  312.       end;
  313.       writeln(str_out);
  314.     end;
  315.   end;
  316.  }
  317.  
  318. //main cycle
  319. {
  320. while (game_over = False) or (p <= (max_x * max_y)) do
  321.   begin
  322.   clrscr;
  323.       begin
  324.         write(' ');
  325.         for i:= 1 to max_y do write(i);
  326.         writeln();
  327.         for i:= 1 to max_y do
  328.           begin
  329.           str(i,s);
  330.           str_out:= s;
  331.           for n:= 1 to max_x do
  332.             begin
  333.             str(map_out[i,n],s);
  334.             str_out:= str_out + s;
  335.             end;
  336.             writeln(str_out);
  337.           end;
  338.       end;
  339.       writeln('input position(x,y)');
  340.       readln(x,y);
  341.       writeln('choose action:(1-check area, 2-set flag)');
  342.       readln(a);
  343.       if a = 1 then
  344.         begin
  345.           if map[y,x] <> 9 then
  346.  
  347.           else game_over:= True;
  348.         end
  349.       else map[y,x]:= 7;   //7 zam na simvol
  350.       end;
  351. //output
  352. }
  353. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement