Розробка клавіатурного тренажеру засобами Microsoft Visual Studio, мовою програмування С++ з використанням об’єктно-орієнтованого підходу

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    571,88 Кб
  • Опубликовано:
    2017-05-20
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Розробка клавіатурного тренажеру засобами Microsoft Visual Studio, мовою програмування С++ з використанням об’єктно-орієнтованого підходу

Вступ

Клавіатурний тренажер - вид комп'ютерних програм або онлайн-сервісів, призначених для навчання набору на комп'ютерній клавіатурі. Різноманітність пропонованого програмного забезпечення, велика частина якого поширюється безкоштовно, дозволяє підібрати індивідуально найбільш підходящий тренажер з можливістю вибору не тільки рівня від новачка до просунутого користувача, але і в найдрібніших деталях налаштувати програму «під себе».

Зазвичай цілями тренажерів є: навчити сліпому методу друку, зокрема, задіяти для набору все десять пальців рук; збільшити швидкість набору; зменшити кількість помилок; поліпшити ритмічність набору (що дозволяє зменшити втому при наборі).

Деякі клавіатурні тренажери пропонують ряд уроків для вивчення розкладки та ведуть статистику навчання.

Метою роботи є розробити власний клавіатурний тренажер для покращення швидкості набору тексту.

Курсова робота виконана засобами Microsoft Visual Studio, мовою програмування С++ з використанням об’єктно-орієнтованого підходу.

Курсовий проект складається з двох розділів та додатку, який містить код програми.

1. Загальна частина

.1 Постановка задачі

Основне завдання курсового проекту полягає в розробці програми для тренування швидкого десяти пальцевого набору тексту на клавіатурі за допомогою класів, які будуть містити в собі параметри об’єктів та їх методи.

Завершена програма повинна мати вигляд вікна, на якому знаходиться меню з пунктами вибору рівня складності:

•«1 рівень» -- користувачу надається 4 секунди для вводу одного слова.

•«2 рівень» -- користувачу надається 3 секунди для вводу одного слова.

•«3 рівень» -- користувачу надається 2 секунди для вводу одного слова.

В програмі повинен бути реалізований клас з наступними функціями:

Конструктор гри.

Функція вибору та встановлення рівня складності.

Функція тренування користувача.

Функція виводу слів із масиву.

Функція для зчитування інформації з клавіатури.

Функція для перевірки правильності вводу.

Функція виводу результату користувача.

На виході користувач отримує рахунок, нарахований під час роботи програми (кількість введених слів за хвилину та скільки хвилин пройшло з початку тренування).

Користувачами даної програми можуть бути як учні, студенти чи викладачі, так і інші особи, які хочуть покращити свої навички швидкого набору текстів. Тестову програму можна використовувати в освітніх та дослідницьких цілях.

1.2 Аналіз об'єкту програмування

На даний момент на ринку програмних продуктів пропонується чимало хороших програм для навчання швидкого набору на клавіатурі. Найбільш солідним, функціональним та поширеним серед більшості користувачів рішенням є додаток «Соло на клавиатуре». Але не кожен може дозволити собі подібну програму через її ціну, тому велика кількість віддає перевагу більш прийнятним за ціною або навіть взагалі безкоштовним утилітам, таким як: Stamina, VerseQ, Typing Master, Bombina, Baby Type 2000 та інші.

. «Соло на клавиатуре».

Це, мабуть, один з найвідоміших і популярних клавіатурних тренажерів. Програма платна. Навчання, крім російської та англійської мов, є також німецькою. З безперечних переваг відзначимо методологічний супровід протягом усього курсу (саме курсу, це не просто тренажер). Це і рекомендації по поставі, по правильності постановки кистей і пальців, мотивуюче введення до кожного уроку з порадами, листами від клієнтів і анекдотами.

