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

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

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

Доброго времени суток. Можете перевести код из Delphi в C#
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Button1: TButton;
    RadioGroup1: TRadioGroup;
    GroupBox1: TGroupBox;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Label1Click(Sender: TObject);
    procedure Label2Click(Sender: TObject);
    procedure Label3Click(Sender: TObject);
    procedure Label4Click(Sender: TObject);
    procedure Label5Click(Sender: TObject);
    procedure Label6Click(Sender: TObject);
    procedure Label7Click(Sender: TObject);
    procedure Label8Click(Sender: TObject);
    procedure Label9Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

procedure VirtualMind;
procedure OutPut;
procedure Winer;
procedure TheEnd(q: integer);

var
  Form1: TForm1;
  M: array[1..9] of integer;
  win_men, win_comp, win_nobody: integer;

implementation

{$R *.dfm}

procedure VirtualMind;
var
   i, m_z: integer;
   Z: array[1..9] of integer;
begin

if (M[1]=2) and (M[2]=2) and (M[3]=0) then begin M[3]:=2; exit; end;
if (M[1]=2) and (M[4]=2) and (M[7]=0) then begin M[7]:=2; exit; end;
if (M[1]=2) and (M[5]=2) and (M[9]=0) then begin M[9]:=2; exit; end;
if (M[1]=2) and (M[7]=2) and (M[4]=0) then begin M[4]:=2; exit; end;
if (M[1]=2) and (M[9]=2) and (M[5]=0) then begin M[5]:=2; exit; end;
if (M[1]=2) and (M[3]=2) and (M[2]=0) then begin M[2]:=2; exit; end;

if (M[2]=2) and (M[5]=2) and (M[8]=0) then begin M[8]:=2; exit; end;
if (M[2]=2) and (M[3]=2) and (M[1]=0) then begin M[1]:=2; exit; end;
if (M[2]=2) and (M[8]=2) and (M[5]=0) then begin M[5]:=2; exit; end;

if (M[3]=2) and (M[5]=2) and (M[7]=0) then begin M[7]:=2; exit; end;
if (M[3]=2) and (M[6]=2) and (M[9]=0) then begin M[9]:=2; exit; end;
if (M[3]=2) and (M[7]=2) and (M[5]=0) then begin M[5]:=2; exit; end;
if (M[3]=2) and (M[9]=2) and (M[6]=0) then begin M[6]:=2; exit; end;

if (M[4]=2) and (M[5]=2) and (M[6]=0) then begin M[6]:=2; exit; end;
if (M[4]=2) and (M[7]=2) and (M[1]=0) then begin M[1]:=2; exit; end;
if (M[4]=2) and (M[6]=2) and (M[5]=0) then begin M[5]:=2; exit; end;

if (M[5]=2) and (M[7]=2) and (M[3]=0) then begin M[3]:=2; exit; end;
if (M[5]=2) and (M[8]=2) and (M[2]=0) then begin M[2]:=2; exit; end;
if (M[5]=2) and (M[6]=2) and (M[4]=0) then begin M[4]:=2; exit; end;

if (M[6]=2) and (M[9]=2) and (M[3]=0) then begin M[3]:=2; exit; end;

if (M[7]=2) and (M[8]=2) and (M[9]=0) then begin M[9]:=2; exit; end;
if (M[7]=2) and (M[9]=2) and (M[8]=0) then begin M[8]:=2; exit; end;

if (M[8]=2) and (M[9]=2) and (M[7]=0) then begin M[7]:=2; exit; end;

if (M[1]=1) and (M[2]=1) and (M[3]=0) then begin M[3]:=2; exit; end;
if (M[1]=1) and (M[4]=1) and (M[7]=0) then begin M[7]:=2; exit; end;
if (M[1]=1) and (M[5]=1) and (M[9]=0) then begin M[9]:=2; exit; end;
if (M[1]=1) and (M[7]=1) and (M[4]=0) then begin M[4]:=2; exit; end;
if (M[1]=1) and (M[9]=1) and (M[5]=0) then begin M[5]:=2; exit; end;
if (M[1]=1) and (M[3]=1) and (M[2]=0) then begin M[2]:=2; exit; end;

