Написать игру "Быки и коровы" - 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.Windows.Forms;
// на конструкторе формы лежит 3 кнопки(проверка введенного числа, показать загаданное число, новая игра)
// лежит 3 метки(пояснение к текстбоксу, вывод результатов сравнения, вывод загаданного числа)
// лежит 1 текстбокс
// названия контролов и событий VisualStudio назначала автоматически. я ничего не менял
namespace WindowsFormsApplication14
{
public partial class Form1 : Form
{
// объявление переменной для генерации случайных чисел
private Random rand = new Random();
private int[] x = new int[4];
// в строковой переменной впоследствии будем хранить строковое представление загаданного числа
private string s;
// счетчики полного и частичного совпадения цифр в загаданном и введенном числах
private int polnoeSovpadenie;
private int chastichnoeSovpadenie;
public Form1()
{
InitializeComponent();
// вызов метода для начала новой игры
NewGame();
}
// метод новой игры
private void NewGame()
{
// вызов метода для генерации нового числа
NovoeChislo();
// обнуление метки вывода результатов сравнения загаданного и введенного чисел
label2.Text = "";
// обнуление метки вывода загаданного числа
label3.Text = "";
// открываем textbox для ввода значений
textBox1.ReadOnly = false;
}
// метод генерации нового числа
private void NovoeChislo()
{
// флаг сравнения с предыдущими цифрами. совпадает - true
bool contains;
// цикл заполнения массива нового числа новыми цифрами
for (int i = 0; i < 4; i++)
{
do
{
contains = false;
// генерация новой цифры
x[i] = rand.Next(10);
// цикл сравнения сгенерированной цифры с предыдущими
for (int k = 0; k < i; k++)
if (x[k] == x[i])
//если сгенериррованная цифра совпала с одной из предыдущих
// флаг сравнения делаем true для продолжения генерации
//несовпадающей цифры в элемент массива
contains = true;
} while (contains);
}
s = x[0].ToString() + x[1] + x[2] + x[3];// из элементов массива формируем строку
}
// это событие. его надо привязать к событию textboxa KeyPress
// описывает что делать программе при нажатии на клавиатуру
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
//Char.IsDigit(e.KeyChar) проверка, является ли нажатая клавиша цифрой. возвращает true или false
//e.KeyChar == (char)Keys.Back проверяет, является ли нажатая клавиша бекспейсом.
if (Char.IsDigit(e.KeyChar) || e.KeyChar == (char)Keys.Back)
// если были нажаты цифра или бекспейс, то событие обработать в обычном режиме
e.Handled = false;
else
//иначе, поставить метку что событие обработанно, но не пускать сигнал в текстбокс
e.Handled = true;
}
// событие клик кнопки №1 - проверка введенного числа
private void button1_Click(object sender, EventArgs e)
{
// если в текстбоксе не 4 цифры
if (textBox1.Text.Length != 4)
{
// вывести сообщение об ошибке
MessageBox.Show("введенное число должно быть четырехзначным");
}
else
{
// иначе вызвать метод сравнения чисел
SravenieChisel();
// вызвать метод вывода результатов сравнения на экран
RezultShow();
}
// очистка текстбокса
textBox1.Text = "";
}
// метод вывода результата сравнения загаданного и введенного чисел на экран в label2
private void RezultShow()
{
label2.Text += textBox1.Text + " полностью совпало " + polnoeSovpadenie + " совпало " + chastichnoeSovpadenie + "\n";
}
// метод сравнения загаданного и введенного чисел
private void SravenieChisel()
{
// обнуление счетчиков
polnoeSovpadenie = 0;
chastichnoeSovpadenie = 0;
// перевод содержимого текстбокса в символьный массив
char[] ch = textBox1.Text.ToCharArray();
// цикл проверки символов в массиве
for (int i = 0; i < 4; i++)
{
// если строка s содержит в себе элемент массива
if (s.Contains(ch[i]))
{
// если номер символа в массиве совпадает с номером символа в строке
if (s[i] == ch[i])
// увеличиваем счетчик полного совпадения
polnoeSovpadenie++;
else
// если номер символа в массиве не совпадает с номером символа в строке
// увеличиваем счетчик неполного совпадения
chastichnoeSovpadenie++;
}
}
}
// событие клик кнопки №2 - вывод загаданного числа на экран
private void button2_Click(object sender, EventArgs e)
{
// в label3 передаем загаданное число
label3.Text = s;
// обнуляем метку вывода результатов сравнения введенного и загаданного чисел
label2.Text = "";
// запрещаем ввод символов в текстбокс
textBox1.ReadOnly = true;
}
// событие клик кнопки №3 - новая игра
private void button3_Click(object sender, EventArgs e)
{
// вызов метода начала новой игры
NewGame();
}
}
}