Игра «Печатная машинка» на С#

Всем привет, сегодня мы напишем игрушку, суть следующая:

  1. В форме будут появляться случайные буквы.
  2. Если игрок вводит буквы правильно, они исчезают — уровень растет и буквы появляются все чаще.
  3. Если вся форма заполнена буквами игра окончена.

Кому лень читать(ниже), могут сразу скачать проект [download-attachment id=»431″ title=»WinFormsApp_HitTheKey»]

Итак, начнем…

Создаем WinForm проект назовем его WinFormApp_HitTheKeys.
1) для свойств формы выставляем следующие значения:
FormBorderStyle=Fixed3D
Size=876;174
Text=Hit the keys!
KeyPreview=true;
2) Перетаскиваем на форму элемент ListBox, для этого элемента нужно выставить следующие св-ва:
Dock=Fill;
MultiColumn=True;
Font Size=72

3) Теперь перетаскиваем на форму элемент Timer
4) Далее, двойным нажатием по элементу StatusStrip в панели элементов, добавим его к форме. Св-ва:
SizingGrip=False;
5) Добавляем в элемент StatusStrip 4 метки StatusLabel

6) Для 1 метки выставляем следующие св-ва:
Name=correctLabel;
Text=Correct: 0;
7) Для 2 метки выставляем след. св-ва:
Name=missedLabel;
Text=Missed: 0;
8) Для 3 метки выставляем след. св-ва:
Name=totalLabel;
Text=Total: 0;
9) Для 4 метки выставляем след. св-ва:
Name=accuracyLabel;
Text=Accuracy: 0%;
10) Теперь, добавляем в StatusStrip, еще один StatusLabel, для него след. св-ва:
Spring:True;
TextAlign: MiddleRight;
Text: Difficulty;
11) Далее, добавляем в StatusStrip элемент ProgressBar, он находится там же где StatusLabel, его св-ву Name присваиваем значение difficultyProgressBar, а свойству Maximum=701

Теперь форма должна выглядеть вот так:

12) Теперь переходим к элементу Timer, выберите элемент timer1 и выставьте для него следующие св-ва:
Interval:800;

13) Нажимаем на элемент timer1 два раз левой кнопкой мыши, создается обработчик события Tick. Добавляем следующий код

public partial class Form1 : Form
    {
        //Добавляем экземпляр класса Random, он нам понадобиться для получения слуйчаной буквы.
        Random random = new Random(); 
        public Form1()
        {
            InitializeComponent();
            timer1.Enabled = true; //Делаем таймер активным
            timer1.Start(); //Запускаем таймер 
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            listBox1.Items.Add((Keys)random.Next(65, 90)); //Добавляем в listBox случайную букву.
            if (listBox1.Items.Count > 7) //Если букв больше 7 игра считается оконченной.
            {
                listBox1.Items.Clear(); //Очищаем listBox
                listBox1.Items.Add("Игра окончена!");
                timer1.Stop(); // Останавливаем таймер.
            }
        }
    }

14) Добавляем к проекту новый класс Stats, он нам понадобиться для статистики.


15) Добавляем в него следующий код:

namespace WinFormsApp_HitTheKey
{
    class Stats
    {
        public int Total = 0;
        public int Missed = 0;
        public int Correct = 0;
        public int Accuracy = 0;

        public void Update(bool correctKey)
        {
            Total++;
            if (!correctKey) Missed++;
            else Correct++;

            Accuracy = 100 * Correct / (Missed + Correct);
        }
    }
}

16) Теперь, переходим обратно в класс Form1.cs и создаем в нем экземпляр класса Stats

17) Теперь нужно создать обработчик нажатия кнопки пользователем, для этого переходим в конструктор формы, выбираем форму и переходим в события, там ищем событие Key_Down, нажимаем на него 2 раза.

18) Внутри пишем следующий код:

private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            //Если пользователь правильно нажимает клавиши, то буквы удаляются, а скорость их появления увеличивается.
            if (listBox1.Items.Contains(e.KeyCode)) //Проверка на правильность нажатия.
            {
                listBox1.Items.Remove(e.KeyCode); //удаление буквы из listBox`а
                listBox1.Refresh();
                if (timer1.Interval > 400) timer1.Interval -= 10;
                if (timer1.Interval > 250) timer1.Interval -= 7;
                if (timer1.Interval > 100) timer1.Interval -= 2;

                difficultyProgressBar.Value = 800 - timer1.Interval;//Заполнение ProgressBar`а
                stats.Update(true); //Обновляем статистику.
            }
            else
            {
                stats.Update(false);
            }

            correctLabel.Text = "Correct: " + stats.Correct;
            missedLabel.Text = "Missed " + stats.Missed;
            totalLabel.Text = "Total " + stats.Total;
            accuracyLabel.Text = "Accuracy: " + stats.Accuracy + "%";
        }

19) Запускаем, проверяем!

Если получилось, ставь лайк.

Игра «Печатная машинка» на С#: 6 комментариев

  1. Желательно показывать метод timer1_Tick в самом уроке. Чтобы программа работала, пришлось копировать его из Вашего кода.
    В целом, идея таких — прекрасная.
    Спасибо большое.

  2. посмотрел как делать программу, но не понял как вместо английских букв поставить русские?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.