if (M[2]=1) and (M[5]=1) and (M[8]=0) then begin M[8]:=2; exit; end;
if (M[2]=1) and (M[3]=1) and (M[1]=0) then begin M[1]:=2; exit; end;
if (M[2]=1) and (M[8]=1) and (M[5]=0) then begin M[5]:=2; exit; end;

if (M[3]=1) and (M[5]=1) and (M[7]=0) then begin M[7]:=2; exit; end;
if (M[3]=1) and (M[6]=1) and (M[9]=0) then begin M[9]:=2; exit; end;
if (M[3]=1) and (M[7]=1) and (M[5]=0) then begin M[5]:=2; exit; end;
if (M[3]=1) and (M[9]=1) and (M[6]=0) then begin M[6]:=2; exit; end;

if (M[4]=1) and (M[5]=1) and (M[6]=0) then begin M[6]:=2; exit; end;
if (M[4]=1) and (M[7]=1) and (M[1]=0) then begin M[1]:=2; exit; end;
if (M[4]=1) and (M[6]=1) and (M[5]=0) then begin M[5]:=2; exit; end;

if (M[5]=1) and (M[7]=1) and (M[3]=0) then begin M[3]:=2; exit; end;
if (M[5]=1) and (M[8]=1) and (M[2]=0) then begin M[2]:=2; exit; end;
if (M[5]=1) and (M[6]=1) and (M[4]=0) then begin M[4]:=2; exit; end;

if (M[6]=1) and (M[9]=1) and (M[3]=0) then begin M[3]:=2; exit; end;

if (M[7]=1) and (M[8]=1) and (M[9]=0) then begin M[9]:=2; exit; end;
if (M[7]=1) and (M[9]=1) and (M[8]=0) then begin M[8]:=2; exit; end;

if (M[8]=1) and (M[9]=1) and (M[7]=0) then begin M[7]:=2; exit; end;

if (M[5]=0) then begin M[5]:=2; exit; end;

for i:=1 to 9 do Z[i]:=0;
if (M[1]=0) and (M[2]<>1) and (M[3]<>1) and (M[4]<>1) and (M[7]<>1) then begin
               if M[2]=1 then Z[1]:=Z[1]+1;
               if M[3]=1 then Z[1]:=Z[1]+1;
               if M[4]=1 then Z[1]:=Z[1]+1;
               if M[7]=1 then Z[1]:=Z[1]+1;
               end;
if (M[2]=0) and (M[1]<>1) and (M[3]<>1) and (M[5]<>1) and (M[8]<>1) then begin
               if M[1]=1 then Z[2]:=Z[2]+1;
               if M[3]=1 then Z[2]:=Z[2]+1;
               if M[5]=1 then Z[2]:=Z[2]+1;
               if M[8]=1 then Z[2]:=Z[2]+1;
               end;
if (M[3]=0) and (M[1]<>1) and (M[2]<>1) and (M[6]<>1) and (M[9]<>1) then begin
               if M[1]=1 then Z[3]:=Z[3]+1;
               if M[2]=1 then Z[3]:=Z[3]+1;
               if M[6]=1 then Z[3]:=Z[3]+1;
               if M[9]=1 then Z[3]:=Z[3]+1;
               end;
if (M[4]=0) and (M[1]<>1) and (M[7]<>1) and (M[5]<>1) and (M[6]<>1) then begin
               if M[1]=1 then Z[4]:=Z[4]+1;
               if M[7]=1 then Z[4]:=Z[4]+1;
               if M[5]=1 then Z[4]:=Z[4]+1;
               if M[6]=1 then Z[4]:=Z[4]+1;
               end;
if (M[6]=0) and (M[3]<>1) and (M[9]<>1) and (M[4]<>1) and (M[5]<>1) then begin
               if M[3]=1 then Z[6]:=Z[6]+1;
               if M[9]=1 then Z[6]:=Z[6]+1;
               if M[4]=1 then Z[6]:=Z[6]+1;
               if M[5]=1 then Z[6]:=Z[6]+1;
               end;
