Перевод кода игры Крестики-нолики из Delphi в C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Можете перевести код из Delphi в C#
Листинг программы
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls, ExtCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Label1: TLabel;
  12. Label2: TLabel;
  13. Label3: TLabel;
  14. Label4: TLabel;
  15. Label5: TLabel;
  16. Label6: TLabel;
  17. Label7: TLabel;
  18. Label8: TLabel;
  19. Label9: TLabel;
  20. Button1: TButton;
  21. RadioGroup1: TRadioGroup;
  22. GroupBox1: TGroupBox;
  23. Label10: TLabel;
  24. Label11: TLabel;
  25. Label12: TLabel;
  26. procedure Button1Click(Sender: TObject);
  27. procedure Label1Click(Sender: TObject);
  28. procedure Label2Click(Sender: TObject);
  29. procedure Label3Click(Sender: TObject);
  30. procedure Label4Click(Sender: TObject);
  31. procedure Label5Click(Sender: TObject);
  32. procedure Label6Click(Sender: TObject);
  33. procedure Label7Click(Sender: TObject);
  34. procedure Label8Click(Sender: TObject);
  35. procedure Label9Click(Sender: TObject);
  36. procedure FormCreate(Sender: TObject);
  37. private
  38. { Private declarations }
  39. public
  40. { Public declarations }
  41. end;
  42.  
  43. procedure VirtualMind;
  44. procedure OutPut;
  45. procedure Winer;
  46. procedure TheEnd(q: integer);
  47.  
  48. var
  49. Form1: TForm1;
  50. M: array[1..9] of integer;
  51. win_men, win_comp, win_nobody: integer;
  52.  
  53. implementation
  54.  
  55. {$R *.dfm}
  56.  
  57. procedure VirtualMind;
  58. var
  59. i, m_z: integer;
  60. Z: array[1..9] of integer;
  61. begin
  62.  
  63. if (M[1]=2) and (M[2]=2) and (M[3]=0) then begin M[3]:=2; exit; end;
  64. if (M[1]=2) and (M[4]=2) and (M[7]=0) then begin M[7]:=2; exit; end;
  65. if (M[1]=2) and (M[5]=2) and (M[9]=0) then begin M[9]:=2; exit; end;
  66. if (M[1]=2) and (M[7]=2) and (M[4]=0) then begin M[4]:=2; exit; end;
  67. if (M[1]=2) and (M[9]=2) and (M[5]=0) then begin M[5]:=2; exit; end;
  68. if (M[1]=2) and (M[3]=2) and (M[2]=0) then begin M[2]:=2; exit; end;
  69.  
  70. if (M[2]=2) and (M[5]=2) and (M[8]=0) then begin M[8]:=2; exit; end;
  71. if (M[2]=2) and (M[3]=2) and (M[1]=0) then begin M[1]:=2; exit; end;
  72. if (M[2]=2) and (M[8]=2) and (M[5]=0) then begin M[5]:=2; exit; end;
  73.  
  74. if (M[3]=2) and (M[5]=2) and (M[7]=0) then begin M[7]:=2; exit; end;
  75. if (M[3]=2) and (M[6]=2) and (M[9]=0) then begin M[9]:=2; exit; end;
  76. if (M[3]=2) and (M[7]=2) and (M[5]=0) then begin M[5]:=2; exit; end;
  77. if (M[3]=2) and (M[9]=2) and (M[6]=0) then begin M[6]:=2; exit; end;
  78.  
  79. if (M[4]=2) and (M[5]=2) and (M[6]=0) then begin M[6]:=2; exit; end;
  80. if (M[4]=2) and (M[7]=2) and (M[1]=0) then begin M[1]:=2; exit; end;
  81. if (M[4]=2) and (M[6]=2) and (M[5]=0) then begin M[5]:=2; exit; end;
  82.  
  83. if (M[5]=2) and (M[7]=2) and (M[3]=0) then begin M[3]:=2; exit; end;
  84. if (M[5]=2) and (M[8]=2) and (M[2]=0) then begin M[2]:=2; exit; end;
  85. if (M[5]=2) and (M[6]=2) and (M[4]=0) then begin M[4]:=2; exit; end;
  86.  
  87. if (M[6]=2) and (M[9]=2) and (M[3]=0) then begin M[3]:=2; exit; end;
  88.  
  89. if (M[7]=2) and (M[8]=2) and (M[9]=0) then begin M[9]:=2; exit; end;
  90. if (M[7]=2) and (M[9]=2) and (M[8]=0) then begin M[8]:=2; exit; end;
  91.  
  92. if (M[8]=2) and (M[9]=2) and (M[7]=0) then begin M[7]:=2; exit; end;
  93.  
  94. if (M[1]=1) and (M[2]=1) and (M[3]=0) then begin M[3]:=2; exit; end;
  95. if (M[1]=1) and (M[4]=1) and (M[7]=0) then begin M[7]:=2; exit; end;
  96. if (M[1]=1) and (M[5]=1) and (M[9]=0) then begin M[9]:=2; exit; end;
  97. if (M[1]=1) and (M[7]=1) and (M[4]=0) then begin M[4]:=2; exit; end;
  98. if (M[1]=1) and (M[9]=1) and (M[5]=0) then begin M[5]:=2; exit; end;
  99. if (M[1]=1) and (M[3]=1) and (M[2]=0) then begin M[2]:=2; exit; end;
  100.  
  101. if (M[2]=1) and (M[5]=1) and (M[8]=0) then begin M[8]:=2; exit; end;
  102. if (M[2]=1) and (M[3]=1) and (M[1]=0) then begin M[1]:=2; exit; end;
  103. if (M[2]=1) and (M[8]=1) and (M[5]=0) then begin M[5]:=2; exit; end;
  104.  
  105. if (M[3]=1) and (M[5]=1) and (M[7]=0) then begin M[7]:=2; exit; end;
  106. if (M[3]=1) and (M[6]=1) and (M[9]=0) then begin M[9]:=2; exit; end;
  107. if (M[3]=1) and (M[7]=1) and (M[5]=0) then begin M[5]:=2; exit; end;
  108. if (M[3]=1) and (M[9]=1) and (M[6]=0) then begin M[6]:=2; exit; end;
  109.  
  110. if (M[4]=1) and (M[5]=1) and (M[6]=0) then begin M[6]:=2; exit; end;
  111. if (M[4]=1) and (M[7]=1) and (M[1]=0) then begin M[1]:=2; exit; end;
  112. if (M[4]=1) and (M[6]=1) and (M[5]=0) then begin M[5]:=2; exit; end;
  113.  
  114. if (M[5]=1) and (M[7]=1) and (M[3]=0) then begin M[3]:=2; exit; end;
  115. if (M[5]=1) and (M[8]=1) and (M[2]=0) then begin M[2]:=2; exit; end;
  116. if (M[5]=1) and (M[6]=1) and (M[4]=0) then begin M[4]:=2; exit; end;
  117.  
  118. if (M[6]=1) and (M[9]=1) and (M[3]=0) then begin M[3]:=2; exit; end;
  119.  
  120. if (M[7]=1) and (M[8]=1) and (M[9]=0) then begin M[9]:=2; exit; end;
  121. if (M[7]=1) and (M[9]=1) and (M[8]=0) then begin M[8]:=2; exit; end;
  122.  
  123. if (M[8]=1) and (M[9]=1) and (M[7]=0) then begin M[7]:=2; exit; end;
  124.  
  125. if (M[5]=0) then begin M[5]:=2; exit; end;
  126.  
  127. for i:=1 to 9 do Z[i]:=0;
  128. if (M[1]=0) and (M[2]<>1) and (M[3]<>1) and (M[4]<>1) and (M[7]<>1) then begin
  129. if M[2]=1 then Z[1]:=Z[1]+1;
  130. if M[3]=1 then Z[1]:=Z[1]+1;
  131. if M[4]=1 then Z[1]:=Z[1]+1;
  132. if M[7]=1 then Z[1]:=Z[1]+1;
  133. end;
  134. if (M[2]=0) and (M[1]<>1) and (M[3]<>1) and (M[5]<>1) and (M[8]<>1) then begin
  135. if M[1]=1 then Z[2]:=Z[2]+1;
  136. if M[3]=1 then Z[2]:=Z[2]+1;
  137. if M[5]=1 then Z[2]:=Z[2]+1;
  138. if M[8]=1 then Z[2]:=Z[2]+1;
  139. end;
  140. if (M[3]=0) and (M[1]<>1) and (M[2]<>1) and (M[6]<>1) and (M[9]<>1) then begin
  141. if M[1]=1 then Z[3]:=Z[3]+1;
  142. if M[2]=1 then Z[3]:=Z[3]+1;
  143. if M[6]=1 then Z[3]:=Z[3]+1;
  144. if M[9]=1 then Z[3]:=Z[3]+1;
  145. end;
  146. if (M[4]=0) and (M[1]<>1) and (M[7]<>1) and (M[5]<>1) and (M[6]<>1) then begin
  147. if M[1]=1 then Z[4]:=Z[4]+1;
  148. if M[7]=1 then Z[4]:=Z[4]+1;
  149. if M[5]=1 then Z[4]:=Z[4]+1;
  150. if M[6]=1 then Z[4]:=Z[4]+1;
  151. end;
  152. if (M[6]=0) and (M[3]<>1) and (M[9]<>1) and (M[4]<>1) and (M[5]<>1) then begin
  153. if M[3]=1 then Z[6]:=Z[6]+1;
  154. if M[9]=1 then Z[6]:=Z[6]+1;
  155. if M[4]=1 then Z[6]:=Z[6]+1;
  156. if M[5]=1 then Z[6]:=Z[6]+1;
  157. end;
  158. if (M[7]=0) and (M[1]<>1) and (M[4]<>1) and (M[8]<>1) and (M[9]<>1) then begin
  159. if M[1]=1 then Z[7]:=Z[7]+1;
  160. if M[4]=1 then Z[7]:=Z[7]+1;
  161. if M[8]=1 then Z[7]:=Z[7]+1;
  162. if M[9]=1 then Z[7]:=Z[7]+1;
  163. end;
  164. if (M[8]=0) and (M[7]<>1) and (M[9]<>1) and (M[2]<>1) and (M[5]<>1) then begin
  165. if M[7]=1 then Z[8]:=Z[8]+1;
  166. if M[9]=1 then Z[8]:=Z[8]+1;
  167. if M[2]=1 then Z[8]:=Z[8]+1;
  168. if M[5]=1 then Z[8]:=Z[8]+1;
  169. end;
  170. if (M[9]=0) and (M[3]<>1) and (M[6]<>1) and (M[7]<>1) and (M[8]<>1) then begin
  171. if M[3]=1 then Z[9]:=Z[9]+1;
  172. if M[6]=1 then Z[9]:=Z[9]+1;
  173. if M[7]=1 then Z[9]:=Z[9]+1;
  174. if M[8]=1 then Z[9]:=Z[9]+1;
  175. end;
  176.  
  177. m_z:=1;
  178. for i:=2 to 9 do if Z[i]>Z[m_z] then m_z:=i;
  179. if Z[m_z]>1 then begin
  180. M[m_z]:=2;
  181. exit;
  182. end;
  183.  
  184. if (M[1]=2) and (M[3]=0) and (M[2]=0) then begin M[2]:=2; exit; end;
  185. if (M[1]=2) and (M[7]=0) and (M[4]=0) then begin M[4]:=2; exit; end;
  186. if (M[1]=2) and (M[9]=0) and (M[5]=0) then begin M[5]:=2; exit; end;
  187.  
  188. if (M[2]=2) and (M[1]=0) and (M[3]=0) then begin M[1]:=2; exit; end;
  189. if (M[2]=2) and (M[5]=0) and (M[8]=0) then begin M[5]:=2; exit; end;
  190.  
  191. if (M[3]=2) and (M[1]=0) and (M[2]=0) then begin M[2]:=2; exit; end;
  192. if (M[3]=2) and (M[5]=0) and (M[7]=0) then begin M[5]:=2; exit; end;
  193. if (M[3]=2) and (M[6]=0) and (M[9]=0) then begin M[6]:=2; exit; end;
  194.  
  195. if (M[4]=2) and (M[1]=0) and (M[7]=0) then begin M[1]:=2; exit; end;
  196. if (M[4]=2) and (M[5]=0) and (M[6]=0) then begin M[5]:=2; exit; end;
  197.  
  198. if (M[6]=2) and (M[9]=0) and (M[3]=0) then begin M[9]:=2; exit; end;
  199.  
  200. if (M[7]=2) and (M[4]=0) and (M[1]=0) then begin M[1]:=2; exit; end;
  201. if (M[7]=2) and (M[8]=0) and (M[9]=0) then begin M[8]:=2; exit; end;
  202.  
  203. if (M[8]=2) and (M[7]=0) and (M[9]=0) then begin M[7]:=2; exit; end;
  204.  
  205. if (M[9]=2) and (M[8]=0) and (M[7]=0) then begin M[8]:=2; exit; end;
  206.  
  207. for i:=1 to 9 do if M[i]=0 then begin
  208. M[i]:=2;
  209. exit;
  210. end;
  211.  
  212. end;
  213.  
  214. procedure OutPut;
  215. begin
  216. if M[1]=2 then begin Form1.Label1.Caption:='0'; Form1.Label1.Enabled:=false; end;
  217. if M[2]=2 then begin Form1.Label2.Caption:='0'; Form1.Label2.Enabled:=false; end;
  218. if M[3]=2 then begin Form1.Label3.Caption:='0'; Form1.Label3.Enabled:=false; end;
  219. if M[4]=2 then begin Form1.Label4.Caption:='0'; Form1.Label4.Enabled:=false; end;
  220. if M[5]=2 then begin Form1.Label5.Caption:='0'; Form1.Label5.Enabled:=false; end;
  221. if M[6]=2 then begin Form1.Label6.Caption:='0'; Form1.Label6.Enabled:=false; end;
  222. if M[7]=2 then begin Form1.Label7.Caption:='0'; Form1.Label7.Enabled:=false; end;
  223. if M[8]=2 then begin Form1.Label8.Caption:='0'; Form1.Label8.Enabled:=false; end;
  224. if M[9]=2 then begin Form1.Label9.Caption:='0'; Form1.Label9.Enabled:=false; end;
  225. end;
  226.  
  227. procedure Winer;
  228. var
  229. i: integer;
  230. nobody: boolean;
  231. begin
  232. for i:=1 to 2 do begin
  233. if (M[1]=i) and (M[4]=i) and (M[7]=i) then begin TheEnd(i); exit; end;
  234. if (M[1]=i) and (M[5]=i) and (M[9]=i) then begin TheEnd(i); exit; end;
  235. if (M[1]=i) and (M[2]=i) and (M[3]=i) then begin TheEnd(i); exit; end;
  236. if (M[2]=i) and (M[5]=i) and (M[8]=i) then begin TheEnd(i); exit; end;
  237. if (M[3]=i) and (M[5]=i) and (M[7]=i) then begin TheEnd(i); exit; end;
  238. if (M[4]=i) and (M[5]=i) and (M[6]=i) then begin TheEnd(i); exit; end;
  239. if (M[6]=i) and (M[3]=i) and (M[9]=i) then begin TheEnd(i); exit; end;
  240. if (M[7]=i) and (M[8]=i) and (M[9]=i) then begin TheEnd(i); exit; end;
  241. end;
  242. nobody:=true;
  243. for i:=1 to 9 do if M[i]=0 then nobody:=false;
  244. if nobody then begin
  245. ShowMessage('Ничья');
  246. win_nobody:=win_nobody+1;
  247. Form1.Label12.Caption:='Ничья: '+IntToStr(win_nobody);
  248. end;
  249. end;
  250.  
  251. procedure TheEnd(q: integer);
  252. begin
  253. if q=1 then begin
  254. ShowMessage('Победа игрока!');
  255. win_men:=win_men+1;
  256. end
  257. else begin
  258. ShowMessage('Победа компьютера');
  259. win_comp:=win_comp+1;
  260. end;
  261. Form1.Label1.Enabled:=false;
  262. Form1.Label2.Enabled:=false;
  263. Form1.Label3.Enabled:=false;
  264. Form1.Label4.Enabled:=false;
  265. Form1.Label5.Enabled:=false;
  266. Form1.Label6.Enabled:=false;
  267. Form1.Label7.Enabled:=false;
  268. Form1.Label8.Enabled:=false;
  269. Form1.Label9.Enabled:=false;
  270. Form1.Label10.Caption:='Человек: '+IntToStr(win_men);
  271. Form1.Label11.Caption:='Компьютер: '+IntToStr(win_comp);
  272. end;
  273.  
  274. procedure TForm1.Button1Click(Sender: TObject);
  275. var
  276. i: integer;
  277. begin
  278. for i:=1 to 9 do M[i]:=0;
  279. Label1.Enabled:=true;
  280. Label2.Enabled:=true;
  281. Label3.Enabled:=true;
  282. Label4.Enabled:=true;
  283. Label5.Enabled:=true;
  284. Label6.Enabled:=true;
  285. Label7.Enabled:=true;
  286. Label8.Enabled:=true;
  287. Label9.Enabled:=true;
  288. Label1.Caption:='';
  289. Label2.Caption:='';
  290. Label3.Caption:='';
  291. Label4.Caption:='';
  292. Label5.Caption:='';
  293. Label6.Caption:='';
  294. Label7.Caption:='';
  295. Label8.Caption:='';
  296. Label9.Caption:='';
  297. if RadioGroup1.ItemIndex=1 then
  298. begin
  299. VirtualMind;
  300. OutPut;
  301. Winer;
  302. end;
  303. end;
  304.  
  305. procedure TForm1.Label1Click(Sender: TObject);
  306. begin
  307. M[1]:=1;
  308. Label1.Caption:='X';
  309. Label1.Enabled:=false;
  310. VirtualMind;
  311. OutPut;
  312. Winer;
  313. end;
  314.  
  315. procedure TForm1.Label2Click(Sender: TObject);
  316. begin
  317. M[2]:=1;
  318. Label2.Caption:='X';
  319. Label2.Enabled:=false;
  320. VirtualMind;
  321. OutPut;
  322. Winer;
  323. end;
  324.  
  325. procedure TForm1.Label3Click(Sender: TObject);
  326. begin
  327. M[3]:=1;
  328. Label3.Caption:='X';
  329. Label3.Enabled:=false;
  330. VirtualMind;
  331. OutPut;
  332. Winer;
  333. end;
  334.  
  335. procedure TForm1.Label4Click(Sender: TObject);
  336. begin
  337. M[4]:=1;
  338. Label4.Caption:='X';
  339. Label4.Enabled:=false;
  340. VirtualMind;
  341. OutPut;
  342. Winer;
  343. end;
  344.  
  345. procedure TForm1.Label5Click(Sender: TObject);
  346. begin
  347. M[5]:=1;
  348. Label5.Caption:='X';
  349. Label5.Enabled:=false;
  350. VirtualMind;
  351. OutPut;
  352. Winer;
  353. end;
  354.  
  355. procedure TForm1.Label6Click(Sender: TObject);
  356. begin
  357. M[6]:=1;
  358. Label6.Caption:='X';
  359. Label6.Enabled:=false;
  360. VirtualMind;
  361. OutPut;
  362. Winer;
  363. end;
  364.  
  365. procedure TForm1.Label7Click(Sender: TObject);
  366. begin
  367. M[7]:=1;
  368. Label7.Caption:='X';
  369. Label7.Enabled:=false;
  370. VirtualMind;
  371. OutPut;
  372. Winer;
  373. end;
  374.  
  375. procedure TForm1.Label8Click(Sender: TObject);
  376. begin
  377. M[8]:=1;
  378. Label8.Caption:='X';
  379. Label8.Enabled:=false;
  380. VirtualMind;
  381. OutPut;
  382. Winer;
  383. end;
  384.  
  385. procedure TForm1.Label9Click(Sender: TObject);
  386. begin
  387. M[9]:=1;
  388. Label9.Caption:='X';
  389. Label9.Enabled:=false;
  390. VirtualMind;
  391. OutPut;
  392. Winer;
  393. end;
  394.  
  395. procedure TForm1.FormCreate(Sender: TObject);
  396. begin
  397. win_men:=0;
  398. win_comp:=0;
  399. win_nobody:=0;
  400. Label10.Caption:='Человек: '+IntToStr(win_men);
  401. Label11.Caption:='Компьютер: '+IntToStr(win_comp);
  402. Label12.Caption:='Ничья: '+IntToStr(win_nobody);
  403. end;
  404.  
  405. end.