При бажанні це все можна відключити. В цілому програма має багатий функціонал. З недоліків (можливо, вони багато в чому суб'єктивні) хотілося б відзначити дуже довгий процес навчання. Для людей з недоліком терпіння і посидючості пройти курс повністю буде нелегко.

В Інтернеті часто жартують, що ця програма є не тільки тренінгом сліпому десяти пальцевому друку, але і сили волі. Незручним також здається заборона на звичне друкування під час роботи з тренажером, особливо для людей, які кожен день працюють з набором величезних текстів, а також неможливість перейти до наступного уроку, поки не пройдений попередній. Програму можна купити та скачати на основних сайтах - ergosolo.ru та nabiraem.ru (див. рис. 1.1).

Рисунок 1.1 - Головний сайт програми «Соло на клавіатурі»

Перед виконанням вправ потрібно виконати розминку, яка допомагає адаптуватися в «Соло». У режимі реального часу, а також після тренування можна ознайомитися зі статистикою: середній бал, швидкість набору, кількість помилок. Доступна статистика не тільки по вправах, а й по днях, по ній можна простежити динаміку виконання вправ. Клавіатурні тренінги не містять осмислених фраз, це заздалегідь підготовлені «синтетичні» вираження - на відміну, скажімо, від далі розглянутого VerseQ, де рядок для набору формується на основі помилок користувача. В «Соло» помилки вкрай не вітаються, часто доводиться по декілька разів переробляти завдання. Вимоги до проходження строгі, вправи ускладнюються з кожним новим рівнем, яких близько сотні. В програмі передбачені психологічні тести.

Інтерфейс програми справляє подвійне враження. Новий інтерфейс програми витриманий в сірій і зеленій гамі, не сильно поліпшив ергономіку програми (див. рис. 1.2). З одного боку, він досить зручний для роботи, всі налаштування і елементи добре задокументовані в довідці. Але на віртуальній клавіатурі не вказано, яким пальцем натискати ту чи іншу клавішу, під час виконання вправи не відображаються підказки. У підсумку, не маючи достатнього досвіду, потрібно повертатися до опису вправи.

Рисунок 1.2 - Головне вікно програми «Соло на клавіатурі»

Для внесення елементу розважальності в рутину навчання з «Соло» автори створили дочірній сайт, на якому можна перевіряти швидкість набору і змагатися в цьому показнику з іншими людьми (див. рис. 1.3).

Рисунок 1.3 - Тест на швидкість набору в «Соло на клавіатурі онлайн»

2. «VerseQ».

Нове покоління колись відомого клавіатурного тренажера «KeyTO». Програма платна, з можливістю безкоштовного тесту демо-версії. Режими - російська, англійська, німецька розкладки. Особливість її полягає в тому, що використовується нехарактерний для інших алгоритм навчання. Розробники очікують, що вже через годину після початку занять користувач зможе набирати текст наосліп, адже «VerseQ» вчить не поетапному освоєнню пар клавіш, а орієнтації одночасно по всій клавіатурі (див. рис. 1.4).

Перевагою тренажера є те, що під час набору не повторюються буквосполучення і фрази. Також вони побудовані за принципом реальних складів, що існують в російській мові, а не простого набору по типу «шгшгш». Плюсом є також те, що програма «запам'ятовує» зроблені вами помилки і частіше видає комбінації з тими ж поєднаннями для більшого тренування. Інтерфейс нейтральний, не відволікає. З мінусів можна відзначити тільки відсутність повної довідкової інформації по роботі з програмою, що робить її освоєння, в деякій мірі, інтуїтивним.

Рисунок 1.4 - Головне вікно програми «VerseQ»

. Typing Master.

За великим рахунком, цей тренажер можна було не включати в огляд, оскільки в ньому немає підтримки російськомовної розкладки, але все ж:

а) програма корисна для підвищення навичок сліпий друку на латиниці англійською, іспанською, німецькою, французькою або італійською мовами;

б) Typing Master є чудовим прикладом структурованого, вивіреного курсу.

Строгий підхід і консервативність Typing Master не кожному користувачеві припадуть до смаку, в той же час, в порівнянні з «Соло», програма представлена навіть стисліше. Typing Master пропонує наступні курси:

         Touch Typing Course - безпосередньо, курс по сліпого машинопису

         Speed Building Course - її розвиток

         Numbers Course - невеликий курс по набору на верхньому цифровому ряді

         Special Marks Course - експрес-курс по додаткових символів: дужки, математичні знакам і т.д.

         Numeric Keypad Course - курс по використанню цифрової клавіатури.

Кожен курс складається з теоретичних і практичних блоків. Спочатку вправи вказується час виконання завдання, також пропонується вибрати складність (від 90% до 98% правильних влучень). У режимі вивчення нових клавіш («new keys») літери для набору ніяк не пов'язані між собою фонетично, але в режимі «drill» потрібно вводити саме слова: передбачені окремі вправи для слів, речень, абзаців. По закінченню виконання завдання відображається статистика, з якої можна дізнатися, які клавіші викликають найбільшу складність.