if (M[7]=0) and (M[1]<>1) and (M[4]<>1) and (M[8]<>1) and (M[9]<>1) then begin
               if M[1]=1 then Z[7]:=Z[7]+1;
               if M[4]=1 then Z[7]:=Z[7]+1;
               if M[8]=1 then Z[7]:=Z[7]+1;
               if M[9]=1 then Z[7]:=Z[7]+1;
               end;
if (M[8]=0) and (M[7]<>1) and (M[9]<>1) and (M[2]<>1) and (M[5]<>1) then begin
               if M[7]=1 then Z[8]:=Z[8]+1;
               if M[9]=1 then Z[8]:=Z[8]+1;
               if M[2]=1 then Z[8]:=Z[8]+1;
               if M[5]=1 then Z[8]:=Z[8]+1;
               end;
if (M[9]=0) and (M[3]<>1) and (M[6]<>1) and (M[7]<>1) and (M[8]<>1) then begin
               if M[3]=1 then Z[9]:=Z[9]+1;
               if M[6]=1 then Z[9]:=Z[9]+1;
               if M[7]=1 then Z[9]:=Z[9]+1;
               if M[8]=1 then Z[9]:=Z[9]+1;
               end;

m_z:=1;
for i:=2 to 9 do if Z[i]>Z[m_z] then m_z:=i;
if Z[m_z]>1 then begin
                 M[m_z]:=2;
                 exit;
                 end;

if (M[1]=2) and (M[3]=0) and (M[2]=0) then begin M[2]:=2; exit; end;
if (M[1]=2) and (M[7]=0) and (M[4]=0) then begin M[4]:=2; exit; end;
if (M[1]=2) and (M[9]=0) and (M[5]=0) then begin M[5]:=2; exit; end;

if (M[2]=2) and (M[1]=0) and (M[3]=0) then begin M[1]:=2; exit; end;
if (M[2]=2) and (M[5]=0) and (M[8]=0) then begin M[5]:=2; exit; end;

if (M[3]=2) and (M[1]=0) and (M[2]=0) then begin M[2]:=2; exit; end;
if (M[3]=2) and (M[5]=0) and (M[7]=0) then begin M[5]:=2; exit; end;
if (M[3]=2) and (M[6]=0) and (M[9]=0) then begin M[6]:=2; exit; end;

if (M[4]=2) and (M[1]=0) and (M[7]=0) then begin M[1]:=2; exit; end;
if (M[4]=2) and (M[5]=0) and (M[6]=0) then begin M[5]:=2; exit; end;

if (M[6]=2) and (M[9]=0) and (M[3]=0) then begin M[9]:=2; exit; end;

if (M[7]=2) and (M[4]=0) and (M[1]=0) then begin M[1]:=2; exit; end;
if (M[7]=2) and (M[8]=0) and (M[9]=0) then begin M[8]:=2; exit; end;

if (M[8]=2) and (M[7]=0) and (M[9]=0) then begin M[7]:=2; exit; end;

if (M[9]=2) and (M[8]=0) and (M[7]=0) then begin M[8]:=2; exit; end;

for i:=1 to 9 do if M[i]=0 then begin
                                M[i]:=2;
                                exit;
                                end;

end;

procedure OutPut;
begin
if M[1]=2 then begin Form1.Label1.Caption:='0'; Form1.Label1.Enabled:=false; end;
if M[2]=2 then begin Form1.Label2.Caption:='0'; Form1.Label2.Enabled:=false; end;
if M[3]=2 then begin Form1.Label3.Caption:='0'; Form1.Label3.Enabled:=false; end;
if M[4]=2 then begin Form1.Label4.Caption:='0'; Form1.Label4.Enabled:=false; end;
if M[5]=2 then begin Form1.Label5.Caption:='0'; Form1.Label5.Enabled:=false; end;
if M[6]=2 then begin Form1.Label6.Caption:='0'; Form1.Label6.Enabled:=false; end;
if M[7]=2 then begin Form1.Label7.Caption:='0'; Form1.Label7.Enabled:=false; end;
if M[8]=2 then begin Form1.Label8.Caption:='0'; Form1.Label8.Enabled:=false; end;
if M[9]=2 then begin Form1.Label9.Caption:='0'; Form1.Label9.Enabled:=false; end;
end;

