«Клавиатурный тренажер» - C#

Узнай цену своей работы

Формулировка задачи:

К сожалению моя тема наверное уже улетела, приходится создавать новую. Извините, если нарушаю какие то правила форума. Но мне здесь уже 2 раза помогли и без вас просто никак ) Задания были следующие: 1.Отображается виртуальная клавиатура с указанием рекомендуемого расположения пальцев и клавиш, которые должны быть нажаты. 1.2 На экране присутствуют анимированный «персонаж» движение которого зависит от правильности нажатия клавиш. 1.3 Задаются параметры работы тренажера, сложность выводимость текстов. 1.4 Используются заранее заготовленные обучающие тексты или они генерируются случайным образом в зависимости от сложности. 1.5 Введется статистика результатов с рекомендациями. 1.6 Используются учетные данные пользователей. C моими знаниями первого курса, это кажется понятным, но сложно реализуемым. На форуме мне дали советы ознакомится с методом Char , разобрать как его использовать в массиве. В общем у меня такая идея, не знаю , правильно ли это, если нет , то поправьте. К примеру пусть будет массив Char и в нем случайные символы:
using System;

namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            char[] chars = { '/', 'a' };
            Console.WriteLine(chars[0]);
            Console.WriteLine(chars[1]);
            Console.ReadLine();
        }
    }
}
К сожалению я ввел только 2 символа, да и если вводить больше , то код будет просто огромным. Хотелось бы узнать, как это упростить , как выводить вообще с с экрана, нажимая на клавиатуре, при этом понимая, что нажатие может быть не правильным (но тут, как я понял цикл нужно использовать). Но тем не менее. Так же, как сделать так, чтобы из кучи этих символов выбрасывался случайный символ для ввода. Какие методы изучить, какие темы почитать. Помогите разобраться с этим. Очень хочется самому в этом разбираться и делать все.

Решение задачи: ««Клавиатурный тренажер»»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace test
{
 
    public partial class Test : Form
    {
        public Test()
        {
            InitializeComponent();
 
            FillLabelKeys();
            NextKey();
        }
 
        private Dictionary<Keys, Label> list_labels = new Dictionary<Keys, Label>();
        private void FillLabelKeys()
        {
            list_labels.Add(Keys.Q, lbl_Q);
            list_labels.Add(Keys.W, lbl_W);
            list_labels.Add(Keys.E, lbl_E);
            list_labels.Add(Keys.R, lbl_R);
        }
 
        Keys NeedToPress = Keys.Space;
        Random random = new Random();
        private void NextKey()
        {
            int index = random.Next(0, list_labels.Count);
            Keys key = list_labels.ElementAt(index).Key;
            NeedToPress = key;
            Set_NeedPress(list_labels[key]);
        }
 
        private void Set_NeedPress(Label sender)
        {
            sender.ForeColor = Color.Red;
 
        }
        private void UnSet_NeedPress(Label sender)
        {
            sender.ForeColor = Color.Black;
        }
 
        private void Pressed(Keys key)
        {
            if (NeedToPress == key)
            {
                /*
                 * TODO: оповестить о корректности ввода
                 */
            }
            else
            {
                /*
                 * TODO: оповестить о корректности ввода
                 */
            }
            UnSet_NeedPress(list_labels[NeedToPress]);
            NextKey();
        }
 
 
        private void Demo_KeyDown(object sender, KeyEventArgs e)
        {
            Keys key = e.KeyData;
            if (list_labels.ContainsKey(key))
            {
                Label lbl = list_labels[key];
                lbl.BorderStyle = BorderStyle.Fixed3D;
                Pressed(key);
            }
        }
 
        private void Demo_KeyUp(object sender, KeyEventArgs e)
        {
            if (list_labels.ContainsKey(e.KeyData))
            {
                Label lbl = list_labels[e.KeyData];
                lbl.BorderStyle = BorderStyle.FixedSingle;
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5