Додатково варто відзначити Typing Master Satellite - асистент, який працює в фоні і відстежує здійснюються помилки, а також створює індивідуальні вправи для найбільш складних поєднань.

Інтерфейс був створений розробниками, уважним до дрібниць. Перш за все, дуже інтуїтивно і буквально пояснюється, яким пальцем натискати ту чи іншу клавішу, з доданими схемами клавіатури (див. рис. 1.5). Дуже корисним виявляється те, що помилки на клавіатурі відображаються у вигляді перекреслених клавіш (в інших тренажерах цього немає, що призводить до виникнення кількох повторюваним помилок після одного невірного натискання).

Рисунок 1.5 - Головне вікно програми «Typing Master»

Master не дозволяє відхилитися від заданої програми ні на крок і чимось нагадує сухі курси з мовної граматики. Однак це не можна назвати недоліком, скоріше - характерна особливість даного тренажера, яка або утримає користувача, або його відштовхне.

. Stamina.являється найбільш «несерйозним» тренажером в огляді. Програма не сподобається користувачам, які вважатимуть почуття гумору розробника недоречним і при цьому цілком налаштовані на навчання десятипальцевому методу друку. Несерйозність починається зі довідки, коментарів і закінчуючи озвученням. До звуку - особливі претензії, висловлені відвідувачами на домашній сторінці програми. Цей момент можна виправити за допомогою патча або за допомогою опції «Цензура» в настройках Stamina (див. рис. 1.6).

Програма має різноманітність режимів тренування - «Уроки», «Фрази», «Букви», «Все символи» і «Зовнішній файл». Усі уроки розбиті на базові вправи, поєднання букв, цифри і символи. Відносно уроків з цифровою клавіатурою: розробник заявляє, що «робив їх не особливо намагаючись» і пропонує користувачам самим взяти участь у процесі розробки (цитата: «Може зробите щось розумніше?»).

Автор Stamina помістив програму з її широкими можливостями в незручну оболонку, тому при запуску тренажера не зовсім зрозуміло, як і в якій послідовності з усім цим функціоналом потрібно розбиратися. З іншого боку, довідка досить зрозуміло пояснює методику курсу, основні поняття, техніку друку (положення пальців на клавіатурі і т.п.). Особлива увага приділяється альтернативним методам розташування пальців на клавіатурі.

Клавіатурний тренажер також можна радити для роботи з української чи білоруською розкладкою (що не зустрічається в інших тренажерах). У базовому дистрибутиві містяться уроки російською, англійською, українською, можливо підключення фраз на інших мовах.

Таким чином, головна особливість Stamina - свобода дій, яка надається користувачеві. Тому можна виконувати вправи в будь-якій послідовності, скласти власний курс. Мінус методу - невідомо, як скоро з таким підходом можна домогтися конкретних результатів.

Рисунок 1.6 - Головне вікно програми «Stamina»

. Bombina.

Тренажер для наймолодших. «Bombina» займає вільну нішу, де немає конкурентів. Цей тренажер призначений для навчання школярів (скоріше навіть, дітей молодшого шкільного віку) сліпому десяти пальцевому методу друку.

Оболонка програми «мультяшна», оцінювати її повинні діти (див. рис. 1.7). Проте, резонні нарікання можуть виникнути і у дорослих. Інтерфейс не у всіх місцях інтуїтивно зрозумілий, і здається незручним те, що елементи навігації або, наприклад, кнопка «Старт» на початку вправи недостатньо чітко виділені і доводитися їх шукати. Наприклад: зображення ганчірки - це тутешній аналог кнопки «Вихід».

Якщо в інших тренажерах опір робиться на переходи і клавіатурні акорди, тут потрібно звертати увагу на стрибаючі «фішки» і повторювати їх рухи. У «Bombina» передбачені рівні складності, які впливають на кількість допустимих помилок у вправі. Можна активувати автоперехід з одного рівня складності на інший: він спрацює після успішного проходження вправи з високою оцінкою не менше трьох разів. У підсумку : в програмі чимало інтерактивних елементів, режимів (присутня навіть логічна гра), її можна радити для навчання дітей комп'ютерним азам.