procedure Winer;
var
   i: integer;
   nobody: boolean;
begin
for i:=1 to 2 do begin
                 if (M[1]=i) and (M[4]=i) and (M[7]=i) then begin TheEnd(i); exit; end;
                 if (M[1]=i) and (M[5]=i) and (M[9]=i) then begin TheEnd(i); exit; end;
                 if (M[1]=i) and (M[2]=i) and (M[3]=i) then begin TheEnd(i); exit; end;
                 if (M[2]=i) and (M[5]=i) and (M[8]=i) then begin TheEnd(i); exit; end;
                 if (M[3]=i) and (M[5]=i) and (M[7]=i) then begin TheEnd(i); exit; end;
                 if (M[4]=i) and (M[5]=i) and (M[6]=i) then begin TheEnd(i); exit; end;
                 if (M[6]=i) and (M[3]=i) and (M[9]=i) then begin TheEnd(i); exit; end;
                 if (M[7]=i) and (M[8]=i) and (M[9]=i) then begin TheEnd(i); exit; end;
                 end;
nobody:=true;
for i:=1 to 9 do if M[i]=0 then nobody:=false;
if nobody then begin
               ShowMessage('Ничья');
               win_nobody:=win_nobody+1;
               Form1.Label12.Caption:='Ничья: '+IntToStr(win_nobody);
               end;
end;

procedure TheEnd(q: integer);
begin
if q=1 then begin
            ShowMessage('Победа игрока!');
            win_men:=win_men+1;
            end
            else begin
                 ShowMessage('Победа компьютера');
                 win_comp:=win_comp+1;
                 end;
Form1.Label1.Enabled:=false;
Form1.Label2.Enabled:=false;
Form1.Label3.Enabled:=false;
Form1.Label4.Enabled:=false;
Form1.Label5.Enabled:=false;
Form1.Label6.Enabled:=false;
Form1.Label7.Enabled:=false;
Form1.Label8.Enabled:=false;
Form1.Label9.Enabled:=false;
Form1.Label10.Caption:='Человек: '+IntToStr(win_men);
Form1.Label11.Caption:='Компьютер: '+IntToStr(win_comp);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   i: integer;
begin
for i:=1 to 9 do M[i]:=0;
Label1.Enabled:=true;
Label2.Enabled:=true;
Label3.Enabled:=true;
Label4.Enabled:=true;
Label5.Enabled:=true;
Label6.Enabled:=true;
Label7.Enabled:=true;
Label8.Enabled:=true;
Label9.Enabled:=true;
Label1.Caption:='';
Label2.Caption:='';
Label3.Caption:='';
Label4.Caption:='';
Label5.Caption:='';
Label6.Caption:='';
Label7.Caption:='';
Label8.Caption:='';
Label9.Caption:='';
if RadioGroup1.ItemIndex=1 then
   begin
   VirtualMind;
   OutPut;
   Winer;
   end;
end;

procedure TForm1.Label1Click(Sender: TObject);
begin
M[1]:=1;
Label1.Caption:='X';
Label1.Enabled:=false;
VirtualMind;
OutPut;
Winer;
end;

procedure TForm1.Label2Click(Sender: TObject);
begin
M[2]:=1;
Label2.Caption:='X';
Label2.Enabled:=false;
VirtualMind;
OutPut;
Winer;
end;

procedure TForm1.Label3Click(Sender: TObject);
begin
M[3]:=1;
Label3.Caption:='X';
Label3.Enabled:=false;
VirtualMind;
OutPut;
Winer;
end;

procedure TForm1.Label4Click(Sender: TObject);
begin
M[4]:=1;
Label4.Caption:='X';
Label4.Enabled:=false;
VirtualMind;
OutPut;
Winer;
end;

procedure TForm1.Label5Click(Sender: TObject);
begin
M[5]:=1;
Label5.Caption:='X';
Label5.Enabled:=false;
VirtualMind;
OutPut;
Winer;
end;

procedure TForm1.Label6Click(Sender: TObject);
begin
M[6]:=1;
Label6.Caption:='X';
Label6.Enabled:=false;
VirtualMind;
OutPut;
Winer;
end;

