I wrote a program that randomly chooses a verb in Russian from a text document and shows it to us. The task of the user is that he should enter the same verb in 1,2,3 forms of the English language into text boxes. Actually the code itself:
namespace Verbs2 { public partial class MainWindow : Window { int randomNum = 0; int counterWin = 0; int counterLose = 0; bool ifChecked = false; public MainWindow() { InitializeComponent(); } public class Verbs { /*класс создан для работы над глаголами и текстового файла*/ string[] readText = File.ReadAllLines(@"C:\Users\Рустем\Desktop\проекты\Verbs2\Verbs2\verbs.txt", System.Text.Encoding.GetEncoding(1251));//считываем все строки в массив List<string[]> res = new List<string[]>(); public Verbs() { foreach (var line in readText)//перебираем строки массива { res.Add(line.Split('.'));//Каждую строку сплитим и помещаем в список массивов. } } public string GetVerb(int a)//метод позволяет достать из листа глагол на русском языке(в 3 столбце находятся русские глаголы) { return res[a][3]; } public string GetVerb(int a, int b) { return res[a][b]; } public bool CheckVerbs(string a, string b, string c, int d)//проверяем соответствуют ли введенные данные,той строке что мы выбрали { if ((a.Equals(res[d][0])) && (b.Equals(res[d][1])) && (c.Equals(res[d][2]))) return true; else return false; } } public void SetRandom() { /*в нашем текстовом документе 68 глаголов,поэтому мы выбираем один рандомный глагол из 68*/ Random rnd = new Random(); randomNum = rnd.Next(0, 68); } public int GetRandom() { return randomNum; } private void btnstart_Click(object sender, RoutedEventArgs e) { /*при нажатии на кнопку "начать" создаем объект класса verb, выбираем рандомной глагол, вставляем его в lblverb2 и делаем доступной кнопку btncheck*/ Verbs verb = new Verbs(); SetRandom(); lblverb2.Content = verb.GetVerb(GetRandom()); btncheck.IsEnabled = true; counterWin = 0; counterLose = 0; } private void btncheck_Click(object sender, RoutedEventArgs e) { /* в лэйблы 4-6 вставляем глаголы на английском языке проверяем соответсвуют ли введенные в текстбоксы глаголы,выбранному глаголу делаем доступной кнопку btnnext*/ Verbs verb = new Verbs(); lblverb4.Content = verb.GetVerb(GetRandom(), 0); lblverb5.Content = verb.GetVerb(GetRandom(), 1); lblverb6.Content = verb.GetVerb(GetRandom(), 2); if (verb.CheckVerbs(textverb1.Text, textverb2.Text, textverb3.Text, GetRandom())) { lborder.BorderBrush = Brushes.Green; counterWin++; lblcw.Content = counterWin.ToString(); } else { lborder.BorderBrush = Brushes.Red; counterLose++; lblcl.Content = counterLose.ToString(); } btnnext.IsEnabled = true; btncheck.IsEnabled = false; ifChecked = true; } private void btnnext_Click(object sender, RoutedEventArgs e) { /*по сути повторяет действия кнопки btnstart,но при этом очищает лэйблы и текстбоксы*/ Verbs verb = new Verbs(); SetRandom(); lblverb2.Content = verb.GetVerb(GetRandom()); btncheck.IsEnabled = true; if (ifChecked == false) counterLose++; lblcl.Content = counterLose.ToString(); ifChecked = false; lblverb4.Content = ""; lblverb5.Content = ""; lblverb6.Content = ""; textverb1.Text = ""; textverb2.Text = ""; textverb3.Text = ""; lborder.BorderBrush = Brushes.White; } } } XAML code:
<Window x:Class="Verbs2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Неправильные глаголы" Height="350" Width="360"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="25"/> <RowDefinition /> <RowDefinition /> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="120*" /> <ColumnDefinition Width="120*" /> <ColumnDefinition Width="52*" /> <ColumnDefinition Width="24*" /> <ColumnDefinition Width="15*" /> <ColumnDefinition Width="24*" /> </Grid.ColumnDefinitions> <!--меню--> <Menu Grid.Column="0" Grid.ColumnSpan="3" Background="White"> <MenuItem Header="File"> <MenuItem Header="New Project" ></MenuItem> <Separator/> <MenuItem Header="Exit" ></MenuItem> </MenuItem> </Menu> <!----> <Label x:Name="lblverb1" Grid.Column="0" Grid.Row="1">Глагол:</Label> <Label x:Name="lblverb2" Grid.Column="1" Grid.Row="1"></Label> <Label x:Name="lblverb3" Grid.Column="2" Grid.Row="1" Grid.ColumnSpan="1">Счетчик</Label> <!--лейблы для глаголов на английском языке--> <Label x:Name="lblverb4" Grid.Column="0" Grid.Row="2"></Label> <Label x:Name="lblverb5" Grid.Column="1" Grid.Row="2"></Label> <Label x:Name="lblverb6" Grid.Column="2" Grid.Row="2" Grid.ColumnSpan="4"></Label> <!--лейблы для набора текста пользователем --> <TextBox x:Name="textverb1" Grid.Column="0" Grid.Row="3"></TextBox> <TextBox x:Name="textverb2" Grid.Column="1" Grid.Row="3"></TextBox> <TextBox x:Name="textverb3" Grid.Column="2" Grid.Row="3" Grid.ColumnSpan="4"></TextBox> <Button x:Name="btnstart" Grid.Column="0" Grid.Row="4" Click="btnstart_Click">Начать</Button> <Button x:Name="btncheck" IsEnabled="False" Grid.Column="1" Grid.Row="4" Click="btncheck_Click">Проверить</Button> <Button x:Name="btnnext" IsEnabled="False" Grid.Column="2" Grid.Row="4" Grid.ColumnSpan="4" Click="btnnext_Click">Следующий</Button> <Label x:Name="lblcw" Grid.Column="3" Grid.Row="1">0</Label> <Label x:Name="lbllblslash" Grid.Column="4" Grid.Row="1">/</Label> <Label x:Name="lblcl" Grid.Column="5" Grid.Row="1">0</Label> <Border x:Name="lborder" BorderBrush="White" BorderThickness="4" HorizontalAlignment="Left" Height="64" VerticalAlignment="Top" Width="360" Grid.Row="3" Grid.ColumnSpan="6"/> <Border x:Name="lborder1" BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Height="74" VerticalAlignment="Top" Width="352" Grid.Row="1" Grid.ColumnSpan="6"/> <Border x:Name="lborder2" BorderBrush="Black" BorderThickness="1" Height="71" VerticalAlignment="Top" Grid.Row="2" Grid.ColumnSpan="6" Width="352" Margin="0,0,0.444,0"/> </Grid> </Window> I would like to refactor the code. What can be improved in it?