Рисунок 1.7 - Головне вікно програми «Bombina»

1.3 Вимоги до ПК і ОС

Для запуску програми на виконання необхідно, щоб ПК працював під ОС Microsoft Windows 7/8/10. Програма не потребує додаткової інсталяції.

         Windows ХР / 7 / 8 /8.1/10

         Оперативна пам’ять: 64 МБ

         Наявність клавіатури

1.4 Опис мови програмування

Для курсового проектування обрано середовище розробки Microsoft Visual Studio 2013, мову програмування С++ та додаткову бібліотеку SFML.Visual Studio 2013 − один з продуктів компанії Microsoft, що включають інтегроване середовище розробки програмного забезпечення і ряд інструментальних засобів.++ (Сі-плюс-плюс) - мова програмування високого рівня з підтримкою декількох парадигм програмування: об'єктно-орієнтованої, узагальненої та процедурної. Розроблена Б'ярном Страуструпом (англ. Bjarne Stroustrup) в AT&T BellLaboratories (Мюррей-Хілл, Нью-Джерсі) у 1979 році та початково отримала назву «Сі з класами». Згодом Страуструп перейменував мову у C++ у 1983 р. Базується на мові С. Визначена стандартом ISO/IEC 14882:2003. У 1990-х роках С++ стала однією з найуживаніших мов програмування загального призначення. Мову використовують для системного програмування, розробки програмного забезпечення, написання драйверів, потужних серверних та клієнтських програм, а також для розробки розважальних програм таких як відео ігри. С++ суттєво вплинула на інші, популярні сьогодні, мови програмування: С# та Java.

При створенні С++ прагнули зберегти сумісність з мовою С. Більшість програм на С справно працюватимуть і з компілятором С++. С++ має синтаксис, заснований на синтаксисі С .

Нововведеннями С++ порівняно з С є:

-              підтримка об'єктно-орієнтованого програмування через класи;

-              підтримка узагальненого програмування через шаблони;

-              доповнення до стандартної бібліотеки;

-              додаткові типи даних;

-              обробка винятків;

-              простори імен;

-              вбудовані функції;

-              перевантаження операторів;

-              перевантаження імен функцій;

-              посилання і оператори управління вільно розподіленою пам'яттю.

Об'єктно-орієнтоване програмування - це метод програмування, заснований на поданні програми у вигляді сукупності взаємодіючих об'єктів, кожен з яких є екземпляром певного класу, а класи є членами певної ієрархії наслідування. Програмісти спочатку пишуть клас, а на його основі при виконанні програми створюються конкретні об'єкти (екземпляри класів). На основі класів можна створювати нові, які розширюють базовий клас і таким чином створюється ієрархія класів. Основу ООП складають три основні концепції: інкапсуляція, успадкування та поліморфізм.

Основні принципи ООП:

-        Все є об'єктами.

- Всі дії та розрахунки виконуються шляхом взаємодії (обміну даними) між об'єктами, при якій один об'єкт потребує, щоб інший об'єкт виконав деяку дію. Об'єкти взаємодіють, надсилаючи і отримуючи повідомлення. Повідомлення - це запит на виконання дії, доповнений набором аргументів, які можуть знадобитися при виконанні дії.

-        Кожен об'єкт має незалежну пам'ять, яка складається з інших об'єктів.

- Кожен об'єкт є представником (екземпляром, примірником) класу, який виражає загальні властивості об'єктів.

-        У класі задається поведінка (функціональність) об'єкта. Таким чином усі об'єкти, які є екземплярами одного класу, можуть виконувати одні й ті ж самі дії.

         Класи організовані у єдину деревоподібну структуру з загальним корінням, яка називається ієрархією успадкування. Пам'ять та поведінка, зв'язані з екземплярами деякого класу, автоматично доступні будь-якому класу, розташованому нижче в ієрархічному дереві.

Клас - це спеціальна конструкція, яка використовується для групування пов'язаних змінних та функцій. При цьому згідно з термінологією ООП глобальні змінні класу (члени-змінні) називаються полями даних (також властивостями або атрибутами), а члени-функції називають методами класу. Створений та ініціалізований екземпляр класу називають об'єктом класу. На основі одного класу, можна створити безліч об'єктів, що відрізнятимуться один від одного своїм станом (значеннями полів). Усі примірники одного класу створені за одним шаблоном, тому мають один і той же набір полів та методів. Через методи реалізується поведінка об'єктів.