procedure TForm1.Label7Click(Sender: TObject);
begin
M[7]:=1;
Label7.Caption:='X';
Label7.Enabled:=false;
VirtualMind;
OutPut;
Winer;
end;

procedure TForm1.Label8Click(Sender: TObject);
begin
M[8]:=1;
Label8.Caption:='X';
Label8.Enabled:=false;
VirtualMind;
OutPut;
Winer;
end;

procedure TForm1.Label9Click(Sender: TObject);
begin
M[9]:=1;
Label9.Caption:='X';
Label9.Enabled:=false;
VirtualMind;
OutPut;
Winer;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
win_men:=0;
win_comp:=0;
win_nobody:=0;
Label10.Caption:='Человек: '+IntToStr(win_men);
Label11.Caption:='Компьютер: '+IntToStr(win_comp);
Label12.Caption:='Ничья: '+IntToStr(win_nobody);
end;

end.

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace XO
{
    public partial class Form1 : Form
    {  
        public int [] M = new int[9];
        public int win_nobody;
        public int win_men;
        public int win_comp;
 
 
        public Form1()
        
        {
            InitializeComponent();
        }
 
 
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            M[0] = 1;
            pictureBox1.Enabled = false;
            pictureBox1.Image = global::XO.Properties.Resources.X;
            VirtualMind();
            OutPut();
            Winer();
            
        }
       // Тоже самое для всех pictureBox-ов.
        
        private void Form1_Load(object sender, EventArgs e)
        {
            pictureBox1.Enabled = false;
           //   -//-              -//-     //
            pictureBox9.Enabled = false;
        }
 
        private void VirtualMind()
        {
            // Проверяем все варианты с М[0]
            if ((M[0] == 2) && (M[1] == 2) && (M[2] == 0)) { M[2] = 2; return; }  // 0 1 2
            if ((M[0] == 2) && (M[3] == 2) && (M[6] == 0)) { M[6] = 2; return; }  // 3 4 5
            if ((M[0] == 2) && (M[6] == 2) && (M[3] == 0)) { M[3] = 2; return; }  // 6 7 8
            if ((M[0] == 2) && (M[2] == 2) && (M[1] == 0)) { M[1] = 2; return; }  //
            if ((M[0] == 2) && (M[4] == 2) && (M[8] == 0)) { M[8] = 2; return; }
            if ((M[0] == 2) && (M[8] == 2) && (M[4] == 0)) { M[4] = 2; return; }
            // Проверяем все варианты с М[1]
            if ((M[1] == 2) && (M[2] == 2) && (M[0] == 0)) { M[0] = 2; return; }
            if ((M[1] == 2) && (M[4] == 2) && (M[7] == 0)) { M[7] = 2; return; }
            if ((M[1] == 2) && (M[7] == 2) && (M[4] == 0)) { M[4] = 2; return; } 
            // Проверяем все варианты с М[2]
            if ((M[2] == 2) && (M[4] == 2) && (M[6] == 0)) { M[6] = 2; return; }
            if ((M[2] == 2) && (M[6] == 2) && (M[4] == 0)) { M[4] = 2; return; }
            if ((M[2] == 2) && (M[5] == 2) && (M[8] == 0)) { M[8] = 2; return; }
            if ((M[2] == 2) && (M[8] == 2) && (M[4] == 0)) { M[4] = 2; return; }
            // Проверяем все варианты с М[3]
            if ((M[3] == 2) && (M[4] == 2) && (M[5] == 0)) { M[5] = 2; return; }
            if ((M[3] == 2) && (M[5] == 2) && (M[4] == 0)) { M[4] = 2; return; }
            if ((M[3] == 2) && (M[6] == 2) && (M[0] == 0)) { M[0] = 2; return; }
            // Проверяем все варианты с М[4]
            if ((M[4] == 2) && (M[5] == 2) && (M[3] == 0)) { M[3] = 2; return; }
            if ((M[4] == 2) && (M[7] == 2) && (M[1] == 0)) { M[1] = 2; return; }
            if ((M[4] == 2) && (M[8] == 2) && (M[0] == 0)) { M[0] = 2; return; }
            if ((M[4] == 2) && (M[6] == 2) && (M[2] == 0)) { M[2] = 2; return; }
            // Проверяем все варианты с М[5]
            if ((M[5] == 2) && (M[8] == 2) && (M[2] == 0)) { M[2] = 2; return; }
            // Проверяем все варианты с М[6]
            if ((M[6] == 2) && (M[7] == 2) && (M[8] == 0)) { M[8] = 2; return; }
            if ((M[6] == 2) && (M[8] == 2) && (M[7] == 0)) { M[7] = 2; return; }
            // Проверяем все варианты с М[7]
            if ((M[7] == 2) && (M[8] == 2) && (M[6] == 0)) { M[6] = 2; return; }
 
 
            // Проверяем все варианты с М[0]
            if ((M[0] == 1) && (M[1] == 1) && (M[2] == 0)) { M[2] = 2; return; }  // 0 1 2
            if ((M[0] == 1) && (M[3] == 1) && (M[6] == 0)) { M[6] = 2; return; }  // 3 4 5
            if ((M[0] == 1) && (M[6] == 1) && (M[3] == 0)) { M[3] = 2; return; }  // 6 7 8
            if ((M[0] == 1) && (M[2] == 1) && (M[1] == 0)) { M[1] = 2; return; }  //
            if ((M[0] == 1) && (M[4] == 1) && (M[8] == 0)) { M[8] = 2; return; }
            if ((M[0] == 1) && (M[8] == 1) && (M[4] == 0)) { M[4] = 2; return; }
            // Проверяем все варианты с М[1]
            if ((M[1] == 1) && (M[2] == 1) && (M[0] == 0)) { M[0] = 2; return; }
            if ((M[1] == 1) && (M[4] == 1) && (M[7] == 0)) { M[7] = 2; return; }
            if ((M[1] == 1) && (M[7] == 1) && (M[4] == 0)) { M[4] = 2; return; }
            // Проверяем все варианты с М[2]
            if ((M[2] == 1) && (M[4] == 1) && (M[6] == 0)) { M[6] = 2; return; }
            if ((M[2] == 1) && (M[6] == 1) && (M[4] == 0)) { M[4] = 2; return; }
            if ((M[2] == 1) && (M[5] == 1) && (M[8] == 0)) { M[8] = 2; return; }
            if ((M[2] == 1) && (M[8] == 1) && (M[5] == 0)) { M[5] = 2; return; }
            // Проверяем все варианты с М[3]
            if ((M[3] == 1) && (M[4] == 1) && (M[5] == 0)) { M[5] = 2; return; }
            if ((M[3] == 1) && (M[5] == 1) && (M[4] == 0)) { M[4] = 2; return; }
            if ((M[3] == 1) && (M[6] == 1) && (M[0] == 0)) { M[0] = 2; return; }
            // Проверяем все варианты с М[4]
            if ((M[4] == 1) && (M[5] == 1) && (M[3] == 0)) { M[3] = 2; return; }
            if ((M[4] == 1) && (M[7] == 1) && (M[1] == 0)) { M[1] = 2; return; }
            if ((M[4] == 1) && (M[8] == 1) && (M[0] == 0)) { M[0] = 2; return; }
            if ((M[4] == 1) && (M[6] == 1) && (M[2] == 0)) { M[2] = 2; return; }
            // Проверяем все варианты с М[5]
            if ((M[5] == 1) && (M[8] == 1) && (M[2] == 0)) { M[2] = 2; return; }
            // Проверяем все варианты с М[6]
            if ((M[6] == 1) && (M[7] == 1) && (M[8] == 0)) { M[8] = 2; return; }
            if ((M[6] == 1) && (M[8] == 1) && (M[7] == 0)) { M[7] = 2; return; }
            // Проверяем все варианты с М[7]
            if ((M[7] == 1) && (M[8] == 1) && (M[6] == 0)) { M[6] = 2; return; }
 
            if (M[4] == 0) { M[4] = 2; return; }
 
            int[] Z = new int[9];
            for (int i = 0; i < 9; i++)  Z[i] = 0;
                
            if ((M[0] == 0) && (M[1] != 1) && (M[2] != 1) && (M[3]!=1) && (M[6] !=1 ))
                {
                    if (M[1] == 2) Z[0]++;
                    if (M[2] == 2) Z[0]++;
                    if (M[3] == 2) Z[0]++;
                    if (M[6] == 2) Z[0]++;
                }
            if ((M[1] == 0) && (M[0] != 1) && (M[2] != 1) && (M[4] != 1) && (M[7] != 1))
            {
                if (M[0] == 2) Z[1]++;
                if (M[2] == 2) Z[1]++;
                if (M[4] == 2) Z[1]++;
                if (M[7] == 2) Z[1]++;
            }
 
            if ((M[2] == 0) && (M[0] != 1) && (M[1] != 1) && (M[5] != 1) && (M[8] != 1))
            {
                if (M[0] == 2) Z[2]++;
                if (M[1] == 2) Z[2]++;
                if (M[5] == 2) Z[2]++;
                if (M[8] == 2) Z[2]++;
            }
            if ((M[3] == 0) && (M[0] != 1) && (M[6] != 1) && (M[4] != 1) && (M[5] != 1))
            {
                if (M[0] == 2) Z[3]++;
                if (M[6] == 2) Z[3]++;
                if (M[4] == 2) Z[3]++;
                if (M[5] == 2) Z[3]++;
            }
            if ((M[5] == 0) && (M[2] != 1) && (M[8] != 1) && (M[3] != 1) && (M[4] != 1))
            {
                if (M[2] == 2) Z[5]++;
                if (M[8] == 2) Z[5]++;
                if (M[3] == 2) Z[5]++;
                if (M[4] == 2) Z[5]++;
            }
            if ((M[6] == 0) && (M[0] != 1) && (M[3] != 1) && (M[7] != 1) && (M[8] != 1))
            {
                if (M[0] == 2) Z[6]++;
                if (M[3] == 2) Z[6]++;
                if (M[7] == 2) Z[6]++;
                if (M[8] == 2) Z[6]++;
            }
            if ((M[7] == 0) && (M[6] != 1) && (M[8] != 1) && (M[1] != 1) && (M[4] != 1))
            {
                if (M[6] == 2) Z[7]++;
                if (M[8] == 2) Z[7]++;
                if (M[1] == 2) Z[7]++;
                if (M[4] == 2) Z[7]++;
            }
            if ((M[8] == 0) && (M[2] != 1) && (M[5] != 1) && (M[6] != 1) && (M[7] != 1))
            {
                if (M[6] == 2) Z[8]++;
                if (M[8] == 2) Z[8]++;
                if (M[1] == 2) Z[8]++;
                if (M[4] == 2) Z[8]++;
            }
            int m_z = 0;
            for (int i = 0; i < 9; i++) if (Z[i] > Z[m_z]) m_z = i;
            if (Z[m_z] > 1)
            {
                M[m_z] = 2;
                return;
            }
            if ((M[0] == 2) && (M[2] == 0) && (M[1] == 0)) { M[1] = 2; return; }
            if ((M[0] == 2) && (M[6] == 0) && (M[3] == 0)) { M[3] = 2; return; }
            if ((M[0] == 2) && (M[8] == 0) && (M[4] == 0)) { M[4] = 2; return; }
 
            if ((M[1] == 2) && (M[0] == 0) && (M[2] == 0)) { M[0] = 2; return; }
            if ((M[1] == 2) && (M[4] == 0) && (M[7] == 0)) { M[4] = 2; return; }
            
            if ((M[2] == 2) && (M[0] == 0) && (M[1] == 0)) { M[1] = 2; return; }
            if ((M[2] == 2) && (M[4] == 0) && (M[6] == 0)) { M[4] = 2; return; }
            if ((M[2] == 2) && (M[5] == 0) && (M[8] == 0)) { M[5] = 2; return; }
 
            if ((M[3] == 2) && (M[0] == 0) && (M[6] == 0)) { M[0] = 2; return; }
            if ((M[3] == 2) && (M[4] == 0) && (M[5] == 0)) { M[4] = 2; return; }
 
            if ((M[4] == 2) && (M[0] == 0) && (M[8] == 0)) { M[8] = 2; return; }
 
            if ((M[5] == 2) && (M[8] == 0) && (M[2] == 0)) { M[8] = 2; return; }
 
            if ((M[6] == 2) && (M[3] == 0) && (M[0] == 0)) { M[0] = 2; return; }
            if ((M[6] == 2) && (M[7] == 0) && (M[8] == 0)) { M[7] = 2; return; }
 
            if ((M[7] == 2) && (M[6] == 0) && (M[8] == 0)) { M[6] = 2; return; }
 
            if ((M[8] == 2) && (M[6] == 0) && (M[7] == 0)) { M[7] = 2; return; }
 
            for (int i = 0; i < 9; i++) if (M[i] == 0) { M[i] = 2; return; }
          
 
        }
        private void Winer()
        {
            for (int i = 1; i < 3; i++)
            {
                if ((M[0] == i) && (M[1] == i) && (M[2] == i)) { TheEnd(i); return; };
                if ((M[3] == i) && (M[4] == i) && (M[5] == i)) { TheEnd(i); return; };
                if ((M[6] == i) && (M[7] == i) && (M[8] == i)) { TheEnd(i); return; };
                if ((M[0] == i) && (M[3] == i) && (M[6] == i)) { TheEnd(i); return; };
                if ((M[1] == i) && (M[4] == i) && (M[7] == i)) { TheEnd(i); return; };
                if ((M[2] == i) && (M[5] == i) && (M[8] == i)) { TheEnd(i); return; };
                if ((M[0] == i) && (M[4] == i) && (M[8] == i)) { TheEnd(i); return; };
                if ((M[2] == i) && (M[4] == i) && (M[6] == i)) { TheEnd(i); return; };
            }
            bool nobody = true;
            for (int i = 0; i < 9; i++) if (M[i] == 0) nobody = false;
            if (nobody)
            {
                win_nobody++;
                MessageBox.Show("Ничья!", "Конец игры.", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                label1.Text = "Ничья: " + win_nobody;
                TheEnd(0);
            }
 
 
        }
 
        private void TheEnd(int q)
        {
            if (q == 1)
            {
                win_men++;
                MessageBox.Show("Поздравляем, Вы победили!", "Конец игры.", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
           if (q == 2)
            {
                win_comp++;
                MessageBox.Show("Победил компьютер!", "Конец игры.", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
           pictureBox1.Enabled = false;
           //   -//-              -//-     //
           pictureBox9.Enabled = false;
 
           label2.Text = "Компьютер: " + win_comp;
           label3.Text = "Человек: " + win_men;
 
            
        }
 
 
        private void OutPut()
        {
            if (M[0] == 2) { pictureBox1.Image = global::XO.Properties.Resources.O; pictureBox1.Enabled = false; }
            if (M[1] == 2) { pictureBox2.Image = global::XO.Properties.Resources.O; pictureBox2.Enabled = false; }
            if (M[2] == 2) { pictureBox3.Image = global::XO.Properties.Resources.O; pictureBox3.Enabled = false; }
            if (M[3] == 2) { pictureBox4.Image = global::XO.Properties.Resources.O; pictureBox4.Enabled = false; }
            if (M[4] == 2) { pictureBox5.Image = global::XO.Properties.Resources.O; pictureBox5.Enabled = false; }
            if (M[5] == 2) { pictureBox6.Image = global::XO.Properties.Resources.O; pictureBox6.Enabled = false; }
            if (M[6] == 2) { pictureBox7.Image = global::XO.Properties.Resources.O; pictureBox7.Enabled = false; }
            if (M[7] == 2) { pictureBox8.Image = global::XO.Properties.Resources.O; pictureBox8.Enabled = false; }
            if (M[8] == 2) { pictureBox9.Image = global::XO.Properties.Resources.O; pictureBox9.Enabled = false; }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 9; i++) M[i] = 0;
            pictureBox1.Image = null; pictureBox1.Enabled = true;
            //   -//-              -//-     //
            pictureBox9.Image = null; pictureBox9.Enabled = true;
            if (radioButton2.Checked)
            {
                VirtualMind();
                OutPut();
                Winer();
            }
        }
    }
}

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


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

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

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