СУЧАСНИЙ ГУМАНІТАРНИЙ УНІВЕРСИТЕТ
Курсова робота
З дисципліни:
«Алгоритмічні мови та програмування»
На тему:
«Скласти програму навчання роботі з клавіатурою»
Калуга
1. Розробка ескізного технічного проектів програми (ГОСТ 19.404-79).
1.1 Введення
Завдання на курсову роботу з дисципліни
Тема: Розробка програми для Windows, що представляє собою програму навчальну роботі з клавіатурою.
Умова задачі:
Скласти програму навчання роботі з клавіатурою. Програма повинна видавати на екран літери, цифри, слова і фрази, які слід набрати на клавіатурі, і оцінювати правильність і швидкість набору. У програмі передбачити три рівні підготовленості студента.
Мета курсової роботи - скласти програму навчання роботі з клавіатурою.
Основними завданнями курсової роботи є:
Розробка програми, яка буде навчати роботі з клавіатурою;
Розробка програми, яка повинна видавати на екран літери, цифри, слова і фрази, які слід набрати на клавіатурі;
Оцінка правильності введення і швидкості набору;
Облік трьох рівнів підготовленості студента.
Курсова робота складається з двох розділів.
Перша глава присвячена розробці ескізного і технічного проектів програми.
Друга глава присвячена розробці робочого проекту.
1.2 Призначення і область застосування
Необхідно розробити навчальну програму, що допомагає користувачеві освоїти клавіатуру, навчити друкувати. Область застосування: оскільки ставиться завдання розробити додаток для Windows, то використовуватися програма може під управлінням Windows XP.
1.3 Технічні характеристики
Як зазначено в умові завдання, програма повинна видавати на екран літери, цифри, слова, і фрази, які слід набрати на клавіатурі, і оцінювати правильність і швидкість набору. У даному прикладі для реалізації такого завдання використовується генератор випадкових чисел, за допомогою якого відбувається випадковий вибір слова, яке з'являється на екрані форми, користувачеві пропонується набрати це слово в текстовому вікні.
Після введення слова та натискання клавіші "enter" відбувається порівняння слова набраного користувачем з "еталоном" - словом, виведеним на екран генератором випадкових чисел. Якщо слово збігається, то лічильнику правильних відповідей присвоюється 1. Після кожного правильно введеного слова лічильник підсумовується до тих пір, поки генератор не зупиниться і не перестане виводити на екран слова. Генератор вимикається після 30 повторень. Для зупинки генератора слів, реалізований лічильник, до якого додається 1 після кожного виведеного слова. Коли лічильник набирає суму 30, відбувається зупинка програми, що досягається за рахунок приховування текстового вікна. Після зупинки програми на екран виводитися кількість правильних відповідей набраних користувачем, якщо користувач набрав більше 20-ти правильних, відповідей йому пропонується спробувати себе на наступному рівні складності.
Рівні складності в програмі реалізовані шляхом обмеження у часі для набору слів. Для реалізації такої ідеї в програмі використовується таймер. Користувачеві відводиться певний проміжок часу, за який він встигає набрати певну кількість слів. Після закінчення часу програма зупиняється і на екран виводиться кількість правильно набраних слів, наприклад - "кількість набраних слів 12 з 20. Якщо користувач набрав правильних слів більше 20, то йому пропонується перейти на наступний рівень складності. Таких рівнів всього три - новачок, досвідчений, вищий клас. Рівень складності можна вибрати з випадаючого списку "на час". Для обнулення результатів тестування використовується кнопка "скидання". При виборі будь-якого рівня складності з випадаючого списку "на час" обнулення лічильників програми і результатів тестування проводиться автоматично.
1.3.1 Опис алгоритму
При запуску програми першим ділом створюється форма. При появі форми вбудований генератор слів виводить слово на екран. Далі програма зупиняється, очікуючи введення тексту в текстове вікно. Після введення тексту і натискання клавіші "enter" текст порівнюється з текстом виведеним на екран форми. Якщо текст збігається, то лічильник правильних відповідей підсумовується, після 30 спроб на екран виводиться кількість правильно набраних слів.
При виборі рівня складності з пункту меню «на час» включається таймер, для кожного рівня складності встановлено певний інтервал часу. Таймер працює протягом заданого проміжку часу, після чого відключається і на форму виводиться кількість правильних слів, які користувач встиг набрати. При наборі правильних слів більше 20 програма пропонує Вам перейти на більш високий рівень складності.
1.3.2 Опис глобальних змінних
Глобальні змінні, використовувані в програмі, наведені в таблиці 1.
Таблиця 1
Мінлива | Тип | Опис |
X | integer | Використовується для змінної вибору випадкових слів |
vremi | integer | Використовується для правильного висновку минулого часу |
O, k, t | integer | Лічильники виведених на форму слів, і правильних відповідей |
m | String | Текстова змінна |
prob = диван; f = ліжко; n = картина; h = стінка; u = сонечко; y = комп'ютер; l = принтер; d = килим; r = пожежа; qq = іграшка; ww = двері; ee = плита; rr = книга; tt = уроки; yy = кактус; uu = дискета; ii = кухня; oo = сосна; pp = дзеркало; aa = куртка; ss = 173042; dd = 935862; ff = 0.4789; gg = 1,9,53; hh = з: \ юзер; jj = (2359); kk = 2 * 7 = 14; ll = скільки?; zz = 12 +965; xx = 500-25; | Іменовані константи | Слова, що виводяться на форму |
Fonovi, budilnik | Файли WMF | Картинки ігри |
У деяких процедурах використовуються локальні змінні.
1.3.3 Вибір складу технічних та програмних засобів
Робиться висновок про необхідність використання інтегральної середовища розробки програм Delphi. Середовище Delphi дозволяє досить швидко розробляти додатки для Windows. Технічні характеристики комп'ютера: Pentium 100 і вище; обсяг оперативної пам'яті 8 Мб; жорсткий диск об'ємом не менше 500 Мб. Саме ці параметри створюють умови для повноцінної роботи IDE Delphi 1 і програм, створених в цьому середовищі. Додаткових коштів (принтер, сканер і т. д.) не потрібно.
2. Розробка робочого проекту
2.1 Розробка програми
Для розробки програми «програми навчальної роботі з клавіатурою» використовуються засоби візуального програмування Delphi. Проект програми містить одне вікно: Form 1 - малюнок 1.
8 4 7 1 3 2 6 10 9
Рис.3 Вікно програми - Form 1
Компонент Form 1: TForm 1 - вікно програми
Властивості:
BorderStyle = bsSingle
Caption = 'Навчися друкувати '
Position = poScreenCenter
Menu = MainMenu1
Події:
OnClose = FormClose - закриття програми
OnCreate = FormCreate - створення форми
1 - компонент Timer: TTimer
Властивості:
Enabled = False
Interval = задається кнопками меню «на час»
Події:
OnTimer = TimerTimer - висновок випадкового слова, після закінчення часу заданого інтервалом таймер вимикається.
2 - компонент Button 1: TButton
Властивості:
Caption = 'завершити'
Події:
OnClick = Button 1 Click - вихід з програми
3 - компонент Button 2: TButton
Властивості:
Caption = 'скидання'
Події:
OnClick = Button 2: Click-обнуління лічильників, скидання результатів тестування
4 - компонент Label1: TLabel
Властивості:
AutoSize = True
Caption = ''
Font - шрифт 24 колір-темносиній
Подій немає.
5 - компонент Label 2: TLabel
Властивості:
Caption = ''
Font - шрифт 14 колір-темно синій
Подій: немає
6 - компонент Label 3: TLabel
Властивості:
Caption = '<введення тексту>'
Font - шрифт 14 колір-темно синій
Подій: немає
7 - компонент Edit 1: TEdit
Властивості:
Font - шрифт 14 колір-чорний
Події:
OnKeyPress = Edit 1 KeyPress-обробка події натискання клавіші «enter»
8 - компонент MainMenu 1: TMainMenu-список, що розкривається тестування на час.
N1: TMenuItem - список: «на час»
N 2: TMenuItem - кнопка запускає тест на час
Події:
TForm1.N2Click - обробка події натискання клавіші «новачок»
N 3: TMenuItem - кнопка запускає тест на час
Події:
TForm1.N3Click - обробка події натискання клавіші «досвідчений»
N 4: T MenuItem - кнопка запускає тест на час
Події:
TForm1.N4Click - обробка події натискання клавіші «вищого класу»
9 - panel 1 - T panel - містить компоненти:
panel 1 - T panel-контейнер
Властивості:
Тор-8
Left -384
Width -337
Події-ні
image 1 - для виведення картинок
C войства:
Top-8
Left-8
Width-321
Height-225
Події-ні
10 - Panel 2 - Tpanel - містить компоненти;
panel 1 - T panel-контейнер
Властивості:
Тор-312
Left -624
Width -145
Height -89
Події-ні
timer 2 - T Timer-відлік часу
C войства:
Enabled-false
Interval-1000
Події:
On timer
Label 4 - T label-висновок часу на екран
C войства:
Тор -16
Left-64
Width-9
Height-37
Font - колір-червоний, розмір-24, caption - ""
2.2 Опис програми
Загальні відомості.
Програма призначена для навчання користувача роботі з клавіатурою. Програма називається «Навчись друкувати.
Для нормального функціонування потрібно програмне забезпечення Pentium 100 і вище; обсяг оперативної пам'яті 8 Мб; жорсткий диск об'ємом не менше 500 Мб. Для розробки програми «програми навчальної роботі з клавіатурою» використовуються засоби візуального програмування Delphi.
Функціональне призначення.
Мета розробленої програми навчити користувача швидко друкувати. Для цієї мети в програмі реалізовані три ступені тестування на час.
Опис логічної структури.
Програмну реалізацію розроблених алгоритмів містять обробники подій. Все по порядку.
При створенні вікна програми обробляється подія - FormCreate. Усередині цієї процедури ми виконуємо наступні дії. По-перше, запускаємо генератор випадкових чисел, він нам знадобиться для того, щоб при кожному новому запуску проекту у нас не повторювалися кожного разу одні і ті ж слова, а комп'ютер кожен раз генерував нові числа для вибору слів. Для цієї мети використовується процедура Randomize. По-друге, в проекті необхідно мати дві змінні-лічильники. Одна мінлива-лічильник До буде підраховувати загальна кількість виведених програмою слів. Друга змінна-лічильник Т буде підраховувати кількість правильних слів, даних користувачем, якому відповідає кількість набраних балів. У процедурі ми повинні проініціалізувати ці змінні, тобто присвоїти їм початкові значення. Причому ці початкові значення будуть різними. Для змінної До початкове значення буде дорівнює 1, тому що відразу після створення форми ми вже виведемо перше слово. Для змінної Т початкове значення буде дорівнює 0, тому що користувач не ввів ще жодного правильного слова.
Наступний оператор процедури вибирає випадкові значення і привласнює їх допоміжної змінної X. Ці дії, виробляються за допомогою функції Random. Довше вступає у справу оператор вибору за випадковим числа, яке присвоюється змінної X, він вибирає слово, яке буде виводитися на екран. Для того щоб зробити програму більш комунікабельною вставимо у форму компонент Tpanel, поверх нього растянем інший компонент Imagel, для виведення графіки. За допомогою процедури image1.Picture.LoadFromFile ('fonovi.wmf') картинку, попередньо скопіювавши малюнок формату 'wmf' у поточний проекту.
Створення форми |
Лічильники К: = 1 Т: = 0 |
Генеруємо випадкове слово
Завантаження картинки |
Рис. 3 Блок-схема процедури FormCreate
При закритті вікна програми обробляється подія FormClose, яка закриває форму програми.
Компоненти Label 1 і Label 2 служать для виведення інформації користувачеві.
Компонент Label 3 містить коментар до текстового вікна Edit 1.
Компонент Edit 1 служить для введення текстової інформації, і містить
подія «Edit 1 KeyPress». Усередині цієї процедури ми виконуємо наступні дії. Після введення тексту і натиснення клавіші «enter» набраний користувачем текст порівнюється зі словами, які видає на форму генератор випадкових слів. Якщо одне із слів збігається з набраним в текстовому вікні користувачем, то лічильнику правильних відповідей присвоюється 1, якщо - ні, лічильник залишається без зміни. Далі проводиться перевірка умови лічильника випадкових слів. Якщо слів на формі було виведено К = 30, то видаються результати тестування. Причому, якщо користувач набрав правильних слів більше 20, йому буде запропоновано перейти на наступний рівень складності. Якщо на форму виведено випадкових слів менше 30, то слово генерується знову. Після чого програма очікує введення тексту і натиснення клавіші «enter», тобто повторення процедури.
Натиснута клавіша
«Enter»
Отримуємо текстову змінну «M»
Порівнюємо M і Z
немає
Так
Генеруємо випадкове слово | Лічильнику правильних відповідей - T: = t +1 |
немає
та
Висновок результатів тестування T
Рис. 4 Блок-схема процедури TForm1.Edit1KeyPress
Коли користувач натискає на кнопку «скидання», то обробляється подія натискання кнопки у процедурі Button 2Click. У цій процедурі задаються початкові значення всіх змінних програми, зупиняються таймери, очищаються вікна введення і виведення. Оскільки в програмі дві картинки які завантажуються в одне вікно, то при натисканні кнопки «скидання» знову буде завантажуватися картинка з файлу 'fonovi' як і при появі форми.
2.2.1. Тестування на час
Після вибору користувачем рівня складності з пункту меню «на час» запускається таймер, для кожного рівня складності встановлено певний інтервал часу. Першим ділом лічильником К - кількість згенерованих слів і Т - кількість правильних слів присвоюються початкові значення. Після чого, як і в процедурі FormCreate генерується випадкове число і вибирається слово за допомогою оператора вибору. Далі користувач вводить текст слова і натискає клавішу «enter» включається в роботу подію «Edit 1 KeyPress», яке повторюється до тих пір, поки у властивості interval таймера не закінчиться час. Після закінчення часу на екран виводяться результати тестування. При наборі правильних слів більше 20 програма пропонує Вам перейти на наступний рівень складності. Для того, щоб користувач знав, скільки залишилося часу до закінчення тесту поміщаємо на форму компонент Tpanel 2, який служить контейнером для інших компонентів на нього поміщаємо компонент Timer 2 і компонент Label 4. За допомогою цих компонентів організований відлік зворотного часу до закінчення тесту. Також при виборі будь-якого тесту з випадаючого меню «на час» змінюється фонова картинка, завантажується картинка годин у вікно для картинок.
Таймер включений
Генерується випадкове слово
Очікування введення тексту
Процедура натискання клавіші "enter"
Таймер вимкнений
Рис. 4 Блок-схема процедури TimerTimer
2.3 Специфікація програми
Файл програми «Навчись друкувати» має назву PEZATAITE. EXE. Його працездатність не залежить від розташування на диску. Необхідно, щоб файли, що додаються до програми, перебували у вказаних каталогах. Найменування файлів вхідних в проект і коротка інформація про їх зміст відображені в таблиці 2.
Таблиця 2
Найменування | Позначення | Примітка |
pezataite. dof | Файл параметрів проекту | Містить поточні установки проекту: налаштування компілятора і компонувальника, імена службових каталогів, умовні директиви |
pezataite. dpr | Файл проекту | Пов'язує всі файли, з яких складається додаток |
pezataite. cfg | Файл, який містить налаштування проекту | Містить інформацію про те, які вікна відкриті і в яких позиціях вони розташовані. |
pezataite.res | Файл ресурсів | Містить піктограми, графічні зображення |
Unit 1. Pas | Файл програмного модуля для форми Form 1 | Визначає функціональність форми Form 1 |
Unit1.dfm | Файл форми Form 1 | Містить список властивостей всіх компонентів, включених у форму Form 1 |
Unit 1. Dcu | Об'єктний файл для Unit 1. Pas | Скомпільованій версія Unit 1. Pas |
fonovi.bmp budilnik. bmp | Файли рисунків програми | Завантажуються під час роботи програми |
2.4 Текст програми
Текст програми для форми - Form 1 1:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ExtCtrls;
type
TForm1 = class (TForm)
Label 1: TLabel; / / для виведення випадково згенерували слів
Edit 1: TEdit; / / для введення тексту з клавіатури
Button 1: TButton; / / завершення роботи з програмою
Label 2: TLabel; / / виведення кількості правильно набраних слів
MainMenu 1: TMainMenu; / / меню роботи програми на час
N 1: TMenuItem; / / випадаючий список
Timer 1: TTimer; / / тимчасової таймер
N 2: TMenuItem; / / тест на час для новачків
N 3: TMenuItem; / / тест на час - середня швидкість
N 4: TMenuItem; / / тест на час для професіоналів
Button 2: TButton; / / скидання значень
Label 3: TLabel; / / коментар
Panel 1: TPanel; / / контейнер
Image 1: TImage; / / вікно для завантаження картинок
Panel 2: TPanel; / / контейнер
Label 4: TLabel; / / вивід відліку зворотного часу
Timer 2: TTimer;
/ / При появі форми виводиться випадково сгенерированное слово
procedure FormCreate (Sender: TObject);
procedure Button1Click (Sender: TObect); / / обр. кнопки "завершити"
procedure Timer1Timer (Sender: TObject); / / обр. таймер
/ / Обр. Натискання клавіші "enter"
procedure Edit1KeyPress (Sender: TObject; var Key: Char);
procedure N2Click (Sender: TObject); / /
procedure N3Click (Sender: TObject); / / три положення швидкості таймера
procedure N4Click (Sender: TObject); / /
procedure Button2Click (Sender: TObject); / / обр. Кнопки скидання
procedure Timer2Timer (Sender: TObject); / / відлік зворотного часу
private
{Private declarations}
public
{Public declarations}
end;
/ / Оголошення глобальних змінних і констант
var
Form 1: TForm 1;
/ / Змінні для підрахунку кол-ва виведених слів, правильних відповідей
/ / І для оператора вибору генерації випадкових слів
vremi, o, k, t, x: integer;
m: string; / / присвоюється значення тексту введеного користувачем
/ / Іменовані константи для генератора випадкових слів
const
prob = 'диван';
f = 'ліжко';
n = 'картина';
h = 'стінка';
u = 'сонечко';
y = 'комп'ютер';
l = 'принтер';
d = 'килим';
r = 'пожежа';
qq = 'іграшка';
ww = 'двері;
ee = 'плита';
rr = 'книга';
tt = 'уроки';
yy = 'кактус';
uu = 'дискотека';
ii = 'кухня';
oo = 'сосна';
pp = 'дзеркало';
aa = 'куртка';
ss = '173042 ';
dd = '935862 ';
ff = '0 .4789 ';
gg = '1, 9,53 ';
hh = 'з: \ юзер';
jj = '(2359)';
kk = '2 * 7 = 14 ';
ll = 'скільки?';
zz = '12 +965';
xx = '500-25 ';
implementation
{$ R *. dfm}
procedure TForm1.FormCreate (Sender: TObject); / / процедура створення форми
begin
image1.Picture.LoadFromFile ('fonovi.wmf'); / / завантажуємо картинку
randomize; / / вивезення відс. ген. Чисел
k: = 1; t: = 0; / / лічильник слів - згенерованих і правильно набраних
x: = random (30) +1; / / генеруємо случ. числа
case x of / / вибір випадкового слова із запропонованих
1: label1.Caption: = prob;
2: label1.Caption: = h;
3: label1.Caption: = u;
4: label1.Caption: = f;
5: label1.Caption: = y;
6: label1.Caption: = l;
7: label1.Caption: = d;
8: label1.Caption: = n;
9: label1.Caption: = r;
10: label1.Caption: = qq;
11: label1.Caption: = ww;
12: label1.Caption: = ee;
13: label1.Caption: = rr;
14: label1.Caption: = tt;
15: label1.Caption: = yy;
16: label1.Caption: = uu;
17: label1.Caption: = ii;
18: label1.Caption: = oo;
19: label1.Caption: = pp;
20: label1.Caption: = aa;
21: label1.Caption: = ss;
22: label1.Caption: = dd;
23: label1.Caption: = ff;
24: label1.Caption: = gg;
25: label1.Caption: = hh;
26: label1.Caption: = jj;
27: label1.Caption: = kk;
28: label1.Caption: = ll;
29: label1.Caption: = zz;
30: label1.Caption: = xx;
end;
end;
procedure TForm1.Button1Click (Sender: TObject);
begin
form1.Close; / / закриття додатка
end;
procedure TForm1.Timer1Timer (Sender: TObject); / / обр. таймера
begin
k: = 1; / / лічильнику случ. слів привласнили 1
o: = k; / / замінюємо змінну лічильника до на 0
randomize; / / виклик відс. ген. чисел
x: = random (30) +1; / / генеруємо случ. числа
case x of / / вибір випадкового слова із запропонованих
1: label1.Caption: = prob;
2: label1.Caption: = h;
3: label1.Caption: = u;
4: label1.Caption: = f;
5: label1.Caption: = y;
6: label1.Caption: = l;
7: label1.Caption: = d;
8: label1.Caption: = n;
9: label1.Caption: = r;
10: label1.Caption: = qq;
11: label1.Caption: = ww;
12: label1.Caption: = ee;
13: label1.Caption: = rr;
14: label1.Caption: = tt;
15: label1.Caption: = yy;
16: label1.Caption: = uu;
17: label1.Caption: = ii;
18: label1.Caption: = oo;
19: label1.Caption: = pp;
20: label1.Caption: = aa;
21: label1.Caption: = ss;
22: label1.Caption: = dd;
23: label1.Caption: = ff;
24: label1.Caption: = gg;
25: label1.Caption: = hh;
26: label1.Caption: = jj;
27: label1.Caption: = kk;
28: label1.Caption: = ll;
29: label1.Caption: = zz;
30: label1.Caption: = xx;
end;
m: = edit 1. Text; / / присвоюємо введене користувачем текстове значення
/ / Порівнюємо текст з константою
/ / При рівності лічильнику правильних слів
/ / Присвоюємо +1
if m = prob then t: = t +1;
if m = f then t: = t +1;
if m = n then t: = t +1;
if m = h then t: = t +1;
if m = u then t: = t +1;
if m = y then t: = t +1;
if m = l then t: = t +1;
if m = d then t: = t +1;
if m = r then t: = t +1;
if m = qq then t: = t +1;
if m = ww then t: = t +1;
if m = ee then t: = t +1;
if m = rr then t: = t +1;
if m = tt then t: = t +1;
if m = yy then t: = t +1;
if m = uu then t: = t +1;
if m = ii then t: = t +1;
if m = oo then t: = t +1;
if m = pp then t: = t +1;
if m = aa then t: = t +1;
if m = ss then t: = t +1;
if m = dd then t: = t +1;
if m = ff then t: = t +1;
if m = gg then t: = t +1;
if m = hh then t: = t +1;
if m = jj then t: = t +1;
if m = kk then t: = t +1;
if m = ll then t: = t +1;
if m = zz then t: = t +1;
if m = xx then t: = t +1;
o: = o +1; / / лічильнику случ. слів привласнили 1
if o = 2 then / / якщо сума лічильника досягла 2
begin
timer1.enabled: = false; / / зупиняємо таймер
edit 1. Visible: = false; / / робимо недоступним текстове вікно
image 1. Picture. LoadFromFile ('fonovi. wmf'); / / завантажуємо картинку
/ / Якщо лічильник правильних слів перевищив 20 виводимо повідомлення користувачу
if t> 20 then label 2. Caption: = 'блискуче кількість набраних слів =' + inttostr (t) + 'переходите';
/ / Якщо немає, то виводимо інше повідомлення
label 2. Caption: = 'кількість набраних слів =' + inttostr (t) + 'з 20';
end;
end;
procedure TForm1.Edit1KeyPress (Sender: TObject; var Key: Char);
begin
if Key = chr (VK_RETURN) then / / якщо натиснута клавіша "enter"
begin
m: = edit 1. Text; / / присвоюємо введене слово користувачем текстове значення
/ / Порівнюємо текст з константою
/ / При рівності лічильнику правильних слів
/ / Присвоюємо +1
if m = prob then t: = t +1;
if m = f then t: = t +1;
if m = n then t: = t +1;
if m = h then t: = t +1;
if m = u then t: = t +1;
if m = y then t: = t +1;
if m = l then t: = t +1;
if m = d then t: = t +1;
if m = r then t: = t +1;
if m = qq then t: = t +1;
if m = ww then t: = t +1;
if m = ee then t: = t +1;
if m = rr then t: = t +1;
if m = tt then t: = t +1;
if m = yy then t: = t +1;
if m = uu then t: = t +1;
if m = ii then t: = t +1;
if m = oo then t: = t +1;
if m = pp then t: = t +1;
if m = aa then t: = t +1;
if m = ss then t: = t +1;
if m = dd then t: = t +1;
if m = ff then t: = t +1;
if m = gg then t: = t +1;
if m = hh then t: = t +1;
if m = jj then t: = t +1;
if m = kk then t: = t +1;
if m = ll then t: = t +1;
if m = zz then t: = t +1;
if m = xx then t: = t +1;
k: = k +1; / / лічильнику случ. слів привласнили 1
edit 1. Text :=''; / / очистимо текстове вікно
edit 1. SetFocus; / / зробимо активним текстове вікно
x: = random (30) +1; / / генеруємо случ. числа
case x of / / вибір випадкового слова із запропонованих
1: label1.Caption: = prob;
2: label1.Caption: = h;
3: label1.Caption: = u;
4: label1.Caption: = f;
5: label1.Caption: = y;
6: label1.Caption: = l;
7: label1.Caption: = d;
8: label1.Caption: = n;
9: label1.Caption: = r;
10: label1.Caption: = qq;
11: label1.Caption: = ww;
12: label1.Caption: = ee;
13: label1.Caption: = rr;
14: label1.Caption: = tt;
15: label1.Caption: = yy;
16: label1.Caption: = uu;
17: label1.Caption: = ii;
18: label1.Caption: = oo;
19: label1.Caption: = pp;
20: label1.Caption: = aa;
21: label1.Caption: = ss;
22: label1.Caption: = dd;
23: label1.Caption: = ff;
24: label1.Caption: = gg;
25: label1.Caption: = hh;
26: label1.Caption: = jj;
27: label1.Caption: = kk;
28: label1.Caption: = ll;
29: label1.Caption: = zz;
30: label1.Caption: = xx;
end;
if k = 30 then / / якщо сума лічильника випадкових слів досягла 30
begin
timer1.enabled: = false; / / зупиняємо таймер
edit 1. Visible: = false; / / приховуємо текстове вікно
/ / Виводимо повідомлення користувачу
label 2. Caption: = 'кількість набраних слів =' + inttostr (t);
end;
begin
/ / Якщо лічильник правильних слів перевищив 20 виводимо повідомлення користувачу
if t> 20 then label 2. Caption: = 'блискуче кількість набраних слів =' + inttostr (t) + 'переходите';
end;
end;
end;
procedure TForm1.N2Click (Sender: TObject);
begin
image1.Picture.LoadFromFile ('budilnik.wmf');
timer1.Interval: = 80000; / / задаємо інтервал
edit1.Visible: = true; / / показати текстове вікно
timer1.enabled: = true; / / включаємо таймер
edit1.SetFocus; / / зробити активним текстове вікно
label 2. Caption :=''; / / очистити
t: = 0; / / Обнуляємо лічильник правильних слів
vremi: = 80; / / зворотний відлік
timer 2. enabled: = true; / / включаємо таймер
end;
procedure TForm1.N3Click (Sender: TObject);
begin
image1.Picture.LoadFromFile ('budilnik.wmf');
timer1.enabled: = true; / / включаємо таймер
timer1.Interval: = 50000; / / задаємо інтервал
edit 1. Visible: = true; / / показати текстове вікно
edit 1. SetFocus; / / зробити активним текстове вікно
label 2. Caption :=''; / / очистити
t: = 0; / / Обнуляємо лічильник правильних слів
vremi: = 50; / / зворотний відлік
timer 2. enabled: = true; / / включаємо таймер
end;
procedure TForm1.N4Click (Sender: TObject);
begin
image1.Picture.LoadFromFile ('budilnik.wmf');
timer1.enabled: = true; / / включаємо таймер
timer1.Interval: = 30000; / / задаємо інтервал
edit 1. Visible: = true; / / показати текстове вікно
edit 1. SetFocus; / / зробити активним текстове вікно
label 2. Caption :=''; / / очистити
t: = 0; / / Обнуляємо лічильник правильних слів
vremi: = 30; / / зворотний відлік
timer 2. enabled: = true; / / включаємо таймер
end;
procedure TForm1.Button2Click (Sender: TObject);
begin
image1.Picture.LoadFromFile ('fonovi.wmf');
timer1.enabled: = false; / / зупиняємо таймер
timer2.enabled: = false; / / зупиняємо таймер
edit 1. Visible: = true; / / показати текстове вікно
edit 1. SetFocus; / / зробити активним текстове вікно
label2.Caption :=''; / / очистити
edit1.Text: =''; / / очистити
t: = 0; / / Обнуляємо лічильник правильних слів
k: = 1; / / лічильнику случ. слів привласнили 1
label4.Caption :=''; / / очистити
end;
procedure TForm1.Timer2Timer (Sender: TObject); / / таймер відліку зворотного
/ / Часу
begin
vremi: = vremi -1; / / кожну секунду віднімаємо від заданого часу 1
if vremi = 0 then / / якщо час закінчився
begin
timer2.Enabled: = false; / / вимикаємо таймер
label4.Caption: = 'off'; / / виводимо вікно
end
else
label4.Caption: = inttostr (vremi); / / зворотний відлік
end;
end.
2.5 Тестування програми
Для тестування програми були пройдені всі тимчасові етапи.
Таблиця 3
Тест на час | Кількість правильно набраних слів |
новачок | 20 |
досвідчений | 15 |
Вищий клас | 8 |
Вид програми у випадковий момент роботи наведено на рисунку 5
Рис. 5 Вікно програми у випадковий момент гри
2.6 Умови виконання та виконання програми
Цей додаток, розроблене в Delphi, здатне працювати на персональних комп'ютерах з мінімальними вимогами Pentium 100, оперативною пам'яттю 32 Мб, операційним середовищем Windows.
Запустити програму можна також як і будь-яке інше. Вікно програми завантажиться і з'явиться в центрі екрану. Для роботи з програмою «Навчися друкувати» необхідно ввести в текстове вікно, запропоноване слово і натиснути на клавішу «enter», або якщо ви добре друкуєте вибрати з випадаючого меню «на час» у лівому верхньому кутку екрану один з трьох запропонованих варіантів підходить вашому рівню швидкості набору тексту. Для виходу з програми необхідно натиснути кнопку «завершити» або клацнути лівою кнопкою миші по хрестику в правому верхньому куті екрану. Для обнулення результатів натисніть клавішу «скидання».
У розділі описуються (керівництво ГОСТ 19.505-79 1)
Висновок
Додатком є дуже простий варіант програми, яка навчає роботі з клавіатурою.
Щоб слова, що виводяться на форму, щоразу змінювалися, використовується процедура генерації випадкових чисел і за допомогою оператора вибору за кількістю вибирається слово, але випадковий вибір може повторюватися, тоді на екрані поспіль йдуть два однакових слова. У програмі використовується досить проста перевірка тексту введеного користувачем в текстове вікно, ніякої фільтрації символів, що вводять немає, текст звіряється зі словами, закладеними у програмі, якщо таке слово є, то воно зараховується як правильне. Перевірка користувача на швидкість друку реалізовано в додатку за допомогою таймера. При виборі однієї з клавіш зі списку «на час», таймер задає проміжок часу, за який користувач повинен набрати якомога більше слів.
Для того, щоб користувач знав, скільки часу в нього залишилося, на форму виведений зворотний відлік часу таймера. Щоб з програмою було цікавіше працювати, у форму завантажуються дві картинки, одна при створенні форми інша при виборі випадаючого меню «на час».
Для зменшення розміру виконуваного файлу картинки ігри завантажуються при запуску гри, але через це збільшується кількість файлів необхідних для функціональності програми.
Можна ускладнити програму, реалізувавши фільтрацію символів, що вводять, ускладнити систему оцінок за швидкість роботи з клавіатурою. Створити редактор, який підказував, у яких словах користувач зробив помилки. Якщо розробляти програму для дітей, то можна зробити більш барвистий інтерфейс, супроводжуючу музику, звуки натискання клавіш, при проходженні чергового тестування призову анімацію.
Всі ці модифікації викликали б більший інтерес до гри.
Література
Ємеліна Є.І. Основи програмування мовою Паскаль. М., 1997.
Мануйлов В. Г. Розробка програмного забезпечення на Паскалі. М., 1998.
Фаронов В. В. Турбо Паскаль 7.0. М., 1998
Культін М. Програмування на Object Pascal. Київ, 1998.
Федоров А. Г. Delphi 3.0 для всіх. М., 1998.
Дарахвелідзе П., Марков Е. Програмування в Delphi 4.СПб.: БХВ. СПб., 1999
Роб Баас, Майк Фервай, Хайдемарі Гюнтер. Delphi 4. Повне керівництво. - К.: Видавнича група BHV, 1999
Вивчаємо Delphi. - СПб.: Пітер, 2000. - 352 с.: Іл.
Олександрівський А. Д. Delphi 5.0. Розробка корпоративних додатків. - М.: ДМК, 2000. - 512 с.: Іл. (Серія «Для програмістів»).
Delphi: швидкий старт. - СПб.: БХВ - Петербург, 2002. - 288 с.: Іл.
Turbo Pascal / С.А. Немнюгин. - СПб: Видавництво «Пітер», 2000. - 496 с.: Іл.
Віктор Пестриков Артур олійниць DELPHI на прикладах Санкт-Петербург 2005р.
Turbo Pascal в задачах і програмах. - СПб.: БХВ - Петербург,, 2002. - 560 с.: Іл.
Микита Культін Основи програмування на DELPHI 7.
1 Для програмування програми «навчися друкувати» використовувалася середовище Delphi 7.
1 Для дотримання виду тексту програми з правильними відступами як це прийнято на мові Pascal використовуються нестандартні форматування і розміри шрифту.
1