Об'єкт - окремий екземпляр класу (створюється після запуску програми і ініціалізації полів класу).

Практично вся робота з об'єктами відбувається через методи. Вони можуть змінювати стан об'єкта або ж просто надавати доступ до даних, які були інкапсульовані в об'єкті. Існує кілька видів методів, які мають деякі відмінності в різних мовах програмування. До методів та полів даних можна надавати різні права доступу, від яких залежатиме доступ до них з різних частин програмного коду. Права доступу та вид методів задаються модифікаторами при описі методів. Метод, який проводить створення та початкову ініціалізацію екземпляра класу називають конструктором класу. Метод, який проводить знищення об'єкта, називають деструктором класу.

Інкапсуляція - це приховування деталей про роботу класів від об'єктів, що їх використовують або надсилають їм повідомлення. Інкапсуляція досягається шляхом вказування, які класи можуть звертатися до членів об'єкта. Як наслідок, кожен об'єкт представляє кожному іншому класу певний інтерфейс - члени, доступні іншим класам. Інкапсуляція потрібна для того, аби запобігти використанню користувачами інтерфейсу тих частин реалізації, які, швидше за все, будуть змінюватись. Це дозволить полегшити внесення змін, тобто, без потреби змінювати і користувачів інтерфейсу.

2. Спеціальна частина

.1 Опис програмної реалізації

Реалізована у межах курсової роботи програма складається з двох частин: клас та демонстраційна програма, яка являє собою консольне застосування створене за шаблоном Console Application Win32 і використовує функції класу.

Розглянемо функції системи у вигляді UML діаграми прецедентів, на якій Виділено лише один користувач. Користувач може виконувати наступні функції (див. рис. 2.1):

         Почати тренування можна лише після вибору складності.

         Вибрати рівень (рівень складності впливає на час, визначений для введення слова).

         Вводити символи з клавіатури (введення одного некоректного символу одразу припиняє тренування з ознакою помилки).

         Завершити роботу програми натиснувши клавішу ESC.

Рисунок 2.1 - UML-діаграма прецедентів: користувач

Ядро системи виконує функції, представлені у вигляді діаграми прецедентів на рисунку 2.2. Нижче подано опис функцій системи:

1) Встановлювати рівень складності.

) Встановлювати час на введення слова в залежності від рівня складності.

) Перевіряти символ введений з клавіатури.

) Вивід нового слова на екран.

) Перевіряти правильність введеного слова.

) Вивід кількості введених слів за хвилину.

Рисунок 2.2 - UML-діаграма прецедентів: система

2.2 Опис власних класів

В межах курсової роботи для реалізації логіки гри реалізовано власну ієрархію класів. Нижче подано докладний опис класів. - головний клас, який забезпечує взаємодію між усіма частинами програми.

У таблиці 2.1 представлено опис властивостей класу Game.

Таблиця 2.1 - Опис властивостей класу Game

Властивість

Опис

int _DIFFICULTY_LEVEL

Цілочисленна змінна для встановлення рівня складності

int _DIFFICULTY_TIME

Цілочисленна змінна для встановлення часу на введення слова

const string _WORDS_ARRAY[25]

Масив слів, які повинен вводити користувач

string INDENT = " ";

Змінна символьного типу для відступів


У таблиці 2.2 представлено опис методів класу Game.

Таблиця 2.2 - Опис методів класу Game

Метод

GameEngine()

Конструктор класу

~GameEngine()

Деструктор класу

void setDifficulty(int level = -1)

Встановлює рівень складності

bool play()

Відповідає за процес тренування

string ask()

Зчитує текст з консолі

void print(string str = "", bool same_line = false)

Виводить віповідний текст з результатами


.3 Розробка алгоритму та його опис

Програма розпочинається з вводу користувачем рівня складності. Далі користувач повинен вводити слова які відображаються на екрані за той час, який встановлюється відповідно рівню складності. Система зчитує введені користувачем символи і порівнює із потрібним словом.

Якщо користувач ввів дані вірно, то виводиться наступне слово. Якщо він помилився, то на екран виводиться його результати та команда натиснути відповідну клавішу для повернення в головне меню програми для вибору рівня складності. Користувач може вибрати рівень складності і почати тренуватися знову, або вийти із програми.

