Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.85 KB | None | 0 0
  1. /---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #pragma hdrstop
  5.  
  6. #include "Unit2.h"
  7. #include "Unit1.h"
  8. //---------------------------------------------------------------------------
  9. #pragma package(smart_init)
  10. #pragma resource "*.dfm"
  11.  
  12. TForm2 *Form2;
  13. const int FSIZE = 9;
  14. int Field[FSIZE] = {0};
  15. void AITurn();
  16.  
  17. int w = 0, l = 0, d = 0;
  18. //---------------------------------------------------------------------------
  19. __fastcall TForm2::TForm2(TComponent* Owner)
  20. : TForm(Owner)
  21. {
  22. }
  23. //---------------------------------------------------------------------------
  24. void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
  25. {
  26. Form1->Close();
  27. }
  28. //---------------------------------------------------------------------------
  29.  
  30. void Outp()
  31. {
  32. if (Field[0] == 1) Form2->Panel1->Caption = 'X';
  33. if (Field[1] == 1) Form2->Panel2->Caption = 'X';
  34. if (Field[2] == 1) Form2->Panel3->Caption = 'X';
  35. if (Field[3] == 1) Form2->Panel4->Caption = 'X';
  36. if (Field[4] == 1) Form2->Panel5->Caption = 'X';
  37. if (Field[5] == 1) Form2->Panel6->Caption = 'X';
  38. if (Field[6] == 1) Form2->Panel7->Caption = 'X';
  39. if (Field[7] == 1) Form2->Panel8->Caption = 'X';
  40. if (Field[8] == 1) Form2->Panel9->Caption = 'X';
  41.  
  42. if (Field[0] == 2) Form2->Panel1->Caption = 'O';
  43. if (Field[1] == 2) Form2->Panel2->Caption = 'O';
  44. if (Field[2] == 2) Form2->Panel3->Caption = 'O';
  45. if (Field[3] == 2) Form2->Panel4->Caption = 'O';
  46. if (Field[4] == 2) Form2->Panel5->Caption = 'O';
  47. if (Field[5] == 2) Form2->Panel6->Caption = 'O';
  48. if (Field[6] == 2) Form2->Panel7->Caption = 'O';
  49. if (Field[7] == 2) Form2->Panel8->Caption = 'O';
  50. if (Field[8] == 2) Form2->Panel9->Caption = 'O';
  51.  
  52. }
  53.  
  54. bool Diff(){
  55. for (int i = 1; i < 3; i++) {
  56. if (Field[0] == i && Field[1] == i && Field[2] == 0) {
  57. Field[2] = 2;
  58. return true;
  59. }
  60. else
  61. if (Field[3] == i && Field[4] == i && Field[5] == 0) {
  62. Field[2] = 2;
  63. return true;
  64. }
  65. else
  66. if (Field[6] == i && Field[7] == i && Field[8] == 0) {
  67. Field[2] = 2;
  68. return true;
  69. }
  70. else
  71. if (Field[0] == i && Field[2] == i && Field[1] == 0) {
  72. Field[2] = 2;
  73. return true;
  74. }
  75. else
  76. if (Field[3] == i && Field[5] == i && Field[4] == 0) {
  77. Field[2] = 2;
  78. return true;
  79. }
  80. else
  81. if (Field[6] == i && Field[8] == i && Field[7] == 0) {
  82. Field[2] = 2;
  83. return true;
  84. }
  85. else
  86. if (Field[1] == i && Field[2] == i && Field[0] == 0) {
  87. Field[2] = 2;
  88. return true;
  89. }
  90. else
  91. if (Field[5] == i && Field[5] == i && Field[3] == 0) {
  92. Field[2] = 2;
  93. return true;
  94. }
  95. else
  96. if (Field[8] == i && Field[8] == i && Field[6] == 0) {
  97. Field[2] = 2;
  98. return true;
  99. }
  100. ////
  101. if (Field[0] == i && Field[3] == i && Field[6] == 0) {
  102. Field[2] = 2;
  103. return true;
  104. }
  105. else
  106. if (Field[1] == i && Field[4] == i && Field[7] == 0) {
  107. Field[2] = 2;
  108. return true;
  109. }
  110. else
  111. if (Field[2] == i && Field[5] == i && Field[8] == 0) {
  112. Field[2] = 2;
  113. return true;
  114. }
  115. else
  116. if (Field[0] == i && Field[6] == i && Field[3] == 0) {
  117. Field[2] = 2;
  118. return true;
  119. }
  120. else
  121. if (Field[1] == i && Field[7] == i && Field[4] == 0) {
  122. Field[2] = 2;
  123. return true;
  124. }
  125. else
  126. if (Field[2] == i && Field[8] == i && Field[5] == 0) {
  127. Field[2] = 2;
  128. return true;
  129. }
  130. else
  131. if (Field[3] == i && Field[6] == i && Field[0] == 0) {
  132. Field[2] = 2;
  133. return true;
  134. }
  135. else
  136. if (Field[4] == i && Field[7] == i && Field[1] == 0) {
  137. Field[2] = 2;
  138. return true;
  139. }
  140. else
  141. if (Field[5] == i && Field[8] == i && Field[2] == 0) {
  142. Field[2] = 2;
  143. return true;
  144. }
  145. else if (i == 1) continue;
  146. else if (i == 2) return false;
  147. }
  148. }
  149.  
  150. void NewGame()
  151. {
  152. for (int i = 0; i < 9; i++) {
  153. Field[i] = 0;
  154. }
  155. Form2->Panel1->Caption = "";
  156. Form2->Panel2->Caption = "";
  157. Form2->Panel3->Caption = "";
  158. Form2->Panel4->Caption = "";
  159. Form2->Panel5->Caption = "";
  160. Form2->Panel6->Caption = "";
  161. Form2->Panel7->Caption = "";
  162. Form2->Panel8->Caption = "";
  163. Form2->Panel9->Caption = "";
  164. if (Form2->CheckBox1->Checked == true) {
  165. AITurn();
  166. }
  167. Form2->Label3->Caption = IntToStr(w) + ':' + IntToStr(l) + ':' + IntToStr(d);
  168. }
  169.  
  170. bool Winner(int k)
  171. {
  172. bool flag = true, nobody = true;
  173. if ((Field[0] == k && Field[1] == k && Field[2] == k) ||
  174. (Field[3] == k && Field[4] == k && Field[5] == k) ||
  175. (Field[6] == k && Field[7] == k && Field[8] == k) ||
  176. (Field[0] == k && Field[3] == k && Field[6] == k) ||
  177. (Field[1] == k && Field[4] == k && Field[7] == k) ||
  178. (Field[2] == k && Field[5] == k && Field[8] == k) ||
  179. (Field[0] == k && Field[4] == k && Field[8] == k) ||
  180. (Field[2] == k && Field[4] == k && Field[6] == k)) {
  181. if (k == 1) {
  182. MessageBoxA(NULL,"You win!", "Win!", MB_OK);
  183. flag = false;
  184. w++;
  185. }
  186. else
  187. if (k == 2) {
  188. MessageBoxA(NULL,"You lose!", "Lose!", MB_OK);
  189. flag = false;
  190. l++;
  191. }
  192. NewGame();
  193. }
  194. for (int i = 0; i < 9; i++) {
  195. if (Field[i] == 0) {
  196. nobody = false;
  197. }
  198. }
  199. if (nobody) {
  200. MessageBoxA(NULL,"It's a draw!", "Draw!", MB_OK);
  201. flag = false;
  202. d++;
  203. NewGame();
  204. }
  205. return flag;
  206. }
  207.  
  208. void AITurn()
  209. {
  210. int n, count = 0;
  211. bool flag = true;
  212. srand(time(NULL));
  213. for (int i = 0; i < 9; i++) {
  214. if (Field[i] == 0) {
  215. count++;
  216. }
  217. }
  218. if (count > 0)
  219. if (Diff() == false)
  220. do {
  221. n = 0 + rand() % 8;
  222. if (Field[n] == 0) {
  223. Field[n] = 2;
  224. flag = False;
  225. }
  226. }
  227. while (flag);
  228. Outp();
  229. Winner(2);
  230. }
  231.  
  232. void __fastcall TForm2::Panel1Click(TObject *Sender)
  233. {
  234. if (Field[0] == 0) {
  235. Field[0] = 1;
  236. Outp();
  237. if (Winner(1) == true)
  238. AITurn();
  239. }
  240. }
  241. //---------------------------------------------------------------------------
  242.  
  243. void __fastcall TForm2::Panel2Click(TObject *Sender)
  244. {
  245. if (Field[1] == 0) {
  246. Field[1] = 1;
  247. Outp();
  248. if (Winner(1) == true)
  249. AITurn();
  250. }
  251. }
  252. //---------------------------------------------------------------------------
  253.  
  254. void __fastcall TForm2::Panel3Click(TObject *Sender)
  255. {
  256. if (Field[2] == 0) {
  257. Field[2] = 1;
  258. Outp();
  259. if (Winner(1) == true)
  260. AITurn();
  261. }
  262. }
  263. //---------------------------------------------------------------------------
  264.  
  265. void __fastcall TForm2::Panel4Click(TObject *Sender)
  266. {
  267. if (Field[3] == 0) {
  268. Field[3] = 1;
  269. Outp();
  270. if (Winner(1) == true)
  271. AITurn();
  272. }
  273. }
  274. //---------------------------------------------------------------------------
  275.  
  276. void __fastcall TForm2::Panel5Click(TObject *Sender)
  277. {
  278. if (Field[4] == 0) {
  279. Field[4] = 1;
  280. Outp();
  281. if (Winner(1) == true)
  282. AITurn();
  283. }
  284. }
  285. //---------------------------------------------------------------------------
  286.  
  287. void __fastcall TForm2::Panel6Click(TObject *Sender)
  288. {
  289. if (Field[5] == 0) {
  290. Field[5] = 1;
  291. Outp();
  292. if (Winner(1) == true)
  293. AITurn();
  294. }
  295. }
  296. //---------------------------------------------------------------------------
  297.  
  298. void __fastcall TForm2::Panel7Click(TObject *Sender)
  299. {
  300. if (Field[6] == 0) {
  301. Field[6] = 1;
  302. Outp();
  303. if (Winner(1) == true)
  304. AITurn();
  305. }
  306. }
  307. //---------------------------------------------------------------------------
  308.  
  309. void __fastcall TForm2::Panel8Click(TObject *Sender)
  310. {
  311. if (Field[7] == 0) {
  312. Field[7] = 1;
  313. Outp();
  314. if (Winner(1) == true)
  315. AITurn();
  316. }
  317. }
  318. //---------------------------------------------------------------------------
  319.  
  320. void __fastcall TForm2::Panel9Click(TObject *Sender)
  321. {
  322. if (Field[8] == 0) {
  323. Field[8] = 1;
  324. Outp();
  325. if (Winner(1) == true)
  326. AITurn();
  327. }
  328. }
  329. //---------------------------------------------------------------------------
  330.  
  331. void __fastcall TForm2::Button1Click(TObject *Sender)
  332. {
  333. Form1->Show();
  334. Form2->Hide();
  335. }
  336. //---------------------------------------------------------------------------
  337.  
  338. void __fastcall TForm2::Button2Click(TObject *Sender)
  339. {
  340. NewGame();
  341. }
  342. //---------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement