using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Text; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; using System.Windows.Forms; namespace WindowsFormsApp8 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } bool turn = true; int turn_count; static string player1, player2; bool pc = false; public static void setName(String n1, String n2) { player1= n1; player2= n2; } private void A1_MouseEnter(object sender, EventArgs e) { Button b = (Button)sender; if (turn) { b.Text = "X"; } else { b.Text = "O"; } } private void A1_MouseLeave(object sender, EventArgs e) { Button b = (Button)sender; if (b.Enabled == true) b.Text = ""; } private void A1_Click(object sender, EventArgs e) { Button b = (Button)sender; turn_count++; if (turn) { b.Text = "X"; b.Enabled = false; turn = false; Winner(); } else { b.Text = "O"; b.Enabled = false; turn = true; Winner(); } if (!turn && pc) { comp_move(); } } private void Enabled_b() { Button b = null; foreach (Control c in Controls) { b = c as Button; if (b != null) { b.Enabled = true; b.Text = ""; } } } private void Disable_b() { foreach (Control c in Controls) { if (c is Button b && b.Enabled) { b.Enabled = false; } } } private void Winner() { bool win = false; if (A1.Text == A2.Text && A2.Text == A3.Text && A1.Enabled == false) { win= true; } if (B1.Text == B2.Text && B2.Text == B3.Text && B1.Enabled == false) { win = true; } if (C1.Text == C2.Text && C2.Text == C3.Text && C1.Enabled == false) { win = true; } if (A1.Text == B1.Text && B1.Text == C1.Text && A1.Enabled == false) { win = true; } if (A2.Text == B2.Text && B2.Text == C2.Text && A2.Enabled == false) { win = true; } if (A3.Text == B3.Text && B3.Text == C3.Text && A3.Enabled == false) { win = true; } if (A1.Text == B2.Text && B2.Text == C3.Text && A1.Enabled == false) { win = true; } if (A3.Text == B2.Text && B2.Text == C1.Text && A3.Enabled == false) { win = true; } if (win == true) { if (turn == false) { label4.Text = (int.Parse(label4.Text)+1).ToString(); MessageBox.Show("Победил Х"); Enabled_b(); turn_count = 0; turn = true; } else { label6.Text = (int.Parse(label6.Text) + 1).ToString(); MessageBox.Show("Победил O"); Enabled_b(); turn_count = 0; turn = true; } } if (!win && turn_count == 9) { label5.Text = (int.Parse(label5.Text) + 1).ToString(); MessageBox.Show("Ничья"); Enabled_b(); turn_count = 0; turn = true; } } private void новаяИграToolStripMenuItem_Click(object sender, EventArgs e) { Enabled_b(); turn_count = 0; turn = true; label4.Text = "0"; label5.Text = "0"; label6.Text = "0"; } private void Form1_Load(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.ShowDialog(); label1.Text = player1 + ":"; label2.Text = player2 + ":"; if (player2 == "PC") { pc = true; } } private void изменитьИгроковToolStripMenuItem_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.ShowDialog(); label1.Text = player1; label2.Text = player2; сброситьОчкиToolStripMenuItem.PerformClick(); новаяИграToolStripMenuItem.PerformClick(); this.Show(); } private void сброситьОчкиToolStripMenuItem_Click(object sender, EventArgs e) { Enabled_b(); turn_count = 0; turn = true; label4.Text = "0"; label5.Text = "0"; label6.Text = "0"; } private Button win_or_block(string mark) { // Горизонтальные линии if (A1.Text == mark && A2.Text == mark && A3.Text == "") return A3; if (A1.Text == mark && A3.Text == mark && A2.Text == "") return A2; if (A2.Text == mark && A3.Text == mark && A1.Text == "") return A1; if (B1.Text == mark && B2.Text == mark && B3.Text == "") return B3; if (B1.Text == mark && B3.Text == mark && B2.Text == "") return B2; if (B2.Text == mark && B3.Text == mark && B1.Text == "") return B1; if (C1.Text == mark && C2.Text == mark && C3.Text == "") return C3; if (C1.Text == mark && C3.Text == mark && C2.Text == "") return C2; if (C2.Text == mark && C3.Text == mark && C1.Text == "") return C1; // Вертикальные линии if (A1.Text == mark && B1.Text == mark && C1.Text == "") return C1; if (A1.Text == mark && C1.Text == mark && B1.Text == "") return B1; if (B1.Text == mark && C1.Text == mark && A1.Text == "") return A1; if (A2.Text == mark && B2.Text == mark && C2.Text == "") return C2; if (A2.Text == mark && C2.Text == mark && B2.Text == "") return B2; if (B2.Text == mark && C2.Text == mark && A2.Text == "") return A2; if (A3.Text == mark && B3.Text == mark && C3.Text == "") return C3; if (A3.Text == mark && C3.Text == mark && B3.Text == "") return B3; if (B3.Text == mark && C3.Text == mark && A3.Text == "") return A3; // Диагонали if (A1.Text == mark && B2.Text == mark && C3.Text == "") return C3; if (A1.Text == mark && C3.Text == mark && B2.Text == "") return B2; if (B2.Text == mark && C3.Text == mark && A1.Text == "") return A1; if (A3.Text == mark && B2.Text == mark && C1.Text == "") return C1; if (A3.Text == mark && C1.Text == mark && B2.Text == "") return B2; if (B2.Text == mark && C1.Text == mark && A3.Text == "") return A3; return null; } private Button corner() { if (A1.Text == "O") { if (A3.Text == "") { return A3; } if (C3.Text == "") { return C3; } if (C1.Text == "") { return C1; } } if (A3.Text == "") { if (A1.Text == "") { return A1; } if (C3.Text == "") { return C3; } if (C1.Text == "") { return C1; } } if (C1.Text == "") { if (A1.Text == "") { return A1; } if (C3.Text == "") { return C3; } if (A3.Text == "") { return A3; } } if (C3.Text == "") { if (A1.Text == "") { return A1; } if (C1.Text == "") { return A3; } if (A3.Text == "") { return A3; } } return null; } //private Button corner() //{ // if (A1.Text == "") return A1; // if (A3.Text == "") return A3; // if (C1.Text == "") return C1; // if (C3.Text == "") return C3; // return null; //} private Button open_space() { Button b = null; foreach (Control c in Controls) { b = c as Button; if (b != null) { if (b.Text == "") return b; } } return null; } private void comp_move() { Button move = null; move = win_or_block("O"); if (move == null) { move = win_or_block("X"); if (move == null) { move = corner(); if (move == null) { move = open_space(); } } } move.PerformClick(); } } }