Рисунок 2.2 - Алгоритм загальної роботи програми

2.4 Інструкція програміста

Дана програма написана на мові програмування С++ в середовищі Microsoft Visual Studio 2015.

Для конкретної роботи програми на комп’ютері повинна бути встановлена ОС Windows XP/7/8/8.1/10. Комп’ютер повинен мати як 64 МБ оперативної пам’яті.

.5 Інструкція оператора

Щоб взаємодіяти з програмою, використовується клавіатура. Для запуску програми необхідно знайти файли Keyboard.exe та натиснути двічі ЛКМ на ньому.

Механізм взаємодії: на екрані почергово з’являються запити, на які користувач має відповідати задля продовження, використовуючи клавіатуру.

Рисунок 2.3 - Вікно головного меню програми для вибору рівня складності

Після вибору рівня складності користувачу відкривається вікно в якому виводиться слово, яке він повинен ввести за певний час, який залежить від рівня. (див. рис. 2.4).

Рисунок 2.4 - Вікно для вводу слів

Як тільки користувач робить помилку, то відкривається вікно з результатами та проханням натиснути клавішу “y”.

Рисунок 2.5 - Вікно з результатами

3. Лістинг програми

//game.class.h

#pragma onceGameEngine{:_DIFFICULTY_LEVEL = 0;_DIFFICULTY_TIME = 0;INDENT = " ";string _WORDS_ARRAY[25] = {"forever", "instagram", "twitter", "darling", "stairs", "sky", "keyboard", "abuse", "tasty", "jellyfish", "library", "book", "developer", "love", "ball", "hold", "translate", "bottle", "baloon", "chess", "message", "closed", "news", "array", "cobweb"};:(){

}setDifficulty(int level = -1){(level != -1 AND level <= 3){

_DIFFICULTY_LEVEL = level;

_DIFFICULTY_TIME = -level + 5;;

}("CLS"); // Clearing the screen(14);("Let's test how fast are you typing\n");();();(5);("Alright, now we need to choose the difficulty..");(INDENT + "1 - I could find the buttons on the keyboard");(INDENT + "2 - At least I can press some of them");(INDENT + "3 - How about the real typing?");();();

// Getting datatmp = std::atoi(this->ask().c_str());(tmp < 1) tmp = 1;(tmp > 3) tmp = 3;>setDifficulty(tmp);

}play(){("CLS");_word; // Current word_word_length; // Current word lengthtmp_char; // Entered symboltmp_word = ""; // All entered symbolstmp_in_length = 0; // Letter position in the wordis_word_set = false; // Is word set (userd the we need to change the word)is_game_over = false; // Is game over

// Counterc_minutes = 1;c_words_entered = -1;_t c_time_start = time(0);

// Difficulty timer_t d_time_start = time(0);dwPosition = {0, 0};

//CONSOLE_CURSOR_INFO cursor_info;(true){(!is_game_over) // Difficulty timer displaying((int) difftime(time(0), d_time_start) <= _DIFFICULTY_TIME){= {0, 0}; // Setting cursor position(GetStdHandle(STD_OUTPUT_HANDLE), dwPosition);(); // Clear the line("Words per minute: ", true);(2);(std::to_string(c_words_entered / c_minutes), true);();(", time left: ", true);(12);(std::to_string(_DIFFICULTY_TIME - (int) difftime(time(0), d_time_start) ));();

}else{("CLS");(14);("Game over, you lost it! Here are your stats:");(INDENT + "Minutes passed - " + std::to_string(c_minutes));(INDENT + "Words per minute - " + std::to_string(c_words_entered / c_minutes));();("\nPress \"y\" to cuntinue...");_game_over = true; // Game over flag

}(!is_word_set){ // If no more to input - set a new word

_word = _WORDS_ARRAY[getRand(0, 23)];

_word_length = strlen(_word.c_str());_word_set = true;= {0, 1}; // Setting cursor position(GetStdHandle(STD_OUTPUT_HANDLE), dwPosition);(); // Clear the line("Word - ", true);(14);(_word + "\n");();_words_entered++; // Words per minute counter

// Resetting the difficulty timer_time_start = time(0);

}(kbhit() AND !is_game_over){ // Waiting for input_char = getch(); // Reading last symbol= {0, 1}; // Setting cursor position(GetStdHandle(STD_OUTPUT_HANDLE), dwPosition);(); // Clear the line("Word - ", true);(14);(_word + "\n");();(_word.at(tmp_in_length) == tmp_char){ // If the symbol is correct_in_length++; // Moving to the next one(_word_length == tmp_in_length){_word = ""; // Resetting the symbols user have entered before_in_length = 0; // Setting input length to zero_word_set = false; // If the word has ended setting the flag to false to bring us a new word

}

