Найти в Дзене
KNL Games

Крестики - нолики на C# WPF

Для создания игры «Крестики-нолики» на C# с использованием WPF, вам потребуется создать новый проект WPF в Visual Studio. Ниже представлен пример простого приложения, которое реализует эту игру. XAML (MainWindow.xaml): <Window x:Class="TicTacToe.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Крестики-нолики" Height="450" Width="400">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button x:Name="btn1" Grid.Row="0" Grid.Column="0" Click="Button_Click"/>
<Button x:Name="btn2" Grid.Row="0" Grid.Column="1" Click="Button_Click"/>
<Button x:Name="btn3" Grid.Row="0" Grid.Column="2"
Простое приложение
Простое приложение

Для создания игры «Крестики-нолики» на C# с использованием WPF, вам потребуется создать новый проект WPF в Visual Studio. Ниже представлен пример простого приложения, которое реализует эту игру.

XAML (MainWindow.xaml):

<Window x:Class="TicTacToe.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Крестики-нолики" Height="450" Width="400">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>

<Button x:Name="btn1" Grid.Row="0" Grid.Column="0" Click="Button_Click"/>
<Button x:Name="btn2" Grid.Row="0" Grid.Column="1" Click="Button_Click"/>
<Button x:Name="btn3" Grid.Row="0" Grid.Column="2" Click="Button_Click"/>

<Button x:Name="btn4" Grid.Row="1" Grid.Column="0" Click="Button_Click"/>
<Button x:Name="btn5" Grid.Row="1" Grid.Column="1" Click="Button_Click"/>
<Button x:Name="btn6" Grid.Row="1" Grid.Column="2" Click="Button_Click"/>

<Button x:Name="btn7" Grid.Row="2" Grid.Column="0" Click="Button_Click"/>
<Button x:Name="btn8" Grid.Row="2" Grid.Column="1" Click="Button_Click"/>
<Button x:Name="btn9" Grid.Row="2" Grid.Column="2" Click="Button_Click"/>
</Grid>
</Window>

C# (MainWindow.xaml.cs):

using System;
using System.Windows;

namespace TicTacToe
{
public partial class MainWindow : Window
{
private readonly string[] board = new string[9];
private int turn = 0; // 0 - крестики, 1 - нолики

public MainWindow()
{
InitializeComponent();
ResetGame();
}

private void ResetGame()
{
turn = 0;
for (int i = 0; i < 9; i++)
board[i] = "";

UpdateButtons();
}

private void UpdateButtons()
{
btn1.Content = board[0];
btn2.Content = board[1];
btn3.Content = board[2];
btn4.Content = board[3];
btn5.Content = board[4];
btn6.Content = board[5];
btn7.Content = board[6];
btn8.Content = board[7];
btn9.Content = board[8];
}

private void Button_Click(object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
int index = Array.IndexOf(
new[] { btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9 }, btn);

if (board[index] == "")
{
board[index] = turn == 0 ? "X" : "O";
turn = 1 - turn;
UpdateButtons();
CheckForWin();
}
}

private void CheckForWin()
{
// Проверка по строкам
for (int i = 0; i < 3; i++)
{
if (board[i * 3] == board[i * 3 + 1] && board[i * 3 + 1] == board[i * 3 + 2] && board[i * 3] != "")
{
MessageBox.Show($"{board[i * 3]} выиграл!");

Скопировать ответ

далее

ResetGame();
return;
}
}

// Проверка по столбцам
for (int i = 0; i < 3; i++)
{
if (board[i] == board[i + 3] && board[i + 3] == board[i + 6] && board[i] != "")
{
MessageBox.Show($"{board[i]} выиграл!");
ResetGame();
return;
}
}

// Проверка по диагоналям
if ((board[0] == board[4] && board[4] == board[8] && board[0] != "") ||
(board[2] == board[4] && board[4] == board[6] && board[2] != ""))
{
MessageBox.Show($"{board[4]} выиграл!");
ResetGame();
return;
}

// Проверка на ничью
if (Array.TrueForAll(board, s => s != ""))
{
MessageBox.Show("Ничья!");
ResetGame();
}
}
}
}

Этот код создает простое приложение WPF для игры «Крестики-нолики». Игра отслеживает ходы игроков и проверяет условия победы или ничьи. При нажатии на кнопку, соответствующая ячейка поля заполняется символом «X» или «O», в зависимости от текущего хода. Если кто-то из игроков выигрывает или достигается ничья, игра сбрасывается и начинается заново.