Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Зміст
Вступ 2
1 Аналітичний розділ 4
2 Побудова інформаційно-математичної моделі задачі 5
3 Алгоритм задачі 6
4 Визначення структури даних 9
5 Розробка інтерфейсу програми з користувачем 10
6 Складання коду програми 12
7 Реалізація проекту у візуальному середовищі 16
8 Аналіз програми 20
9 Тестування програми 21
10 Інструкція з експлуатації програми 22
11 Аналіз отриманих результатів 24
Висновок 26
Література 27
Додаток А 28
Вступ
В наш час життя без компютерів майже неможливо. Компютери необхідні вдома, на виробництві, в банківській справі, в кіноіндустрії і ще багато-багато де. Вони відкрили якісно новий етап в житті і розвитку людської цивілізації. Проте інформацію, яка міститься на одному компютері, досить важко, особливо при великих обємах інформації, перенести на інших інший компютер для подальшої роботи. Ці труднощі значно знижували продуктивність праці на компютері, але вони майже повністю відпали з появою компютерних мереж. Компютерні мережі відкрили зовсім нові і значно ширші можливості використання компютерів. Тепер компютери це не тільки засоби для обробки інформації, це також засоби для отримання та обміну інформацією.
Але завжди особливою популярністю користуються ігрові програми. Це можна обяснити декількома аспектами: ну по-перше, ігрові програми дають можливість розслабитись користувачеві, відвернути увагу від буденного, клопіткого життя, тобто граючи у якусь цікаву гру, людина ніби відходить від теперішньої реальності і попадає в те, інше, віртуальне життя, в якому поставлені інші завдання, і сутність життя. По-друге, дають можливість відчути ті емоції, враження, які в нашому житті не є реальними, або за тих чи інших причин не зможемо відчути.
При складанні програм використовуються різні мови програмування, а також різні оболонки для програмування на цих мовах. Однією з таких оболонок є Delphi. Delphi є середовищем розробки програм, яке використовує багато передових ідей і концепцій, закладених в графічному інтерфейсі Windows. Як відомо, середовище розробки великою мірою визначає ефективність роботи програміста. У середовищі програмування Delphi є всі необхідні інструменти для того, щоб створювати повноцінні програми. Писати, компілювати і тестувати програму все це можна робити, не виходячи з Delphi.
Саме разом з Delphi ви відчуєте себе впевненими у програмуванні для Windows. Названа як система швидкої розробки додатків, або ж RAD, Delphi є генератором ефективного коду, конструктором візуальних додатків і інструментом для баз даних, який є легким в опануванні і водночас потужнім у використанні.
Для опанування Delphi зовсім не потрібно бути фахівцем в галузі computer science, та якщо ви знаєте Pascal, C, C++, або Visual Basic, це вам стане в нагоді.
Технологія роботи у середовищі Delphi базується на ідеях обєктно-орієнтованого та візуального програмування. Ідея обєктно-орієнтованого програмування полягає в інкапсуляції (обєднанні) даних і засобів їх опрацювання (методів) у тип, який називається класом. Конкретною змінною певного класу і є обєкт. Прикладами обєктів можуть бути елементи керування у вікні: кнопки, списки, текстові поля тощо. Середовище візуального програмування Delphi це графічна автоматизована оболонка над обєктно-орієнтованою версією мови Паскаль (Object Pascal). Якщо у мові Паскаль структурними одиницями є дані та команди, то тут такою структурною одиницею є візуальний обєкт, який називається компонентом. Автоматизація програмування досягається завдяки можливості переносити компонент на форму (у програму) з палітри компонентів і змінювати його властивості, не вносячи вручну змін до програмного коду.
Даний дипломний проект полягає у створенні інтелектуальної гри «Гаряче крісло», основа якої складає загальну ерудицію людини, тобто на знання людини у різних сферах життя, науки та інших інтелектуально з концентрованих центрах освіти.
1 Аналітичний розділ
На сьогодні досить великого розвитку набули і все далі набувають компютерні технології. Існує багато компютерних програм, які виконують різноманітні функції і застосовуються в різних сферах нашого життя. Також є програми, які ми використовуємо в повсякденному житті. Наприклад програми для обміну електронною поштою, програми для малювання, креслення, створення обємних фігур тощо.
Велику частину розроблених прикладних програм займають різноманітні ігри, адже майже на кожному персональному компютері, що стоїть дома є хоча б одна якась гра. Ігри виконують роль розрядника, тобто сидячи за компютером та граючи у гру, користувач ніби відривається від цього світу і поринає у той, що демонструє гра.
Завданням даного дипломного проекту є розробити гру ”Гаряче крісло”. Суть цієї гри полягає у тому, що є три гравця, один ведучий, його роль полягає у тому, що він має донести до іншого гравця питання, яке випало, та чотири варіанти відповіді до відповідного питання.
Інші три гравці, так скажімо по черзі пробують відгадати, питання. Якщо перший гравець не знає відповіді на питання він передає хід іншому, гравцю (не ведучому), і той теж пробує відгадати вірну відповідь, у разі якщо, хтось не вірно відповідає, то усі троє програють, у іншому випадку виграє той, хто дає вірну відповідь на останнє запитання.
Аналоги даної гри вже є розробленими, і можна зустріти у мережі Інтернет, а також можна переглянути, однойменну передачу по телевізору.
Реалізація даного дипломного проекту буде відбуватися у середовищі програмування Delphі, і використовуватимуться стандартні компоненти середовища для створення зручного і зрозумілого інтерфейсу гри.
2 Побудова інформаційно-математичної моделі задачі
Для створення певного обєкту чи розвязання конкретної задачі, необхідно побудувати її інформаційно-математичну модель, тобто сукупність послідовностей різних дій, які будуть реалізовані в процесі написання програми. Етап побудови інформаційної моделі задачі полягає у досліджені предметної ділянки задачі та визначені вхідних даних, способів їх зібрання та обробки, а також зясуванні вихідних форм, документів та звітів.
Даний проект буде працювати за наступним принципом: одразу після завантаження гри появиться вікно програми в якому є можливість вибрати три режими програми: редактор питань, перегляд рекордів гри та звісно пункт для того щоб розпочати нову гру.
Принцип розробки даного проекту буде базуватись на роботі з файлами, тому що логічно усі питання та відповіді зберігати у файлах, щоб їх можна було використати декілька разів. Файли будуть створюватись з використанням спеціального редактора запитань, який є однією із складових програми.
Потрібно розробити зручний та ігровий інтерфейс програми, який буде вписуватись у суть гри.
Після створення нової гри перед гравцем на екрані появиться запитання та відповідні йому чотири варіанти відповіді. Далі гравець має обрати один із варіантів, який на його думку буде вірною відповіддю на запитання, тому зрозуміло, що вхідними даними будуть натисненні варіанти відповіді. В залежності від того чи була вибрана вірна відповідь, буде залежити чи гра продовжиться чи закінчиться.
3 Алгоритм задачі
Алгоритм послідовність дій, які необхідно виконати для оброблення вихідних даних і здобуття відповідних результатів. Алгоритм вказує, які операції обробки даних і в якій послідовності необхідно виконати для одержання розвязків задачі.
Кожному алгоритму властиві такі властивості: результативність, визначеність, масовість.
Базові структури алгоритмів зображуються у вигляді блок-схеми.
Блок-схема зображення алгоритму при допомозі геометричних фігур (блоків), кожна з яких виконує певну дію.
Існують різні алгоритми, які відображають такі обчислювальні процеси:
Рисунок 2 - Блок-схема алгоритму зберігання даних у файл
Рисунок 3 - Алгоритм перевірка вибору питань.
4 Визначення структури даних
Структура даних це ті змінні та типи, які використовуються програмою для її роботи.
Зміна це ділянка оперативної памяті компютера, до якого можна звернутись за унікальним імям, де зберігається значення деякої величини .
Змінні можуть бути як локальними, так і глобальними. Різниця між ними полягає в тому, що змінні, описані як глобальні, діють в усіх підпрограмах модуля, в якому вони описані. На відміну від глобальних, локальні змінні діють лише в підпрограмі, в якій вони описані. Глобальний опис змінних записується на початку модуля в розділі оголошень; локальні змінні описуються безпосередньо в самій підпрограмі.
Для створення даного проекту було створено власний тип типу запис, який містить атрибути мішеней і має наступну структуру:
rec=record
num:integer;
ask:string[255];
p1, p2, p3,
good:string[90];
end;
Якщо ж детально розібрати даний запис, то буде визначено, що num номер питання по порядку, ask зміст запитання, p1, p2, p3, good - відповідно три хибні варіанти відповідей та одна істина.
Опишемо призначення змінних розроблюваної програми так як зображено в таблиці1:
Таблиця 1 Перелік і призначення змінних модуля UnіТ3
Назва змінної |
Тип змінної |
Призначення |
ar |
Масив типу rec |
Масив що зберігає у собі усі прочитані запитання із файлу |
an |
Масив типу Byte |
Масив що зберігає у собі позначення на те чи вибиралось питання |
f |
File of rec |
Файлова зміна для зчитування даних із файлу |
Level |
Byte |
Зберігає значення кількості набраних балів, рівень |
Nr, nn |
Integer |
Зберігають поточні елементи у масивах |
5 Розробка інтерфейсу програми з користувачем
Розробка інтерфейсу є важливим етапом проектування програмного продукту, оскільки від того наскільки буде зрозумілий зовнішній вигляд і простота у користуванні залежить чи обере користувач нашу програму чи програму іншого розробника.
З вдосконаленням різноманітних програмних виробів, вдосконалюється інтерфейс програми з користувачем. Інтерфейс це механізм, який допомагає програмі взаємодіяти з користувачем.
Для того, щоб розробити інтерфейс майбутньої програми спершу потрібно створити проект, потім необхідно на форму в Delphi перетягнути з панелі інструментів компоненти та зручно розташувати їх на формі, так як зображено на рисунку 3.
Під час створення головної форми гри були використані наступні компоненти:
Image1: TImage фонове зображення;
Image2..5: TImage призначені для відображення у грі поля відповідних варіантів відповідей;
Panel1..3: TPanel для компонування даних на формі;
Label1..8: TLabel для виведення певної інформації на екран для користувача, а саме текст варіантів відповідей ;
Image6,7: TImage для відображення на панелях заднього фону, що дещо відрізняється від фонового зображення форми.
Image8: TImage для відображення не заповненої шкали гри, тобто картинка не буде заповнена кольорами;
Image9: TImage для відображення заповненої шкали гри та так само як Image8 буде розташована на Panel1;
Рисунок 3 Вигляд форми програми на етапі проектування
6 Складання коду програми
Процедури та функції представляють собою важливий інструмент мов програмування, який дозволяє писати добре структуровані програми. В структурованих програмах зазвичай легше прослідковується основний алгоритм, їх неважко зрозуміти будь-якому читачеві, вони легші при налагодженні і менш чуттєві до помилок програмування. Всі ці властивості являються результатом важливої особливості процедур (функцій), кожна з яких представляє собою багато в чому самостійний фрагмент програми, повязаний з основною програмою лише за допомогою кількох параметрів. Самостійність процедур (функцій) дозволяє локалізувати в них всі деталі програмної реалізації тої чи іншої алгоритмічної дії і тому зміна цих деталей, наприклад, в процесі відлагодження зазвичай не приводить до змін в основній програмі.
Код програми пишеться на конкретній мові програмування. Так як даний проект написаний у візуальному середовищі Delphi 7.0, то мова, яка використовується для написання цієї програми це Object Pascal.
Нижче приведені назви основних функцій та процедур, що будуть реалізовані в даному проекті:
procedure FormActivate(Sender: TObject); - виконання ряд дій, які відповідно виконаються при завантажені форми;
procedure Image1Click(Sender: TObject) призначення цієї події, обробка першого варіанту відповіді;
procedure Image3Click(Sender: TObject) призначення цієї події, обробка другого варіанту відповіді;
procedure Image2Click(Sender: TObject) призначення цієї події, обробка третього варіанту відповіді;
procedure Image4Click(Sender: TObject) призначення цієї події, обробка четвертого варіанту відповіді;
procedure Panel3Click(Sender: TObject) при виборі підказки 50 на 50;
procedure clean очищає усі необхідні параметри гри, для того щоб можна було розпочати гру заново;
procedure LoadarrRND в даній процедурі відбувається випадковий вибір запитання із тих що було прочитано із файлу та перевірка на те, щоб питання могло випасти лише один раз;
procedure LoadFileN(n:byte) призначення даної процедури полягає у зчитуванні даних із типованого файлу і запису в масив для подальшої роботи;
procedure LoadRND для того щоб у випадковому порядку розставити варіанти відповідей;
procedure Choose(n:byte) перевірка на те, чи гравець вибрав вірну відповідь на конкретне запитання;
procedure Lose процедура, яка виконується у разі невірного вибору відповіді, тобто коли гравець програє гру;
procedure FiftyFifty призначення цієї процедури полягає у тому, щоб із чотирьох варіантів відповідей забрати два не вірних варіанта;
procedure select(img:Timage; n:byte) - для зміни зображення заднього фону вибраного варіанту відповіді;
Повний код програми наведено в додатку А до пояснювальної записки
7 Реалізація проекту у візуальному середовищі
Для реалізації даного проекту було обрано середовище візуального програмування Borland Delphi 7.0, яке є простішим середовищем для розробки прикладного програмного забезпечення.
Для власне реалізації проекту потрібно виконати наступні дії:
Форма одразу після розміщення на ній компонентів набуде такого вигляду як вказано в розділі „Розробка інтерфейсу програми з користувачем”
Далі змінимо деякі властивості компонентів, наступним чином: у відповідні компоненти відображення графічних зображень завантажимо необхідні картинки, для цього скористувавшись властивістю Picture. Також зображення потрібно розтягнути на усю поверхність(форми, панелі), для чого необхідно скористуватись наступними властивостями компоненти Image:
Також в проекті використаємо компоненту XPManifest1, яка надасть програмі дещо вишуканішого стилю.
Далі відповідним компонентам, що відповідають за відображення тексту також надамо певні текстові значення. Після виконаних дій головна форма має бути схожою так як зображено на рисунку 4.
Рисунок 4 зображення головної форми гри після зміни властивостей
Також потрібно розробити, ще один модуль програми редактор запитань, в якому будуть використані стандартні компоненти, для яких змінені властивості полягають у зміні розташування, кольору та тексту.
8 Аналіз програми
Аналіз програми є дуже важливим етапом проектування, оскільки на цьому етапі потрібно визначити основні її переваги та недоліки.
Розроблена програма є самостійним продуктом і запускається з операційної системи сімейства Windows.
Програма складається з декількох форм, що значно може утруднити використання даної програми, але вдалий інтерфейс гри полегшує користувачу орієнтування в можливостях програми, оскільки всі потрібні елементи керування розміщені в зрозумілих та швидко доступних місцях.
До переваг даного програмного продукту можна віднести те, що він виконує багато функцій, які були покладені на нього в завданні на проект, а також дуже мальовничий інтерфейс гри, на що неможна не звернути уваги, збереження результатів гри і можливість відредагувати базу запитань програми, що збільшує зацікавленість гри.
До недоліків можна віднести відсутність файлу довідки, тобто що користувач не зможе нікуди звернутись, ні ніякий документ, щоб зрозуміти принципи користування даною програмою.
Також до недоліків віднесемо відсутність змоги підключення до локальної мережі, що не дозволяє грати у гру на різних компютерах.
Ще одним із недоліків це відсутність звукового супроводу, тобто щоб додало ще значного плюсу даній грі, адже відповідно правильно підібраний звук, значно підвищує емоції до процесу гри, надає користувачу більшої зацікавленості та азарту.
В цілому програма даного проекту працює коректно, та виконує майже всі поставлені завдання.
9 Тестування програми
Тестування це сукупність дій, яка містить початкові дані, що перевіряються, та відповідні їм еталонні результати, що використовуються для виявлення помилок у програмі.
Існують різні види тестування програм. Аварійні тести використовуються для перевірки реакції програми на виникнення ситуацій, повязаних з хибними даними, що надходять на обробку. Комплексні тести перевіряють правильність роботи усіх модулів програми після їх обєднання.
З проблемами тестування тісно повязані питання складання програмного виробу, до складу якого входить багато окремих компонентів. Насамперед це стосується проблем структурного тестування. Найкращі результати, як свідчать статистичні дані, дає застосування низхідного методу тестування: вводимо вхідні дані, отримуємо результат та аналізуємо його. Наприклад, вводимо назву виробу, норму витрат та кількість виробів і перевіряємо обчислену потребу матеріалу.
Для проведення тесту спочатку перевіряємо чи відкривається і закривається програма. Після кількох повторів даної операції не виявлено ніяких проблем при виконанні цих дій. Під час тестування програми перевірено всі можливості програми, звязки в її структурі, працездатність всіх кнопок, розміри, положення, структура форм та компонентів, які вони включають в себе. Кожен користувач може швидко зорієнтуватися в функціях та можливостях даної гри завдяки простому інтерфейсу, розрахованому на середньостатичного користувача.
Вдале тестування, яке показало задоволення всіх поставлених вимог, означає можливість запуску програмного продукту в користування.
10 Інструкція з експлуатації програми
Для стабільної роботи програмного продукту компютер повинен відповідати таким характеристикам:
Для того щоб розпочати гру «Гаряче крісло», на сам перед потрібно скопіювати на компютер папку із грою, пересвідчитись у тому що компютер має необхідну конфігурацію та запустити виконуваний файл Otlichnik.exe.
Після запуску гри перед користувачем появиться початкове вікно(рис. 5), в якому буде представлений користувачу вибір режиму програми, а саме: розпочати нову гру, перейти до редагування запитань та можливість переглянути результати попередніх гравців, які грали у дану гру.
Ну спершу відредагуємо базу запитань для гри, щоб можна було розпочати нову гру, для цього виберемо «Редактор питань». Перед користувачем появиться вікно наступного змісту(рисунок 6): з верху вікна розташовані перемикачі для того, щоб вибрати рівень складності запитання, адже чим довше гравець грає тим складніші запитання йому задаються. Трохи нижче знаходиться текстове поле у яке потрібно ввести запитання. Відповідно нижче знаходяться, ще чотири текстових поля для того щоб ввести варіанти відповіді.
Після того як усі поля заповнені, потрібно натиснути кнопку «Додати питання».
Рисунок 5 Вікно вибору режиму програми
Повернемось назад на початкове вікно, та створимо нову гру натиснувши на відповідний напис «Нова гра».
Рисунок 6 Редактор питань для гри.
Після створення нової гри, користувач на моніторі побачить вікно з наступним змістом:
Рисунок 7 Головне вікно гри.
По середині екрану виводиться текст запитання, на яке гравець повинен дати вірну відповідь. Варіанти відповідей розташовані трішки нижче запитання та позначенні літерами (А, Б, В, Г).
Після вибору користувачем варіанту відповіді програма перевірить на правильність вибрану відповідь та відповідно відобразить поточний результат( рисунок 8), та при вірній відповіді виведеться наступне питання, а у протилежному разі гра закінчиться.
Рисунок 8 Вивід результату гри
При закінчені гри, програма запропонує зберегти свій результат, якщо користувач забажає, то він побачить наступне вікно, в якому зможе ввести свої дані для того щоб вони збереглися.
Рисунок 9 Перегляд попередніх результатів гри.
11 Аналіз отриманих результатів
Після завершення програмування ми можемо перевірити працездатність програми, тобто чи буде виконувати програма всі запрограмовані дії та процедури. Аналіз отриманих результатів краще провести розглянувши програмний продукт під час виконання.
Отже програма має зручний інтерфейс, що дозволяє користуватися цією програмою без усіляких складностей.
Одною з найбільших проблем було досягти зміни запитань у довільному порядку, тому що запитання при кожній новій грі питання йшли ті самі і у тому самому порядку та ще й повторювалися.
Після того як було продумано алгоритм загадування запитань у випадковій послідовності та введення вхідних даних, було написано програмний код, який забезпечує коректну і логічну роботу гри «Гаряче крісло».
Але всі ці помилки були виправлені програма працює видає вірний результат, і можна вважати, що поставлене завдання проекту виконане.
Висновок
Для розробки даної програми було необхідно продумати та пояснити кожний крок розробки програми. Для програмування використовувалась мова високого рівня Delphi.
Спочатку для створення цієї програми було продумані всі завдання, які повинні були реалізовані. Для того щоб майбутня програма працювала логічно і були знайдені шляхи вирішення та реалізації принципів роботи, розроблено інформаційно-математичну модель.
Були складені блок-схеми основних алгоритмів програми для зясування логіки роботи та визначили структуру даних, яка була використана у програмі. Далі була безпосередня реалізація програми, де розробили інтерфейс, реалізовували процедури програми, тобто вже зробили саму програму. Далі проаналізували її чи вона правильно функціонує і чи усі процедури реалізовані.
Були складені вимоги до компютера для коректного перебігу програми та написана інструкція по експлуатації програми.
При розробці даного проекту, було використано велику кількість літератури, з метою покращення своїх знань та навичок. Використовувалась літератури не тільки про мову програмування Delphi, а також інші мови програмування. Література використовувалась, також з метою докладнішого вивчення властивостей різних елементів. Значно покращились навики, щодо розробки програм на мові програмування Delphi.
До цього проекту була розроблена пояснювальна записка, згідно самостійної розробки аналогічного проекту в середовищі програмування. Дана записка містить одинадцять розділів для зручної розробки проекту.
Література
Додаток А Вихідні тексти програми
program Otlichnik;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4},
Unit5 in 'Unit5.pas' {Form5},
Unit6 in 'Unit6.pas' {Form6},
Unit7 in 'Unit7.pas' {Form7};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm6, Form6);
Application.CreateForm(TForm7, Form7);
Application.Run;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
time:integer;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
time:=0;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(time);
if time = 2 then
begin
form2.Show;
Timer1.Enabled:=false;
Form1.Enabled:=false;
end;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg;
type
TForm2 = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Image6: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Image1Click(Sender: TObject);
procedure Image6Click(Sender: TObject);
procedure Image5Click(Sender: TObject);
procedure Image4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit3, Unit4, Unit6;
{$R *.dfm}
procedure TForm2.Image1Click(Sender: TObject);
begin
halt
end;
procedure TForm2.Image6Click(Sender: TObject);
begin
form4.ShowModal;
end;
procedure TForm2.Image5Click(Sender: TObject);
begin
form3.Show;
end;
procedure TForm2.Image4Click(Sender: TObject);
begin
form6.Button1.Enabled:=false;
form6.ShowModal;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CheckLst, ExtCtrls, Grids, Buttons, jpeg, XPMan;
type
rec=record
num:integer;
ask:string[255];
p1,
p2,
p3,
good:string[90];
end;
TForm3 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Image3: TImage;
Image1: TImage;
Image4: TImage;
Image2: TImage;
Label1: TLabel;
L1: TLabel;
L3: TLabel;
Label4: TLabel;
L2: TLabel;
Label6: TLabel;
L4: TLabel;
Label8: TLabel;
Memo1: TMemo;
XPManifest1: TXPManifest;
Image5: TImage;
Image6: TImage;
Image7: TImage;
Shape1: TShape;
procedure FormActivate(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure Image3Click(Sender: TObject);
procedure Image2Click(Sender: TObject);
procedure Image4Click(Sender: TObject);
procedure Panel3Click(Sender: TObject);
private
{ Private declarations }
public
procedure clean;
procedure LoadRND;
procedure LoadFileN(n:byte);
procedure LoadarrRND;
procedure Choose(n:byte);
procedure Lose;
procedure FiftyFifty;
procedure select(img:Timage; n:byte);
{ Public declarations }
end;
var
Form3: TForm3;
f:file of rec;
level:byte;
r:rec;
ar:array [1..1000] of rec; nr:integer;
an:array [1..1000] of integer; nn:integer;
implementation
uses Math, Unit5, Unit6, Unit7;
{$R *.dfm}
procedure TForm3.select(img:TImage; n:byte);
begin
img.Picture.LoadFromFile('Картинки\'+inttostr(n)+'.bmp');
end;
procedure TForm3.FiftyFifty;
var i:byte;
begin
for i:=1 to 4 do
if ((FindComponent('L'+inttostr(i))as TLabel).Caption = r.p1) or ((FindComponent('L'+inttostr(i))as TLabel).Caption = r.p2) then
(FindComponent('L'+inttostr(i))as TLabel).Caption:='';
end;
procedure TForm3.Lose;
begin
if MessageDlg('Ви програли! Зберегти результат?', mtInformation, [mbYes,mbNo], 0)=mrYes then form6.ShowModal;
end;
procedure TForm3.LoadFileN(n:byte);
begin
nr:=0;
nn:=0;
case n of
2:AssignFile(f,'two.bal');
3:AssignFile(f,'three.bal');
4:AssignFile(f,'four.bal');
5:AssignFile(f,'five.bal');
end;
reset(f);
while not(eof(f)) do
begin
nr:=nr+1;
read(f,r);
ar[nr]:=r;
end;
CloseFile(f);
end;
procedure TForm3.Choose(n:byte);
var i:byte;
begin
Form7.ShowModal;
if (FindComponent('L'+inttostr(n))as TLabel).Caption=r.good then
begin
level:=level+1; select((FindComponent('Image'+inttostr(n))as Timage),6 );
end
else
begin select((FindComponent('Image'+inttostr(n))as Timage),4 );
for i:=1 to 4 do
if (FindComponent('L'+inttostr(i))as TLabel).Caption=r.good then select((FindComponent('Image'+inttostr(i))as Timage),6 );
Lose;
Close;
end;
form5.Label2.Caption:=inttostr(level-1);
form5.ShowModal;
if level=4 then LoadFileN(3);
if level=7 then LoadFileN(4);
if level=10 then LoadFileN(5);
if level=13 then begin
if MessageDlg('Ви ОтлІчнІк! Зберегти результат?', mtInformation, [mbYes,mbNo], 0)=mrYes then
Form3.Tag:=12;
form6.ShowModal;
close;
end;
LoadarrRND;
LoadRND;
Image6.Height:=Image6.Height-40;
Form3.Tag:=level-1;
end;
procedure TForm3.clean;
var i:integer;
begin
for i:=1 to 1000 do
an[i]:=0;
end;
procedure TForm3.LoadarrRND;
var i,j:integer;
b:boolean;
begin
randomize;
if nn=nr then exit;
repeat
i:=RandomRange(0,nr)+1;
b:=false;
for j:=1 to nr do
if an[j]=i then b:=true ;
until b=false;
nn:=nn+1;
an[nn]:=i;
r:=ar[i];
end;
procedure TForm3.LoadRND;
var i,j,g:byte;
a:array [1..4] of byte;
b:boolean;
begin
for j:=1 to 4 do a[j]:=0;
randomize;
g:=0;
while g<4 do begin
i:=RandomRange(0,4)+1;
b:=false;
for j:=1 to 4 do
if a[j]=i then b:=true ;
if b then
else
begin
g:=g+1;
a[g]:=i;
case g of
1:(FindComponent('L'+inttostr(i))as TLabel).Caption:=r.p1;
2:(FindComponent('L'+inttostr(i))as TLabel).Caption:=r.p2;
3:(FindComponent('L'+inttostr(i))as TLabel).Caption:=r.p3;
4:(FindComponent('L'+inttostr(i))as TLabel).Caption:=r.good;
end;
end;
end;
Memo1.Text:=r.ask;
for i:=1 to 4 do
select((FindComponent('Image'+inttostr(i))as Timage),3 );
end;
procedure TForm3.FormActivate(Sender: TObject);
begin
level:=1;
LoadFileN(2);
Image6.Height:=449;
clean;
LoadarrRND;
LoadRND;
Shape1.Visible:=false;
end;
procedure TForm3.Image1Click(Sender: TObject);
begin
select(Image1,5 );
Choose(1);
end;
procedure TForm3.Image3Click(Sender: TObject);
begin
select(Image3,5 );
Choose(3);
end;
procedure TForm3.Image2Click(Sender: TObject);
begin
select(Image2,5 );
Choose(2);
end;
procedure TForm3.Image4Click(Sender: TObject);
begin
select(Image4,5 );
Choose(4);
end;
procedure TForm3.Panel3Click(Sender: TObject);
begin
FiftyFifty;
Shape1.Visible:=true;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls;
type
rec=record
num:integer;
ask:string[255];
p1,
p2,
p3,
good:string[90];
end;
TForm4 = class(TForm)
Memo1: TMemo;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
SpeedButton1: TSpeedButton;
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
procedure FormActivate(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure SpeedButton1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
procedure clear;
procedure readf;
procedure savef;
{ Public declarations }
end;
var
Form4: TForm4;
f:file of rec;
arr:array [1..100] of rec;
r:rec;
n:integer;
implementation
{$R *.dfm}
procedure TForm4.clear;
begin
Memo1.Clear;
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
end;
procedure TForm4.readf;
var i:integer; rc:rec;
begin
reset(f);
n:=0;
while not(eof(f)) do
begin
n:=n+1;
read(f,rc);
arr[n]:=rc;
end
end;
procedure TForm4.savef;
var i:integer; rc:rec;
begin
for i:=1 to n do
begin
rc:=arr[i];
write(f,rc);
end;
end;
procedure TForm4.FormActivate(Sender: TObject);
begin
clear;
n:=0;
end;
procedure TForm4.RadioButton1Click(Sender: TObject);
begin
SpeedButton1.Enabled:=true;
if n<>0 then savef;
AssignFile(f,'two.bal');
readf;
rewrite(f);
end;
procedure TForm4.RadioButton2Click(Sender: TObject);
begin
SpeedButton1.Enabled:=true;
if n<>0 then savef;
AssignFile(f,'three.bal');
readf;
rewrite(f);
end;
procedure TForm4.RadioButton3Click(Sender: TObject);
begin
SpeedButton1.Enabled:=true;
if n<>0 then savef;
AssignFile(f,'four.bal');
readf;
rewrite(f);
end;
procedure TForm4.RadioButton4Click(Sender: TObject);
begin
SpeedButton1.Enabled:=true;
if n<>0 then savef;
AssignFile(f,'five.bal');
readf;
rewrite(f);
end;
procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);
begin
savef;
if SpeedButton1.Enabled=true then CloseFile(f);
end;
procedure TForm4.SpeedButton1Click(Sender: TObject);
begin
n:=n+1;
arr[n].ask:=Memo1.Text;
arr[n].p1:=Edit1.Text;
arr[n].p2:=Edit2.Text;
arr[n].p3:=Edit3.Text;
arr[n].good:=Edit4.Text;
arr[n].num:=n+1;
clear;
end;
procedure TForm4.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if length((sender as TEdit).Text)=20 then key:=#0;
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm5 = class(TForm)
Timer1: TTimer;
Label1: TLabel;
Label2: TLabel;
Shape1: TShape;
Panel1: TPanel;
procedure Timer1Timer(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
t:integer;
implementation
{$R *.dfm}
procedure TForm5.Timer1Timer(Sender: TObject);
begin
t:=t+1;
if t=1 then form5.Visible:=true;
if t=3 then begin Timer1.Enabled:=false; close; end;
end;
procedure TForm5.FormActivate(Sender: TObject);
begin
form5.Visible:=false;
t:=0;
Timer1.Enabled:=true;
end;
end.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm6 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Edit1: TEdit;
Button1: TButton;
Panel1: TPanel;
Button2: TButton;
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
uses Unit3, Unit5;
{$R *.dfm}
procedure TForm6.FormActivate(Sender: TObject);
begin
Memo1.Clear;Memo2.Clear; Edit1.Clear;
memo1.Lines.LoadFromFile('name.bal');
memo2.Lines.LoadFromFile('res.bal');
end;
procedure TForm6.Button1Click(Sender: TObject);
begin
memo1.Lines.Add(Edit1.Text);
memo2.Lines.Add(inttostr(form3.Tag));
memo1.Lines.SaveToFile('name.bal');
memo2.Lines.SaveToFile('res.bal');
Button1.Enabled:=false;
end;
procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Button1.Enabled:=true;
end;
procedure TForm6.Button2Click(Sender: TObject);
begin
close;
end;
end.
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm7 = class(TForm)
Timer1: TTimer;
Label1: TLabel;
Label2: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
t:integer;
implementation
{$R *.dfm}
procedure TForm7.Timer1Timer(Sender: TObject);
begin
t:=t+1;
if t=3 then begin Timer1.Enabled:=false; close; end;
end;
procedure TForm7.FormActivate(Sender: TObject);
begin
t:=0;
Timer1.Enabled:=true;
end;
end.
6
5
4
3
2
1
Вихід
Закрити файл
Записати дані у файл
і=1,1,N
Відкрити файл для запису
Вхід
Ні
Так
6
Збільшуємо кількість заданих запитань
4
Нема повторень
3
Від i=1 до nr
Так
Ні
9
Вихід
5
Запамятовуємо номер питання
2
Всі питання задавались?
1
Вхід