// Displaying= {0, 4}; // Setting cursor position(GetStdHandle(STD_OUTPUT_HANDLE), dwPosition);(); // Clear the line(tmp_in_length != 0){_word += tmp_char;(tmp_word);

}

}else{ // If the user made a mistake("CLS");(14);("Game over, you lost it! Here are your stats:");(INDENT + "Minutes passed - " + std::to_string(c_minutes));(INDENT + "Words per minute - " + std::to_string(c_words_entered / c_minutes));();("\nPress \"y\" to cuntinue...");();_game_over = true; // Game over flag

}

}(kbhit() AND is_game_over){ // Leaving the game loop(getch() == 'y') break;

}((int) difftime(time(0), c_time_start) == 60 AND !is_game_over){ // Counting minutes_time_start = time(0); // If we passed one minute - resetting the time_minutes++;

}(100); // Delay (decreases lags by slowing down the loop iteration speed), default 10

}false; // Telling that the user has lost

}ask(){tmp = "";(cin, tmp);tmp;

}print(string str = "", bool same_line = false){<< str << (!same_line ? "\n" : "");

}

~GameEngine(){

}

};

//util.h

#pragma once

// DefinesgetConsoleWidth();printLine();setConsoleColor(int);getConsoleWidth(){ // Get the console width in symbols_SCREEN_BUFFER_INFO csbi;(GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi))csbi.srWindow.Right - csbi.srWindow.Left;return 0;

}clearLine(){(int i = 0; i < getConsoleWidth(); i++){<< " ";

}<< "\r";

}printLine(){(14);(int i = 0; i < getConsoleWidth(); i++){<< "-";

}getRand(int a, int b){((unsigned)time(0));rand() % (b - 1) + a;

}setConsoleColor(int color){

/*

+ Console colors

- green

- dark red // Important data

- purple // Stuzer

- dark orange

- dark grey (default)

- grey

- blue

- green

- red

- pink

- yellow // Error

- white

*/hConsole = GetStdHandle(STD_OUTPUT_HANDLE);(hConsole, color);

}setConseleDefaultColor(){(7);

}

//main.cpp

#define elseif else if

#define null 0

#define OR ||

#define AND &&

// Common defines

#include <windows.h>

#include <iostream>

#include <string>

#include <conio.h>

#include <time.h>

#include <cstdlib>

#include <ctime> namespace std;std::cin;std::cout;std::endl;std::string;

// App includes

#include "util.h"

#include "game.class.h"main(char* argv[], int argc){("title The keyboard trainer");*Game = new GameEngine();>setDifficulty();TheGameLoop = true;(TheGameLoop){(!Game->play()){ // If user lost>setDifficulty();

}

}("PAUSE");

}

Висновок

клавіатурний інкапсуляція програмний тренажер

В ході написання курсової роботи було реалізовано застосування для тренування швидкого десяти пальцевого набору.

Ця задача була реалізована за допомогою мови програмування С++. Мова С++ - мова програмування високого рівня з підтримкою декількох парадигм програмування: об'єктно-орієнтованої, узагальненої та процедурної.

Також було обрано середовище програмування: Microsoft Visual Studio на платформі Windows 10.

Під час виконання курсової роботи була розроблена програма для навчання сліпого методу друку, яка дозволяє задіяти для набору все десять пальців рук; збільшити швидкість набору; зменшити кількість помилок; поліпшити ритмічність набору (що дозволяє зменшити втому при наборі).

Література

1.      Р. Лафоре. Обьектно-ориентированое программирование, 4-е издание. Санкт-Петербург, 2004.

2.      Бьерн Страуструп. Язык программирования С++ - специальное издание. Москва, 2006.

.        Березин Б.И., Березин С.Б. Начальний курс С и С++. 2001.

Похожие работы на - Розробка клавіатурного тренажеру засобами Microsoft Visual Studio, мовою програмування С++ з використанням об’єктно-орієнтованого підходу

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!