Решение задачи: «Перевод кода игры Крестики-нолики из Delphi в C#»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace XO
  12. {
  13.     public partial class Form1 : Form
  14.     {  
  15.         public int [] M = new int[9];
  16.         public int win_nobody;
  17.         public int win_men;
  18.         public int win_comp;
  19.  
  20.  
  21.         public Form1()
  22.        
  23.         {
  24.             InitializeComponent();
  25.         }
  26.  
  27.  
  28.         private void pictureBox1_Click(object sender, EventArgs e)
  29.         {
  30.             M[0] = 1;
  31.             pictureBox1.Enabled = false;
  32.             pictureBox1.Image = global::XO.Properties.Resources.X;
  33.             VirtualMind();
  34.             OutPut();
  35.             Winer();
  36.            
  37.         }
  38.        // Тоже самое для всех pictureBox-ов.
  39.        
  40.         private void Form1_Load(object sender, EventArgs e)
  41.         {
  42.             pictureBox1.Enabled = false;
  43.            //   -//-              -//-     //
  44.             pictureBox9.Enabled = false;
  45.         }
  46.  
  47.         private void VirtualMind()
  48.         {
  49.             // Проверяем все варианты с М[0]
  50.             if ((M[0] == 2) && (M[1] == 2) && (M[2] == 0)) { M[2] = 2; return; }  // 0 1 2
  51.             if ((M[0] == 2) && (M[3] == 2) && (M[6] == 0)) { M[6] = 2; return; }  // 3 4 5
  52.             if ((M[0] == 2) && (M[6] == 2) && (M[3] == 0)) { M[3] = 2; return; }  // 6 7 8
  53.             if ((M[0] == 2) && (M[2] == 2) && (M[1] == 0)) { M[1] = 2; return; }  //
  54.             if ((M[0] == 2) && (M[4] == 2) && (M[8] == 0)) { M[8] = 2; return; }
  55.             if ((M[0] == 2) && (M[8] == 2) && (M[4] == 0)) { M[4] = 2; return; }
  56.             // Проверяем все варианты с М[1]
  57.             if ((M[1] == 2) && (M[2] == 2) && (M[0] == 0)) { M[0] = 2; return; }
  58.             if ((M[1] == 2) && (M[4] == 2) && (M[7] == 0)) { M[7] = 2; return; }
  59.             if ((M[1] == 2) && (M[7] == 2) && (M[4] == 0)) { M[4] = 2; return; }
  60.             // Проверяем все варианты с М[2]
  61.             if ((M[2] == 2) && (M[4] == 2) && (M[6] == 0)) { M[6] = 2; return; }
  62.             if ((M[2] == 2) && (M[6] == 2) && (M[4] == 0)) { M[4] = 2; return; }
  63.             if ((M[2] == 2) && (M[5] == 2) && (M[8] == 0)) { M[8] = 2; return; }
  64.             if ((M[2] == 2) && (M[8] == 2) && (M[4] == 0)) { M[4] = 2; return; }
  65.             // Проверяем все варианты с М[3]
  66.             if ((M[3] == 2) && (M[4] == 2) && (M[5] == 0)) { M[5] = 2; return; }
  67.             if ((M[3] == 2) && (M[5] == 2) && (M[4] == 0)) { M[4] = 2; return; }
  68.             if ((M[3] == 2) && (M[6] == 2) && (M[0] == 0)) { M[0] = 2; return; }
  69.             // Проверяем все варианты с М[4]
  70.             if ((M[4] == 2) && (M[5] == 2) && (M[3] == 0)) { M[3] = 2; return; }
  71.             if ((M[4] == 2) && (M[7] == 2) && (M[1] == 0)) { M[1] = 2; return; }
  72.             if ((M[4] == 2) && (M[8] == 2) && (M[0] == 0)) { M[0] = 2; return; }
  73.             if ((M[4] == 2) && (M[6] == 2) && (M[2] == 0)) { M[2] = 2; return; }
  74.             // Проверяем все варианты с М[5]
  75.             if ((M[5] == 2) && (M[8] == 2) && (M[2] == 0)) { M[2] = 2; return; }
  76.             // Проверяем все варианты с М[6]
  77.             if ((M[6] == 2) && (M[7] == 2) && (M[8] == 0)) { M[8] = 2; return; }
  78.             if ((M[6] == 2) && (M[8] == 2) && (M[7] == 0)) { M[7] = 2; return; }
  79.             // Проверяем все варианты с М[7]
  80.             if ((M[7] == 2) && (M[8] == 2) && (M[6] == 0)) { M[6] = 2; return; }
  81.  
  82.  
  83.             // Проверяем все варианты с М[0]
  84.             if ((M[0] == 1) && (M[1] == 1) && (M[2] == 0)) { M[2] = 2; return; }  // 0 1 2
  85.             if ((M[0] == 1) && (M[3] == 1) && (M[6] == 0)) { M[6] = 2; return; }  // 3 4 5
  86.             if ((M[0] == 1) && (M[6] == 1) && (M[3] == 0)) { M[3] = 2; return; }  // 6 7 8
  87.             if ((M[0] == 1) && (M[2] == 1) && (M[1] == 0)) { M[1] = 2; return; }  //
  88.             if ((M[0] == 1) && (M[4] == 1) && (M[8] == 0)) { M[8] = 2; return; }
  89.             if ((M[0] == 1) && (M[8] == 1) && (M[4] == 0)) { M[4] = 2; return; }
  90.             // Проверяем все варианты с М[1]
  91.             if ((M[1] == 1) && (M[2] == 1) && (M[0] == 0)) { M[0] = 2; return; }
  92.             if ((M[1] == 1) && (M[4] == 1) && (M[7] == 0)) { M[7] = 2; return; }
  93.             if ((M[1] == 1) && (M[7] == 1) && (M[4] == 0)) { M[4] = 2; return; }
  94.             // Проверяем все варианты с М[2]
  95.             if ((M[2] == 1) && (M[4] == 1) && (M[6] == 0)) { M[6] = 2; return; }
  96.             if ((M[2] == 1) && (M[6] == 1) && (M[4] == 0)) { M[4] = 2; return; }
  97.             if ((M[2] == 1) && (M[5] == 1) && (M[8] == 0)) { M[8] = 2; return; }
  98.             if ((M[2] == 1) && (M[8] == 1) && (M[5] == 0)) { M[5] = 2; return; }
  99.             // Проверяем все варианты с М[3]
  100.             if ((M[3] == 1) && (M[4] == 1) && (M[5] == 0)) { M[5] = 2; return; }
  101.             if ((M[3] == 1) && (M[5] == 1) && (M[4] == 0)) { M[4] = 2; return; }
  102.             if ((M[3] == 1) && (M[6] == 1) && (M[0] == 0)) { M[0] = 2; return; }
  103.             // Проверяем все варианты с М[4]
  104.             if ((M[4] == 1) && (M[5] == 1) && (M[3] == 0)) { M[3] = 2; return; }
  105.             if ((M[4] == 1) && (M[7] == 1) && (M[1] == 0)) { M[1] = 2; return; }
  106.             if ((M[4] == 1) && (M[8] == 1) && (M[0] == 0)) { M[0] = 2; return; }
  107.             if ((M[4] == 1) && (M[6] == 1) && (M[2] == 0)) { M[2] = 2; return; }
  108.             // Проверяем все варианты с М[5]
  109.             if ((M[5] == 1) && (M[8] == 1) && (M[2] == 0)) { M[2] = 2; return; }
  110.             // Проверяем все варианты с М[6]
  111.             if ((M[6] == 1) && (M[7] == 1) && (M[8] == 0)) { M[8] = 2; return; }
  112.             if ((M[6] == 1) && (M[8] == 1) && (M[7] == 0)) { M[7] = 2; return; }
  113.             // Проверяем все варианты с М[7]
  114.             if ((M[7] == 1) && (M[8] == 1) && (M[6] == 0)) { M[6] = 2; return; }
  115.  
  116.             if (M[4] == 0) { M[4] = 2; return; }
  117.  
  118.             int[] Z = new int[9];
  119.             for (int i = 0; i < 9; i++)  Z[i] = 0;
  120.                
  121.             if ((M[0] == 0) && (M[1] != 1) && (M[2] != 1) && (M[3]!=1) && (M[6] !=1 ))
  122.                 {
  123.                     if (M[1] == 2) Z[0]++;
  124.                     if (M[2] == 2) Z[0]++;
  125.                     if (M[3] == 2) Z[0]++;
  126.                     if (M[6] == 2) Z[0]++;
  127.                 }
  128.             if ((M[1] == 0) && (M[0] != 1) && (M[2] != 1) && (M[4] != 1) && (M[7] != 1))
  129.             {
  130.                 if (M[0] == 2) Z[1]++;
  131.                 if (M[2] == 2) Z[1]++;
  132.                 if (M[4] == 2) Z[1]++;
  133.                 if (M[7] == 2) Z[1]++;
  134.             }
  135.  
  136.             if ((M[2] == 0) && (M[0] != 1) && (M[1] != 1) && (M[5] != 1) && (M[8] != 1))
  137.             {
  138.                 if (M[0] == 2) Z[2]++;
  139.                 if (M[1] == 2) Z[2]++;
  140.                 if (M[5] == 2) Z[2]++;
  141.                 if (M[8] == 2) Z[2]++;
  142.             }
  143.             if ((M[3] == 0) && (M[0] != 1) && (M[6] != 1) && (M[4] != 1) && (M[5] != 1))
  144.             {
  145.                 if (M[0] == 2) Z[3]++;
  146.                 if (M[6] == 2) Z[3]++;
  147.                 if (M[4] == 2) Z[3]++;
  148.                 if (M[5] == 2) Z[3]++;
  149.             }
  150.             if ((M[5] == 0) && (M[2] != 1) && (M[8] != 1) && (M[3] != 1) && (M[4] != 1))
  151.             {
  152.                 if (M[2] == 2) Z[5]++;
  153.                 if (M[8] == 2) Z[5]++;
  154.                 if (M[3] == 2) Z[5]++;
  155.                 if (M[4] == 2) Z[5]++;
  156.             }
  157.             if ((M[6] == 0) && (M[0] != 1) && (M[3] != 1) && (M[7] != 1) && (M[8] != 1))
  158.             {
  159.                 if (M[0] == 2) Z[6]++;
  160.                 if (M[3] == 2) Z[6]++;
  161.                 if (M[7] == 2) Z[6]++;
  162.                 if (M[8] == 2) Z[6]++;
  163.             }
  164.             if ((M[7] == 0) && (M[6] != 1) && (M[8] != 1) && (M[1] != 1) && (M[4] != 1))
  165.             {
  166.                 if (M[6] == 2) Z[7]++;
  167.                 if (M[8] == 2) Z[7]++;
  168.                 if (M[1] == 2) Z[7]++;
  169.                 if (M[4] == 2) Z[7]++;
  170.             }
  171.             if ((M[8] == 0) && (M[2] != 1) && (M[5] != 1) && (M[6] != 1) && (M[7] != 1))
  172.             {
  173.                 if (M[6] == 2) Z[8]++;
  174.                 if (M[8] == 2) Z[8]++;
  175.                 if (M[1] == 2) Z[8]++;
  176.                 if (M[4] == 2) Z[8]++;
  177.             }
  178.             int m_z = 0;
  179.             for (int i = 0; i < 9; i++) if (Z[i] > Z[m_z]) m_z = i;
  180.             if (Z[m_z] > 1)
  181.             {
  182.                 M[m_z] = 2;
  183.                 return;
  184.             }
  185.             if ((M[0] == 2) && (M[2] == 0) && (M[1] == 0)) { M[1] = 2; return; }
  186.             if ((M[0] == 2) && (M[6] == 0) && (M[3] == 0)) { M[3] = 2; return; }
  187.             if ((M[0] == 2) && (M[8] == 0) && (M[4] == 0)) { M[4] = 2; return; }
  188.  
  189.             if ((M[1] == 2) && (M[0] == 0) && (M[2] == 0)) { M[0] = 2; return; }
  190.             if ((M[1] == 2) && (M[4] == 0) && (M[7] == 0)) { M[4] = 2; return; }
  191.            
  192.             if ((M[2] == 2) && (M[0] == 0) && (M[1] == 0)) { M[1] = 2; return; }
  193.             if ((M[2] == 2) && (M[4] == 0) && (M[6] == 0)) { M[4] = 2; return; }
  194.             if ((M[2] == 2) && (M[5] == 0) && (M[8] == 0)) { M[5] = 2; return; }
  195.  
  196.             if ((M[3] == 2) && (M[0] == 0) && (M[6] == 0)) { M[0] = 2; return; }
  197.             if ((M[3] == 2) && (M[4] == 0) && (M[5] == 0)) { M[4] = 2; return; }
  198.  
  199.             if ((M[4] == 2) && (M[0] == 0) && (M[8] == 0)) { M[8] = 2; return; }
  200.  
  201.             if ((M[5] == 2) && (M[8] == 0) && (M[2] == 0)) { M[8] = 2; return; }
  202.  
  203.             if ((M[6] == 2) && (M[3] == 0) && (M[0] == 0)) { M[0] = 2; return; }
  204.             if ((M[6] == 2) && (M[7] == 0) && (M[8] == 0)) { M[7] = 2; return; }
  205.  
  206.             if ((M[7] == 2) && (M[6] == 0) && (M[8] == 0)) { M[6] = 2; return; }
  207.  
  208.             if ((M[8] == 2) && (M[6] == 0) && (M[7] == 0)) { M[7] = 2; return; }
  209.  
  210.             for (int i = 0; i < 9; i++) if (M[i] == 0) { M[i] = 2; return; }
  211.          
  212.  
  213.         }
  214.         private void Winer()
  215.         {
  216.             for (int i = 1; i < 3; i++)
  217.             {
  218.                 if ((M[0] == i) && (M[1] == i) && (M[2] == i)) { TheEnd(i); return; };
  219.                 if ((M[3] == i) && (M[4] == i) && (M[5] == i)) { TheEnd(i); return; };
  220.                 if ((M[6] == i) && (M[7] == i) && (M[8] == i)) { TheEnd(i); return; };
  221.                 if ((M[0] == i) && (M[3] == i) && (M[6] == i)) { TheEnd(i); return; };
  222.                 if ((M[1] == i) && (M[4] == i) && (M[7] == i)) { TheEnd(i); return; };
  223.                 if ((M[2] == i) && (M[5] == i) && (M[8] == i)) { TheEnd(i); return; };
  224.                 if ((M[0] == i) && (M[4] == i) && (M[8] == i)) { TheEnd(i); return; };
  225.                 if ((M[2] == i) && (M[4] == i) && (M[6] == i)) { TheEnd(i); return; };
  226.             }
  227.             bool nobody = true;
  228.             for (int i = 0; i < 9; i++) if (M[i] == 0) nobody = false;
  229.             if (nobody)
  230.             {
  231.                 win_nobody++;
  232.                 MessageBox.Show("Ничья!", "Конец игры.", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  233.                 label1.Text = "Ничья: " + win_nobody;
  234.                 TheEnd(0);
  235.             }
  236.  
  237.  
  238.         }
  239.  
  240.         private void TheEnd(int q)
  241.         {
  242.             if (q == 1)
  243.             {
  244.                 win_men++;
  245.                 MessageBox.Show("Поздравляем, Вы победили!", "Конец игры.", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  246.             }
  247.            if (q == 2)
  248.             {
  249.                 win_comp++;
  250.                 MessageBox.Show("Победил компьютер!", "Конец игры.", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  251.             }
  252.            pictureBox1.Enabled = false;
  253.            //   -//-              -//-     //
  254.            pictureBox9.Enabled = false;
  255.  
  256.            label2.Text = "Компьютер: " + win_comp;
  257.            label3.Text = "Человек: " + win_men;
  258.  
  259.            
  260.         }
  261.  
  262.  
  263.         private void OutPut()
  264.         {
  265.             if (M[0] == 2) { pictureBox1.Image = global::XO.Properties.Resources.O; pictureBox1.Enabled = false; }
  266.             if (M[1] == 2) { pictureBox2.Image = global::XO.Properties.Resources.O; pictureBox2.Enabled = false; }
  267.             if (M[2] == 2) { pictureBox3.Image = global::XO.Properties.Resources.O; pictureBox3.Enabled = false; }
  268.             if (M[3] == 2) { pictureBox4.Image = global::XO.Properties.Resources.O; pictureBox4.Enabled = false; }
  269.             if (M[4] == 2) { pictureBox5.Image = global::XO.Properties.Resources.O; pictureBox5.Enabled = false; }
  270.             if (M[5] == 2) { pictureBox6.Image = global::XO.Properties.Resources.O; pictureBox6.Enabled = false; }
  271.             if (M[6] == 2) { pictureBox7.Image = global::XO.Properties.Resources.O; pictureBox7.Enabled = false; }
  272.             if (M[7] == 2) { pictureBox8.Image = global::XO.Properties.Resources.O; pictureBox8.Enabled = false; }
  273.             if (M[8] == 2) { pictureBox9.Image = global::XO.Properties.Resources.O; pictureBox9.Enabled = false; }
  274.         }
  275.  
  276.         private void button1_Click(object sender, EventArgs e)
  277.         {
  278.             for (int i = 0; i < 9; i++) M[i] = 0;
  279.             pictureBox1.Image = null; pictureBox1.Enabled = true;
  280.             //   -//-              -//-     //
  281.             pictureBox9.Image = null; pictureBox9.Enabled = true;
  282.             if (radioButton2.Checked)
  283.             {
  284.                 VirtualMind();
  285.                 OutPut();
  286.                 Winer();
  287.             }
  288.         }
  289.     }
  290. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут