Advertisement
Coriic

STATKI 30.12 22.30

Dec 30th, 2015
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.15 KB | None | 0 0
  1. program statki;
  2.  
  3. uses allegro, crt, dos;
  4.  
  5. type
  6. tablica=ARRAY[1..10,1..10] of integer;
  7.  
  8. const
  9. ScreenWidth= 1200;
  10. ScreenHeight= 720;
  11.  
  12. var
  13. tab1, tab2, tab1_c, tab2_c : tablica;
  14. litery : ARRAY [1..20] of string;
  15. mx, my, mb, tryb : integer;
  16.  
  17. procedure inicjalizuj();
  18. var
  19. i, j: integer;
  20. begin
  21. al_init;
  22. al_install_keyboard;
  23. al_install_mouse;
  24. al_set_color_depth(32);
  25. al_set_gfx_mode(Al_GFX_AUTODETECT_WINDOWED,ScreenWidth,ScreenHeight,0,0);
  26. al_show_mouse( al_screen );
  27. al_unscare_mouse();
  28. for i:=1 to 10 do
  29. begin
  30. for j:=1 to 10 do
  31. begin
  32. tab1[i][j]:=0;
  33. tab2[i][j]:=0;
  34. tab1_c[i][j]:=0;
  35. tab2_c[i][j]:=0;
  36. end;
  37. end;
  38. litery[1]:='A';
  39. litery[2]:='B';
  40. litery[3]:='C';
  41. litery[4]:='D';
  42. litery[5]:='E';
  43. litery[6]:='F';
  44. litery[7]:='G';
  45. litery[8]:='H';
  46. litery[9]:='I';
  47. litery[10]:='J';
  48. litery[11]:='1';
  49. litery[12]:='2';
  50. litery[13]:='3';
  51. litery[14]:='4';
  52. litery[15]:='5';
  53. litery[16]:='6';
  54. litery[17]:='7';
  55. litery[18]:='8';
  56. litery[19]:='9';
  57. litery[20]:='10';
  58. end;
  59.  
  60. procedure pozycja_myszki();
  61. begin
  62. if ((mx <> al_mouse_x) AND (my <> al_mouse_y) AND (mb <> al_mouse_b)) then
  63. begin
  64. mx:=al_mouse_x;
  65. my:=al_mouse_y;
  66. mb:=al_mouse_b;
  67. end;
  68. end;
  69.  
  70. procedure clear ();
  71. begin
  72. al_clear_to_color( al_screen, al_makecol( 0, 0, 0 ) );
  73. end;
  74.  
  75. procedure wyswietl(var tab : tablica; var tab_c:tablica; gracz : string; parametr : integer);
  76. var
  77. i, j : integer;
  78. begin
  79. al_textout_ex(al_screen, al_font,gracz, 350, 10, al_makecol(200,200,200), -1);
  80. for i:=1 to 10 do
  81. begin
  82. for j:=1 to 10 do
  83. begin
  84. if (tab_c[i][j]=0) then
  85. begin
  86. al_rectfill( al_screen, (i-1)*30+35, (j-1)*30+65, i*30+30, j*30+60, al_makecol( 128, 30, 30 ) );
  87. al_rect( al_screen, (i-1)*30+35, (j-1)*30+65, i*30+30, j*30+60, al_makecol( 128, 30, 30 ) );
  88. end;
  89. if (tab_c[i][j]=-1) then
  90. begin
  91. al_rectfill( al_screen, (i-1)*30+35, (j-1)*30+65, i*30+30, j*30+60, al_makecol( 0, 0, 0 ) );
  92. al_rect( al_screen, (i-1)*30+35, (j-1)*30+65, i*30+30, j*30+60, al_makecol( 200, 200, 200 ) );
  93. end;
  94. if (tab_c[i][j]=-2) then
  95. begin
  96. al_rectfill( al_screen, (i-1)*30+35, (j-1)*30+65, i*30+30, j*30+60, al_makecol( 200, 200, 200 ) );
  97. al_rect( al_screen, (i-1)*30+35, (j-1)*30+65, i*30+30, j*30+60, al_makecol( 200, 200, 200 ) );
  98. end;
  99. if (tab_c[i][j]=-3) then
  100. begin
  101. al_rectfill( al_screen, (i-1)*30+35, (j-1)*30+65, i*30+30, j*30+60, al_makecol( 255, 255, 0 ) );
  102. al_rect( al_screen, (i-1)*30+35, (j-1)*30+65, i*30+30, j*30+60, al_makecol( 200, 200, 200 ) );
  103. end;
  104. end;
  105. end;
  106. for i:=1 to 10 do
  107. begin
  108. for j:=1 to 10 do
  109. begin
  110. if (tab[i][j]=0) then
  111. begin
  112. al_rectfill( al_screen, (i-1)*30+435, (j-1)*30+65, i*30+430, j*30+60, al_makecol( 128, 30, 30 ) );
  113. al_rect( al_screen, (i-1)*30+435, (j-1)*30+65, i*30+430, j*30+60, al_makecol( 128, 30, 30 ) );
  114. end;
  115. if (tab[i][j]>0) then
  116. begin
  117. al_rectfill( al_screen, (i-1)*30+435, (j-1)*30+65, i*30+430, j*30+60, al_makecol( 200, 30, 30 ) );
  118. al_rect( al_screen, (i-1)*30+435, (j-1)*30+65, i*30+430, j*30+60, al_makecol( 200, 30, 30 ) );
  119. end;
  120. if (tab[i][j]=-1) then
  121. begin
  122. al_rectfill( al_screen, (i-1)*30+435, (j-1)*30+65, i*30+430, j*30+60, al_makecol( 0, 0, 0 ) );
  123. al_rect( al_screen, (i-1)*30+435, (j-1)*30+65, i*30+430, j*30+60, al_makecol( 200, 200, 200 ) );
  124. end;
  125. if ((tab[i][j]=-10) OR (tab[i][j]=-11)) then
  126. begin
  127. al_rectfill( al_screen, (i-1)*30+435, (j-1)*30+65, i*30+430, j*30+60, al_makecol( 0, 0, 0 ) );
  128. al_rect( al_screen, (i-1)*30+435, (j-1)*30+65, i*30+430, j*30+60, al_makecol( 200, 200, 200 ) );
  129. al_line( al_screen, (i-1)*30+435, (j-1)*30+65, i*30+430, j*30+60, al_makecol( 200, 200, 200 ) );
  130. al_line( al_screen, (i-1)*30+435, (j-1)*30+90, i*30+430, j*30+35, al_makecol( 200, 200, 200 ) );
  131. end;
  132. end;
  133. end;
  134. al_textout_ex(al_screen, al_font,'Twoje statki', 540, 30, al_makecol(200,200,200), -1);
  135. al_textout_ex(al_screen, al_font,'Twoje strzaly', 130, 30, al_makecol(200,200,200), -1);
  136. for i:=1 to 10 do
  137. begin
  138. al_textout_ex(al_screen, al_font,litery[i], (i-1)*30+44, 50, al_makecol(200,200,200), -1);
  139. al_textout_ex(al_screen, al_font,litery[i], (i-1)*30+444, 50, al_makecol(200,200,200), -1);
  140. end;
  141. for i:=11 to 20 do
  142. begin
  143. al_textout_ex(al_screen, al_font, litery[i], 15, (i-11)*30+73, al_makecol(200,200,200), -1);
  144. al_textout_ex(al_screen, al_font, litery[i], 415, (i-11)*30+73, al_makecol(200,200,200), -1);
  145. end;
  146. if (parametr>=-1) then
  147. begin
  148. al_textout_ex(al_screen, al_font,'Stworz:', 750, 50, al_makecol(200,200,200), -1);
  149. al_textout_ex(al_screen, al_font,'1x czteromasztowiec', 750, 70, al_makecol(200,200,200), -1);
  150. al_textout_ex(al_screen, al_font,'2x trojmasztowiec', 750, 90, al_makecol(200,200,200), -1);
  151. al_textout_ex(al_screen, al_font,'3x dwumasztowiec', 750, 110, al_makecol(200,200,200), -1);
  152. al_textout_ex(al_screen, al_font,'4x jednomasztowiec', 750, 130, al_makecol(200,200,200), -1);
  153. end;
  154. if (parametr>=0) then
  155. begin
  156. al_line( al_screen, 750, (parametr*20)+75, 900, (parametr*20)+75, al_makecol( 200, 200, 200 ) );
  157. end;
  158. if (parametr=-2) then
  159. begin
  160. al_textout_ex(al_screen, al_font,'Legenda:', 750, 70, al_makecol(200,200,200), -1);
  161. al_rectfill( al_screen, 750, 90 , 780, 120, al_makecol( 0, 0, 0 ) );
  162. al_rect( al_screen, 750, 90, 780, 120, al_makecol( 200, 200, 200 ) );
  163. al_textout_ex(al_screen, al_font,'-pudlo', 790, 105, al_makecol(200,200,200), -1);
  164. al_rectfill( al_screen, 750, 130 , 780, 160, al_makecol( 200, 200, 200 ) );
  165. al_rect( al_screen, 750, 130, 780, 160, al_makecol( 200, 200, 200 ) );
  166. al_textout_ex(al_screen, al_font,'-trafiony, niezatopiony', 790, 145, al_makecol(200,200,200), -1);
  167. al_rectfill( al_screen, 750, 170 , 780, 200, al_makecol( 255, 255 , 0 ) );
  168. al_rect( al_screen, 750, 170, 780, 200, al_makecol( 200, 200, 200 ) );
  169. al_textout_ex(al_screen, al_font,'-trafiony, zatopiony', 790, 185, al_makecol(200,200,200), -1);
  170. al_rectfill( al_screen, 750, 210 , 780, 240, al_makecol( 200, 30 , 30 ) );
  171. al_rect( al_screen, 750, 210, 780, 240, al_makecol( 200, 200, 200 ) );
  172. al_textout_ex(al_screen, al_font,'-twoj statek', 790, 225, al_makecol(200,200,200), -1);
  173. al_rectfill( al_screen, 750, 250, 780, 280, al_makecol( 0, 0, 0 ) );
  174. al_rect( al_screen, 750, 250, 780, 280, al_makecol( 200, 200, 200 ) );
  175. al_line( al_screen, 750, 250, 780, 280, al_makecol( 200, 200, 200 ) );
  176. al_line( al_screen, 750, 280, 780, 250, al_makecol( 200, 200, 200 ) );
  177. al_textout_ex(al_screen, al_font,'-strzaly przeciwnika', 790, 265, al_makecol(200,200,200), -1);
  178. end;
  179. al_rectfill( al_screen, 10, 660 , 100, 710, al_makecol( 0, 0, 0 ) );
  180. al_rect( al_screen, 10, 660, 100, 710, al_makecol( 200, 200, 200 ) );
  181. al_textout_ex(al_screen, al_font,'Wyjdz', 35, 685, al_makecol(200,200,200), -1);
  182. end;
  183.  
  184. function warunek_tworzenia_1(var tab : tablica) : boolean;
  185. begin
  186. if ((tab[((mx-400)DIV 30)+1][((my-35)DIV 30)-1]=0)AND (tab[((mx-400)DIV 30)+1][((my-35)DIV 30)]=0) AND (tab[(((mx-400)DIV 35)+1)][(((my-35)DIV 30)+1)]=0) AND (tab[((mx-400)DIV 30)][((my-35)DIV 30)+1]=0) AND (tab[((mx-400)DIV 30)][((my-35)DIV 30)-1]=0) AND (tab[((mx-400)DIV 30)-1][((my-35)DIV 30)-1]=0) AND (tab[((mx-400)DIV 30)-1][((my-35)DIV 30)]=0) AND (tab[((mx-400)DIV 30)-1][((my-35)DIV 30)+1]=0)) then
  187. warunek_tworzenia_1:=true
  188. else
  189. warunek_tworzenia_1:=false;
  190. end;
  191.  
  192. function warunek_tworzenia_2 (var tab:tablica; i : integer) : boolean;
  193. begin
  194. if (((tab[(((mx-400)DIV 30)+1)][((my-35)DIV 30)]=i) OR (tab[((mx-400)DIV 30)][(((my-35)DIV 30)+1)]=i) OR (tab[((mx-400)DIV 30)][(((my-35)DIV 30)-1)]=i) OR (tab[(((mx-400)DIV 30)-1)][((my-35)DIV 30)]=i))AND (tab[(mx-400)DIV 30][(my-35)DIV 30]=0)) then
  195. warunek_tworzenia_2:=true
  196. else
  197. warunek_tworzenia_2:=false;
  198. end;
  199.  
  200. procedure koniec();
  201. begin
  202. al_textout_centre_ex(al_screen,al_font,'KONIEC GRY', ScreenWidth div 2, ScreenHeight div 3, al_makecol(200,200,200), -1);
  203. end;
  204.  
  205. function przekroczenie_1( a: integer; b: integer; c: integer; d: integer):boolean;
  206. begin
  207. if ((mb=1) AND (((mx<a) OR (mx>b)) OR ((my<c) OR (my>d)))) then
  208. begin
  209. al_textout_ex(al_screen, al_font, 'Jestes poza plansza', 310, 450, al_makecol(200,200,200), -1);
  210. przekroczenie_1 :=true;
  211. if ((mx>10) AND (mx<100) AND(my>660) AND (my<710)) then
  212. begin
  213. writeln('pies');
  214. al_rectfill( al_screen, 10, 660 , 100, 710, al_makecol( 200, 200, 200 ) );
  215. al_rect( al_screen, 10, 660, 100, 710, al_makecol( 200, 200, 200 ) );
  216. al_textout_ex(al_screen, al_font,'Wyjdz', 35, 685, al_makecol(0,0,0), -1);
  217. delay(500);
  218. clear();
  219. koniec();
  220. end;
  221. end
  222. else
  223. begin
  224. al_textout_ex(al_screen, al_font, 'Jestes poza plansza', 310, 450, al_makecol(0,0,0), -1);
  225. przekroczenie_1:=false;
  226. end;
  227. end;
  228.  
  229. procedure tworzenie_4(var tab : tablica;var tab_c :tablica; gracz : string);
  230. var
  231. m, p, c : integer;
  232. begin
  233. m:=0;
  234. p:=0;
  235. c:=0;
  236. al_textout_ex(al_screen, al_font, 'Stworz 4 masztowiec', 310, 400, al_makecol(200,200,200), -1);
  237. wyswietl(tab,tab_c, gracz, -1);
  238. repeat
  239. begin
  240. repeat
  241. pozycja_myszki();
  242. przekroczenie_1(435,750,65,360);
  243. until ((mb=1)AND (przekroczenie_1(435,750,65,360)=false));
  244. if ((m=0) AND (p=0)) then
  245. begin
  246. if (warunek_tworzenia_1(tab)=true) then
  247. begin
  248. tab[((mx-400)DIV 30)][((my-35)DIV 30)]:=10;
  249. al_textout_ex(al_screen, al_font, 'Nowo utworzony statek nie moze dotykac statku wczesniej utworzonego', 310, 420, al_makecol(0,0,0), -1);
  250. m:=m+1;
  251. end;
  252. if (warunek_tworzenia_1(tab)=false) then
  253. begin
  254. al_textout_ex(al_screen, al_font, 'Nowo utworzony statek nie moze dotykac statku wczesniej utworzonego', 310, 420, al_makecol(200,200,200), -1);
  255. end;
  256. end
  257. else if ((m>0) AND (c=1)) then
  258. begin
  259. if (warunek_tworzenia_2(tab, 10)=true) then
  260. begin
  261. tab[((mx-400)DIV 30)][((my-35)DIV 30)]:=10;
  262. al_textout_ex(al_screen, al_font, 'Statek musi byc polaczony', 250, 420, al_makecol(0,0,0), -1);
  263. m:=m+1;
  264. p:=1;
  265. end;
  266. if (warunek_tworzenia_2(tab, 10)=false) then
  267. begin
  268. al_textout_ex(al_screen, al_font, 'Statek musi byc polaczony', 250, 420, al_makecol(200,200,200), -1);
  269. end;
  270. end;
  271. wyswietl(tab,tab_c, gracz,-1);
  272. end;
  273. c:=1;
  274. until (m=4);
  275. wyswietl(tab,tab_c, gracz,-1);
  276. end;
  277.  
  278. procedure tworzenie_3(var tab: tablica; var tab_c :tablica; gracz : string);
  279. var
  280. m, p, c, d : integer;
  281. begin
  282. al_textout_ex(al_screen, al_font, 'Stworz 4 masztowiec', 310, 400, al_makecol(0,0,0), -1);
  283. for d:=8 to 9 do
  284. begin
  285. wyswietl(tab,tab_c, gracz,0);
  286. m:=0;
  287. p:=0;
  288. c:=0;
  289. al_textout_ex(al_screen, al_font, 'Stworz 3 masztowiec', 310, 400, al_makecol(200,200,200), -1);
  290. wyswietl(tab,tab_c, gracz,0);
  291. repeat
  292. begin
  293. repeat
  294. pozycja_myszki();
  295. przekroczenie_1(435,750,65,360);
  296. until ((mb=1) AND (przekroczenie_1(435,750,65,360)=false));
  297. if ((m=0) AND (p=0)) then
  298. begin
  299. if (warunek_tworzenia_1(tab)=true) then
  300. begin
  301. tab[((mx-400)DIV 30)][((my-35)DIV 30)]:=d;
  302. al_textout_ex(al_screen, al_font, 'Nowo utworzony statek nie moze dotykac statku wczesniej utworzonego', 310, 420, al_makecol(0,0,0), -1);
  303. m:=m+1;
  304. end;
  305. if(warunek_tworzenia_1(tab)=false) then
  306. begin
  307. al_textout_ex(al_screen, al_font, 'Nowo utworzony statek nie moze dotykac statku wczesniej utworzonego', 310, 420, al_makecol(200,200,200), -1);
  308. end;
  309. end
  310. else if ((m>0) AND (c=1)) then
  311. begin
  312. if (warunek_tworzenia_2(tab, d)=true) then
  313. begin
  314. tab[((mx-400)DIV 30)][((my-35)DIV 30)]:=d;
  315. al_textout_ex(al_screen, al_font, 'Statek musi byc polaczony', 250, 420, al_makecol(0,0,0), -1);
  316. m:=m+1;
  317. p:=1;
  318. end;
  319. if(warunek_tworzenia_2(tab, d)=false) then
  320. begin
  321. al_textout_ex(al_screen, al_font, 'Statek musi byc polaczony', 250, 420, al_makecol(200,200,200), -1);
  322. end;
  323. end;
  324. wyswietl(tab,tab_c, gracz,0);
  325. end;
  326. c:=1;
  327. until (m=3);
  328. wyswietl(tab,tab_c, gracz,0);
  329. end;
  330. end;
  331.  
  332. procedure tworzenie_2(var tab:tablica; var tab_c : tablica; gracz:string);
  333. var
  334. m, p, c, b : integer;
  335. begin
  336. al_textout_ex(al_screen, al_font, 'Stworz 3 masztowiec', 310, 400, al_makecol(0,0,0), -1);
  337. for b:=5 to 7 do
  338. begin
  339. wyswietl(tab,tab_c, gracz,1);
  340. m:=0;
  341. p:=0;
  342. c:=0;
  343. al_textout_ex(al_screen, al_font, 'Stworz 2 masztowiec', 310, 400, al_makecol(200,200,200), -1);
  344. wyswietl(tab,tab_c, gracz,1);
  345. repeat
  346. begin
  347. repeat
  348. pozycja_myszki();
  349. przekroczenie_1(435,750,65,360);
  350. until ((mb=1)AND(przekroczenie_1(435,750,65,360)=false));
  351. if ((m=0) AND (p=0)) then
  352. begin
  353. if(warunek_tworzenia_1(tab)=true) then
  354. begin
  355. tab[((mx-400)DIV 30)][((my-35)DIV 30)]:=b;
  356. al_textout_ex(al_screen, al_font, 'Nowo utworzony statek nie moze dotykac statku wczesniej utworzonego', 310, 420, al_makecol(0,0,0), -1);
  357. m:=m+1;
  358. end;
  359. if(warunek_tworzenia_1(tab)=false) then
  360. begin
  361. al_textout_ex(al_screen, al_font, 'Nowo utworzony statek nie moze dotykac statku wczesniej utworzonego', 310, 420, al_makecol(200,200,200), -1);
  362. end;
  363. end
  364. else if ((m>0) AND (c=1)) then
  365. begin
  366. if(warunek_tworzenia_2(tab, b)=true)then
  367. begin
  368. tab[((mx-400)DIV 30)][((my-35)DIV 30)]:=b;
  369. al_textout_ex(al_screen, al_font, 'Statek musi byc polaczony', 250, 420, al_makecol(0,0,0), -1);
  370. m:=m+1;
  371. p:=1;
  372. end;
  373. if (warunek_tworzenia_2(tab, b)=true) then
  374. begin
  375. al_textout_ex(al_screen, al_font, 'Statek musi byc polaczony', 250, 420, al_makecol(200,200,200), -1);
  376. end;
  377. end;
  378. wyswietl(tab,tab_c, gracz,1);
  379. end;
  380. c:=1;
  381. until (m=2);
  382. wyswietl(tab,tab_c, gracz,1);
  383. end;
  384. end;
  385.  
  386. procedure tworzenie_1(var tab:tablica; var tab_c : tablica; gracz:string);
  387. var
  388. m, a : integer;
  389. begin
  390. al_textout_ex(al_screen, al_font, 'Stworz 2 masztowiec', 310, 400, al_makecol(0,0,0), -1);
  391. for a:=1 to 4 do
  392. begin
  393. wyswietl(tab,tab_c, gracz,2);
  394. m:=0;
  395. al_textout_ex(al_screen, al_font, 'Stworz 1 masztowiec', 310, 400, al_makecol(200,200,200), -1);
  396. wyswietl(tab,tab_c, gracz,2);
  397. repeat
  398. begin
  399. repeat
  400. pozycja_myszki();
  401. przekroczenie_1(435,750,65,360);
  402. until ((mb=1) AND (przekroczenie_1(435,750,65,360)=false));
  403. if (m=0) then
  404. begin
  405. if((warunek_tworzenia_1(tab)=true) AND (tab[((mx-370)DIV 30)][((my-370)DIV 30)]=0))then
  406. begin
  407. tab[((mx-400)DIV 30)][((my-35)DIV 30)]:=a;
  408. al_textout_ex(al_screen, al_font, 'Nowo utworzony statek nie moze dotykac statku wczesniej utworzonego', 310, 420, al_makecol(0,0,0), -1);
  409. m:=m+1;
  410. end;
  411. if(warunek_tworzenia_1(tab)=false) then
  412. begin
  413. al_textout_ex(al_screen, al_font, 'Nowo utworzony statek nie moze dotykac statku wczesniej utworzonego', 310, 420, al_makecol(200,200,200), -1);
  414. end;
  415. if (tab[((mx-400)DIV 30)][((my-35)DIV 30)]<>0) then
  416. begin
  417. al_textout_ex(al_screen, al_font, 'Tu jest statek', 310, 420, al_makecol(200,200,200), -1);
  418. end
  419. else
  420. begin
  421. al_textout_ex(al_screen, al_font, 'Tu jest statek', 310, 420, al_makecol(0,0,0), -1);
  422. end;
  423. end;
  424. wyswietl(tab,tab_c, gracz,2);
  425. end;
  426. until (m=1);
  427. wyswietl(tab,tab_c, gracz,2);
  428. end;
  429. wyswietl(tab,tab_c, gracz,3);
  430. delay(1000);
  431. end;
  432.  
  433. procedure tworzenie(var tab:tablica; var tab_c : tablica; gracz : string);
  434. begin
  435. tworzenie_4(tab,tab_c, gracz);
  436. tworzenie_3(tab,tab_c, gracz);
  437. tworzenie_2(tab,tab_c, gracz);
  438. tworzenie_1(tab,tab_c, gracz);
  439. end;
  440.  
  441.  
  442. procedure przerwa();
  443. var
  444. m: integer;
  445. begin
  446. al_clear_to_color( al_screen, al_makecol( 0, 0, 0 ) );
  447. for m:=20 downto 11 do
  448. begin
  449. al_textout_ex(al_screen, al_font, 'Zmiana zawodnika, masz sekund', 310, 300, al_makecol(200,200,200), -1);
  450. al_textout_ex(al_screen, al_font, litery[m], 500, 300, al_makecol(200,200,200), -1);
  451. delay(1000);
  452. al_clear_to_color( al_screen, al_makecol( 0, 0, 0 ) );
  453. end;
  454. al_clear_to_color( al_screen, al_makecol( 0, 0, 0 ) );
  455. end;
  456.  
  457. function powitalny() : byte;
  458. begin
  459. al_textout_centre_ex(al_screen,al_font,'WITAJ W GRZE W STATKI', ScreenWidth div 2, ScreenHeight div 3, al_makecol(200,200,200), -1);
  460. al_textout_ex(al_screen, al_font, 'Wykonal: Kamil Sobolewski Informatyka EAIIB 2015', 800, 700, al_makecol(200,200,200), -1);
  461. al_rectfill( al_screen, 470, 270 , 730, 320, al_makecol( 0, 0, 0 ) );
  462. al_rect( al_screen, 470, 270, 730, 320, al_makecol( 200, 200, 200 ) );
  463. al_textout_ex(al_screen, al_font, 'Gra z innym uzytkownikiem', 500, 295, al_makecol(200,200,200), -1);
  464. al_rectfill( al_screen, 470, 330 , 730, 380, al_makecol( 0, 0, 0 ) );
  465. al_rect( al_screen, 470, 330, 730, 390, al_makecol( 200, 200, 200 ) );
  466. al_textout_ex(al_screen, al_font, 'Gra z komputerem', 540, 360, al_makecol(200,200,200), -1);
  467. repeat
  468. pozycja_myszki();
  469. if((mx>470) AND (mx<730) AND (my<320) AND (my>270))then
  470. begin
  471. al_rectfill( al_screen, 470, 270 , 730, 320, al_makecol( 200, 200, 200 ) );
  472. al_rect( al_screen, 470, 270, 730, 320, al_makecol( 200, 200, 200 ) );
  473. al_textout_ex(al_screen, al_font, 'Gra z innym uzytkownikiem', 500, 295, al_makecol(0,0,0), -1);
  474. end;
  475. if((mx>470) AND (mx<730) AND (my<390) AND (my>330))then
  476. begin
  477. al_rectfill( al_screen, 470, 330 , 730, 390, al_makecol( 200, 200, 200 ) );
  478. al_rect( al_screen, 470, 330, 730, 390, al_makecol( 200, 200, 200 ) );
  479. al_textout_ex(al_screen, al_font, 'Gra z komputerem', 540, 360, al_makecol(0,0,0), -1);
  480. end;
  481. until (mb=1);
  482. if((mx>470) AND (mx<730) AND (my<390) AND (my>330))then
  483. begin
  484. powitalny:=2;
  485. end;
  486. if((mx>470) AND (mx<730) AND (my<320) AND (my>270))then
  487. begin
  488. powitalny:=1;
  489. end;
  490. end;
  491.  
  492. function sprawdzenie ( var tab : tablica; a: integer; b: integer) : integer;
  493. begin
  494. if (tab[a][b]>0) then
  495. begin
  496. if (((tab[a+1][b]=0) OR (tab[a+1][b]=-10)) AND ((tab[a-1][b]=0) OR (tab[a-1][b]=-10)) AND ((tab[a][b+1]=0) OR (tab[a][b+1]=-10)) AND ((tab[a][b-1]=0)OR (tab[a][b-1]=-10)))then
  497. begin
  498. al_textout_ex(al_screen, al_font, 'Trafiony, niezatapiony!', 310, 420, al_makecol(0,0,0), -1);
  499. al_textout_ex(al_screen, al_font, 'Trafiony, zatopiony!', 310, 420, al_makecol(200,200,200), -1);
  500. tab[a][b]:=-11;
  501. sprawdzenie:=1;
  502. end
  503. else
  504. begin
  505. al_textout_ex(al_screen, al_font, 'Trafiony, niezatapiony!', 310, 420, al_makecol(200,200,200), -1);
  506. al_textout_ex(al_screen, al_font, 'Trafiony, zatopiony!', 310, 420, al_makecol(0,0,0), -1);
  507. tab[a][b]:=-10;
  508. sprawdzenie:=2;
  509. end;
  510. end
  511. else
  512. begin
  513. tab[a][b]:=-10;
  514. sprawdzenie:=3;
  515. al_textout_ex(al_screen, al_font, 'Pudlo!', 310, 420, al_makecol(200,200,200), -1);
  516. end;
  517. end;
  518.  
  519. procedure ruch ( var tab : tablica; var tab_c : tablica; var tab_wys : tablica;gracz: string);
  520. var
  521. m, a, b, i, check : integer;
  522. begin
  523. clear();
  524. m:=0;
  525. i:=0;
  526. wyswietl(tab_wys, tab_c, gracz,-2);
  527. al_textout_ex(al_screen, al_font, 'Twoj ruch, wybierz pole i strzelaj', 310, 400, al_makecol(200,200,200), -1);
  528. repeat
  529. begin
  530. mb:=0;
  531. repeat
  532. pozycja_myszki();
  533. przekroczenie_1(35, 350, 65, 360);
  534. until ((mb=1) AND (przekroczenie_1(35,350,65,360)=false));
  535. if ((tab_c[(mx-10)DIV 30][(my-35)DIV 30]<>-1) AND (tab_c[(mx-10) DIV 30][(my-35) DIV 30]<>-2) AND (tab_c[(mx-10) DIV 30][(my-35) DIV 30]<>-3)) then
  536. begin
  537. a:=((mx-10) DIV 30);
  538. b:=((my-35) DIV 30);
  539. check:=sprawdzenie(tab,a,b);
  540. if (check=1) then
  541. begin
  542. tab_c[a][b]:=-3;
  543. if (tab_c[a][b]=-3) then writeln(tab1_c[a][b]);
  544. if (tab[a+1][b]=-10) then tab_c[a+1][b]:=-3;
  545. if (tab[a-1][b]=-10) then tab_c[a-1][b]:=-3;
  546. if (tab[a][b+1]=-10) then tab_c[a][b+1]:=-3;
  547. if (tab[a][b-1]=-10) then tab_c[a][b-1]:=-3;
  548. end;
  549. if (check=2) then tab_c[a][b]:=-2;;
  550. if (check=3) then tab_c[a][b]:=-1;
  551. m:=1;
  552. if (i<>0) then
  553. begin
  554. al_textout_ex(al_screen, al_font, 'To pole bylo wybrane wczesniej', 310, 420, al_makecol(0,0,0), -1);
  555. end;
  556. end
  557. else
  558. begin
  559. al_textout_ex(al_screen, al_font, 'To pole bylo wybrane wczesniej', 310, 420, al_makecol(200,200,200), -1);
  560. end;
  561. i:=i+1;
  562. end;
  563. until (m=1);
  564. wyswietl(tab_wys, tab_c, gracz,-2);
  565. delay(1000);
  566. end;
  567.  
  568. function warunek_gry (tab1 : tablica; tab2 : tablica) : boolean;
  569. var
  570. i, j : integer;
  571. licznik1, licznik2 : integer;
  572. begin
  573. licznik1:=0;
  574. licznik2:=0;
  575. for i:=1 to 10 do
  576. begin
  577. for j:=1 to 10 do
  578. begin
  579. if (tab1[i][j]<0) then licznik1:=licznik1+1;
  580. if (tab2[i][j]<0) then licznik2:=licznik2+1;
  581. end;
  582. end;
  583. if ((licznik1=100) OR (licznik2=100)) then warunek_gry:=false
  584. else warunek_gry:=true;
  585. end;
  586.  
  587. procedure dwoch_graczy ();
  588. begin
  589. wyswietl(tab1,tab1_c, 'Gracz 1.',-1);
  590. tworzenie(tab1,tab1_c, 'Gracz 1.');
  591. przerwa();
  592. wyswietl(tab2,tab2_c, 'Gracz 2.', -1);
  593. tworzenie(tab2,tab2_c, 'Gracz 2.');
  594. przerwa();
  595. repeat
  596. ruch(tab2, tab1_c, tab1, 'Gracz 1.');
  597. delay(1500);
  598. przerwa();
  599. clear();
  600. ruch(tab1, tab2_c, tab2, 'Gracz 2.');
  601. delay(1500);
  602. przerwa();
  603. clear();
  604. until (warunek_gry(tab1, tab2)=false);
  605. end;
  606.  
  607. begin
  608. inicjalizuj();
  609. tryb:=powitalny();
  610. delay(500);
  611. clear();
  612. case tryb of
  613. 1 : dwoch_graczy();
  614. end;
  615. al_readkey;
  616. al_exit();
  617. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement