LINE2.PAS 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. Uses CRT,Graph;
  2. Var
  3. C :char;
  4. W : word;
  5. Dir, b, e : byte;
  6. Num : integer;
  7. en : array [1..2] of byte;
  8. bg : array [1..2] of byte;
  9. a : array [1..79, 1..24] of integer;
  10. i,j,k : byte;
  11. {-----------------======================-----------------}
  12. Procedure Apple;
  13. Var i,j,k,b1,b2 : byte;
  14. begin
  15. randomize;
  16. repeat
  17. i := random(77);
  18. j := random(24);
  19. k := random(9);
  20. until (i > 2) and (i < 78) and (j > 2 ) and (j < 22)
  21. and (k <> 0) and (a[i,j] = 0);
  22. b1 := WhereX;
  23. b2 := WhereY;
  24. GotoXY(i,j);
  25. Write(k);
  26. a[i,j] := - k;
  27. GotoXY(b1,b2);
  28. end;
  29. {-------------------------------------------------------}
  30. Procedure Ext;
  31. var Gd, Gm :integer;
  32. begin
  33. {Sound(100);
  34. Delay(2000);
  35. Nosound;}
  36. Gd := Detect;
  37. InitGraph(Gd, Gm, '');
  38. if GraphResult <> grOk then Halt(1);
  39. ClearDevice;
  40. SetColor(Magenta);
  41. SetTextStyle(TriplexFont, HorizDir,10);
  42. OutTextXY(150,100,'Game');
  43. OutTextXY(170,200,'OveR');
  44. ReadKey;
  45. CloseGraph;
  46. Halt
  47. end; {Ext}
  48. {-------------------------------------------------------}
  49. Procedure StartUp;
  50. var
  51. Gd, Gm : Integer;
  52. begin
  53. Gd := Detect;
  54. InitGraph(Gd, Gm, '');
  55. if GraphResult <> grOk then Halt(1);
  56. ClearDevice;
  57. SetColor(Blue);
  58. SetTextStyle(3, HorizDir,8);
  59. OutTextXY(80,100,'Game Piton');
  60. SetColor(White);
  61. SetTextStyle(1,HorizDir,2);
  62. OutTextXY(200,450,'///Press any key\\\');
  63. ReadKey;
  64. CloseGraph
  65. end; {StartUp}
  66. {------------------==================-------------------}
  67. Procedure Game;
  68. begin
  69. ClrScr;
  70. for i := 1 to 79 do
  71. for j := 1 to 24 do
  72. a[i,j] := 0;
  73. e := 1;
  74. en[1] := 39;
  75. en[2] := 13;
  76. Num := 1;
  77. Dir := 1;
  78. b := 10;
  79. a[39,13] := 1;
  80. GotoXY(40,13);
  81. repeat
  82. if keypressed then
  83. begin
  84. c := readkey;
  85. if c = #0 then
  86. Begin
  87. w := ord(readkey);
  88. case w of
  89. 77 : case dir of
  90. 1 : begin
  91. if a[whereX,WhereY] > 0 then ext;
  92. Write('╗');
  93. Num := num + 1;
  94. a[WhereX-1,WhereY] := Num;
  95. dir := 2
  96. end;
  97. 2 : begin
  98. if a[whereX-1,WhereY+1] > 0 then ext;
  99. GotoXY(WhereX-1,WhereY+1);
  100. Write('╝');
  101. Num := num + 1;
  102. a[WhereX-1,WhereY] := Num;
  103. dir := 3;
  104. end;
  105. 3 : begin
  106. if a[whereX-2,WhereY] > 0 then ext;
  107. GotoXY(WhereX-2,WhereY);
  108. Write('╚');
  109. Num := num + 1;
  110. a[WhereX-1,WhereY] := num;
  111. Dir := 4
  112. end;
  113. 4 : begin
  114. if a[whereX-1,WhereY-1] > 0 then ext;
  115. GotoXY(WhereX-1,WhereY-1);
  116. Write('╔');
  117. Num := num + 1;
  118. a[WhereX-1,WhereY] := Num;
  119. Dir := 1
  120. end;
  121. end;
  122. 75 : case dir of
  123. 1 : begin
  124. if a[whereX,WhereY] > 0 then ext;
  125. Write('╝');
  126. num := num +1;
  127. a[WhereX-1,WhereY] := Num ;
  128. dir := 4
  129. end;
  130. 2 : begin
  131. if a[whereX-1,WhereY+1] > 0 then ext;
  132. GotoXY(WhereX-1,WhereY + 1);
  133. Write('╚');
  134. Num := num + 1;
  135. a[WhereX-1,WhereY] := Num;
  136. dir := 1;
  137. end;
  138. 3 : begin
  139. if a[whereX-2,WhereY] > 0 then ext;
  140. GotoXY(WhereX-2,WhereY);
  141. Write('╔');
  142. num := num + 1;
  143. a[WhereX-1,WhereY] := num;
  144. Dir := 2
  145. end;
  146. 4 : begin
  147. if a[whereX-1,WhereY-1] > 0 then ext;
  148. GotoXY(WhereX-1,WhereY - 1);
  149. Write('╗');
  150. num := num + 1;
  151. a[WhereX-1,WhereY] := num ;
  152. Dir := 3
  153. end;
  154. end;
  155. 27 : ext
  156. end;
  157. end;
  158. end
  159. else
  160. begin
  161. case dir of
  162. 1 : if WhereX > 77 then ext
  163. else
  164. if a[WhereX,WhereY] > 0 then ext
  165. else
  166. begin
  167. if a[WhereX,WhereY] < 0 then b := b + abs(a[WhereX,WhereY]);
  168. Write('═');
  169. Num := num + 1;
  170. a[WhereX-1,WhereY] := Num;
  171. if b > 0 then b := b - 1;
  172. end;
  173. 2: if (WhereY + 1) > 23 then ext
  174. else
  175. if a[WhereX-1,WhereY+1] > 0 then ext
  176. else
  177. begin
  178. if a[WhereX-1,WhereY+1] < 0 then b := b + abs(a[WhereX-1,WhereY+1]);
  179. GotoXY(WhereX-1,WhereY+1);
  180. Write('║');
  181. Num := num + 1;
  182. a[WhereX-1,WhereY] := Num;
  183. if b > 0 then b := b - 1;
  184. end;
  185. 3 : if (WhereX-2) < 2 then ext
  186. else
  187. if a[WhereX-2,WhereY] > 0 then ext
  188. else
  189. begin
  190. if a[WhereX-2,WhereY] < 0 then b :=b+abs(a[WhereX-2,WhereY]);
  191. GotoXY(Wherex-2,WhereY);
  192. Write('═');
  193. Num := Num + 1;
  194. a[WhereX-1,WhereY] := Num ;
  195. if b > 0 then b := b - 1;
  196. end;
  197. 4 : if (WhereY - 1) < 2 then ext
  198. else
  199. if a[WhereX-1,WhereY-1] > 0 then ext
  200. else
  201. begin
  202. if a[WhereX-1,WhereY-1] < 0 then
  203. b := b + abs(a[WhereX-1,WhereY-1]);
  204. GotoXY(WhereX-1,WhereY-1);
  205. Write('║');
  206. Num := Num +1;
  207. a[WhereX-1,WhereY] := Num ;
  208. if b > 0 then b := b - 1;
  209. end;
  210. end;
  211. end;
  212. if b = 0 then
  213. begin
  214. bg[1] := WhereX;
  215. bg[2] := WhereY;
  216. GotoXY(en[1],en[2]);
  217. Write(' ');
  218. a[WhereX-1,WhereY] := 0;
  219. if a[WhereX,WhereY] = e + 1 then
  220. begin
  221. en[1] := WhereX;
  222. en[2] := WhereY;
  223. e := e + 1;
  224. end;
  225. if a[WhereX-2,WhereY] = e + 1 then
  226. begin
  227. en[1] := WhereX-2;
  228. en[2] := WhereY;
  229. e := e + 1 ;
  230. end;
  231. if a[WhereX-1,WhereY+1] = e + 1 then
  232. begin
  233. en[1] := WhereX-1;
  234. en[2] := WhereY+1;
  235. e := e + 1;
  236. end;
  237. if a[WhereX-1,WhereY-1] = e + 1 then
  238. begin
  239. en[1] := WhereX-1;
  240. en[2] := WhereY-1;
  241. e := e + 1
  242. end;
  243. GotoXY(bg[1],bg[2]);
  244. end;
  245. Delay(2000);
  246. k := 0;
  247. for i := 1 to 79 do
  248. for j := 1 to 24 do
  249. if a[i,j] < 0 then k := 1;
  250. if k = 0 then apple;
  251. until false;
  252. end;
  253. Begin
  254. StartUp;
  255. Game
  256. end.