Гра "Пам’ять"

Розробка і обґрунтування технічного завдання, вимоги до програмної реалізації та користувача. Можливі варіанти зміни та вдосконалення програми. Початок загального алгоритму вирішення задачі. Структурні зв’язки між функціями програми, її тестування.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 14.03.2013
Размер файла 1,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Зміст

Вступ

1. Розробка і обґрунтування технічного завдання

1.1 Вимоги користувача

1.2 Вимоги до програмної реалізації

1.3 Функціональні можливості програми

1.4 Можливі зміни програми з метою вдосконалення

1.5 Варіантний аналіз і вибір методу вирішення основної задачі

2. Розробка структури програмної системи

2.1 Початок загального алгоритму вирішення задачі

2.2 Деталізація хвильового алгоритму

2.3 Структурні зв'язки між функціями програми

3. Програмна реалізація

4. Тестування і перевірка програми

4.1 Розробка тестів

4.2 Аналіз результатів роботи програми

Висновки

Список використаної літератури

Додаток А Текст програми

програма гра пам'ять алгоритм

Вступ

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

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

Однією з таких ігор є гра Пам'ять.

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

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

1. Розробка і обґрунтування технічного завдання

1.1 Вимоги користувача

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

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

1.2 Вимоги до програмної реалізації

Програма повинна відповідати вимогам користувача.

Мовою програмування обрана мова Delphi. Вона забезпечить програміста усіма необхідними, для реалізації програмної частини роботи засобами (написання класів, використання об'єктів).

Середовищем програмування обраноBorland Developer Studio, через те, що вона втілює новітні технології, які дозволяють програмісту розробляти програмні продукти більш швидкими та надійними, має дуже великий запас засобів для побудови прикладних програм та приємна у користуванні.

Програміст може використовувати стандартні функції мови програмування та створювати власні, підключати заготовочні файли даного компілятора та включати власні файли. Основна бібліотека, яка буде використовуватися у розробці програми - Visual Component Library (VCL).

Програма розробляється під операційні системи Microsoft Windows, а тому повинна мати стандартний графічний інтерфейс властивий усім Windows-програмам. Програмний комплекс повинен містити стандартні модулі і модулі користувача, процедури і функції користувача, файл, в якому міститиметься інформація про застосування програми.

1.3 Функціональні можливості програми

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

1.4 Можливі варіанти зміни та вдосконалення програми

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

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

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

Оновлення та розробка більш сучасного інтерфейсу з врахуванням ергономіки. Розробка стилю програми;

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

Написання додаткових функцій, таких як: можливість вибору рівня складності який залежить від кількості відображених картинок на екрані; при початку нової гри поле для введення інформації про гравця і подальший запис її до «таблиці результатів» з урахуванням затраченого часу на проходження рівня.

Написання додаткових новацій них вдосконалень: до гри можна застосувати інноваційні графічні технології з підключенням комп'ютерного гравця який веде паралельну гру до користувача з протистоянням в часі.

1.5 Варіантний аналіз та вибір методу вирішення основної задачі

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

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

Кожна програма залежить від алгоритмів і структур даних, але рідко буває потрібно винаходити нові алгоритми. Навіть у складній програмі, наприклад в компіляторі або web-браузері, структури даних здебільшого є масивами, списками, деревами і хеш-таблицями. Коли програмі потрібна витонченіша структура, вона, швидше за все, грунтуватиметься на цих простіших структурах. Відповідно, завдання програміста -- знати, які алгоритми і структури доступні, а також розуміти, як вибрати серед них потрібні [1]. Є лише невелика частина основних алгоритмів, які застосовуються практично в кожній програмі, -- це, перш за все, пошук і сортування, і навіть ці алгоритми часто включені в бібліотеки. Майже всі структури даних також зроблені на основі декількох фундаментальних структур. При виборі алгоритму потрібно зробити декілька кроків. По-перше, слід вивчити існуючі алгоритми і структури даних. Подумайте, який об'єм даних може обробити програма. Якщо завдання припускає скромні розміри даних, то вибирайте прості технології; якщо кількість даних може рости, то виключите рішення, що погано пристосовуються до цього зростання. Там, де можливо, використовуйте бібліотеку або спеціальні засоби мови. Якщо нічого готового не немає, то напишіть або дістаньте коротку, просту, зрозумілу реалізацію. Спробуйте її у дії. Якщо вимірювання показують, що вона дуже повільна, тільки тоді вам варто перейти до більш просунутих технологій. [3] Хоча є багато структур даних, частина яких просто необхідна для прийнятної продуктивності в певних умовах, більшість програм заснована на масивах, списках, деревах і хеш-таблицях. Кожна з цих структур підтримує набір операцій-примітивів, що зазвичай включає: створення нового елементу, пошук елемента, додавання елементу куди-небудь, можливо, видалення елементу і застосування деякої операції до всіх елементів. [2] Для виконання поставленої задачі я придумував власний алгоритм.

2. Розробка структури програмної системи

2.1 Початок загального алгоритму вирішення задачі

Початок;

Ініціалізація і об'явлення змінних;

Запуск основної форми;

Перевірка використання пунктів меню з подальшим викликом відповідних їм функціям.

Кінець.

2.2 Деталізація алгоритму

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

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

Спочатку ми створюємо масив m_nA який складається з двадцяти одного елемента. Двадцять елементів відповідають за збереження в них ідентифікатора відповідного малюнка. У двадцять першому записаний ідентифікатор пустого малюнка.

Також створимо змінну Result в яку записуватимемо кількість відкритих пар. Коли змінна досягне значення 10 гра буде завершеною.

Ім'я проекту - Kyrsova. Отже функція яка відповідає за відображення промальовки вікна знаходиться у класі CKyrsovaDlg і називається OnPaint(). Отже в ній робимо перевірку на попередні зміни на малюнки: ті малюнки які зараз перевернуті, відображають свій істинний зміст. Ті малюнки яким знайдені пари - не відображаються. У функції CKyrsovaDlg::OnMenuAbout() відбувається виклик відображення вікна About. У функції CKyrsovaDlg::OnMenuHelp() відбувається виклик відображення вікна Help. У функції CKyrsovaDlg::OnMenuNew() відбувається виклик відображення вікна New Game. В ній ми обнуляємо значення змінної ResultПотім у цій же функції ми заповняємо масив m_nA ідентифікаторами пустого (або вже знищеного) малюнка. Потім за допомогою функції rand() ми у довільному порядку заповняємо масив m_nA малюнками і виводимо на головне вікно з попереднтою перевіркою щоб у один і той самий елемент масива не було записане значення двічі та щоб кожен малюнок повторювався два рази. Далі у нас описана функція CKyrsovaDlg::OnLButtonUp яка визивається при натисненні лівої кнопки миші на головному вікні. У ній ми перевіряємо де натиснутв ліва кнопка миші і вираховуємо номер елемента масиву m_nA і вписуємо цей номер в змінну і. Якщо ліва кнопка миші натиснута на малюнку то ми перевіряємо що було записано у елементі масиву з попередньо визначеним номером. Якщо там записано ідентифікатор пустого малюнку чи натиснуто на той малюнок, який вже відкритий то проводиться вихід з функції. Якщо попередні умови не виконуються то ми перевертаємо малюнок і звіряємо значення m_nA[i] з попередньо натиснутим малюнком. Якщо ці значення рівні то забираємо обидва малюнки. У функції CKyrsovaDlg::TimerProc1() виконується теж саме що і в функції OnPaint(), а також перевіряється значення змінної Result, і якщо воно рівне десятьом то виводиться повідомлення про перемогу.

2.3 Структурні зв'язки між функціями програми

На початку програми робимо доступними бібліотеки за допомогою заголовних файлів: stdafx.h, CkyrsovaDlg.h, Kyrsova.h, afxwin.h, afxcall.h. Потім об'являємо класи, та описуємо методи цих класів.

Заголовочні stdafx.h, afxwin.h, afxcall.h файли підключаються автоматично середою при створенні каркасу програми. В них міститься прототипи функцій бібліотеки MFC та деякі значення-макроси зарезервовані директивою define.

В заголовочному файлі Kyrsova.h міститься головний клас програми CKyrsovaApp (наслідується від CWinApp). В цьому класі описаний метод InitInstance. Своїм запуском він активує головне вікно програми.

В KyrsovaDlg.h - клас головного вікна програми, в ньому містяться також методи для обробки отриманої інформації.

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

При натисканні кнопки «Вихід», викликається метод Close().

3. Програмна реалізація

Програма буде розроблятися засобами мови Delphi, в середовищі Borland Developer Studio.

Основний файл, з якого починається робота програми - MainMemoryForm.pas, в ньому створюється об'єкт класу CKyrsovaDlg (опис класу знаходиться у заголовочному файлі KyrsovaDlg.h). Цей клас наслідує усі властивості та методи класу CDialog, тобто отриманий клас - нащадок і являє собою модернізований клас діалогового вікна.

CKyrsovaDlg dlg; Створення об'єкту даного класу.

dlg.DoModal(); „Запуск форми” - тобто показ її користувачеві на екрані.

В програмі підключаються заголовочні файли stdafx.h, Kyrsova.h, KyrsovaDlg.h, CMySocket.h, afxwin.h, afxcall.h.

afxwin.h, afxcall.h, stdafx.h - в цих фалах містяться прототипи функцій, які потрібні для роботи з VCL (Visual Components Library) та деякими функціями операційної системи, в них також містяться директиви підключення інших заготовочних файлів.

Kyrsova.h - в цьому заголовочному фалі міститься опис класу програми - CKyrsovaApp, який наслідується від базового класу CWinApp (основний базовий клас програми).

KyrsovaDlg.h - містить опис класу головного вікна програми. Це клас наслідує методи і властивості від базового класу діалогових вікон CDialog.

4. Тестування і перевірка програми

4.1 Розробка тестів

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

Для такого роду програм не існує якихось однозначних тестів. Їх роботу можна перевірити тільки на практиці.

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

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

4.2. Аналіз результатів роботи програми

Сама програма являє собою гру з візуальним інтерфейсом, яка спрямована на поліпшення зорової пам'яті.

Помилок у програмі не виявлено.

Мал. 1.1 - Заставка і автор програми

Мал 1.2 - Головне меню програми

Мал к 1.3 - Вихідні дані, запит на рестарт гри

Висновки

Засобами мови програмування Delphi була cтворена гра Пам'ять, що спрямована на поліпшення зорової пам'яті.

Переваги - програма розроблена на мові Delphi, що забезпечило швидкодію програми та незначні її розміри.

Недоліки - великий обсяг необхідної пам'яті.

Список використаної літератури

Андре Ла Мот „Секрети програмування ігор”

Електронне видання „Ілюстрований самовчитель по практиці програмування”

Т.И. Зугельман Москва 2006г. „Полный справочник по Delphi”

С.В. Тополев “BDS - Руководство разработчика”

Додаток А

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

MainMemoryForm.pas

unit MainMemoryFormUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ImgList, ExtCtrls, StdCtrls, Buttons, ZastUnit;

type

TMainMemoryForm = class(TForm)

Image1: TImage;

Image2: TImage;

Image3: TImage;

Image4: TImage;

Image5: TImage;

Image6: TImage;

Image7: TImage;

Image8: TImage;

Image9: TImage;

Image10: TImage;

Image11: TImage;

Image12: TImage;

Image13: TImage;

Image14: TImage;

Image15: TImage;

Image16: TImage;

Image17: TImage;

Image18: TImage;

Image19: TImage;

Image20: TImage;

ImageList1: TImageList;

clicktimer: TTimer;

min: TTimer;

sec: TTimer;

Label1: TLabel;

timelabel: TLabel;

showtimer: TTimer;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

SpeedButton3: TSpeedButton;

procedure FormCreate(Sender: TObject);

procedure clicktimerTimer(Sender: TObject);

procedure secTimer(Sender: TObject);

procedure minTimer(Sender: TObject);

procedure showtimerTimer(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure SpeedButton3Click(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

private

{ Private declarations }

public

m_started : boolean;

m_ImgnumList : TList;

m_object, m_object2 : TObject;

m_x : longint;

m_block, m_showpoints : boolean;

m_min, m_sec : longint;

m_CurTime : string;

function RandomizeList(var ExceptList : TList; count, minvalue, maxvalue : longint) : boolean;

function FindObjectInItemsOfList(l:TList; n:longint):longint; // поиск объекта в списке

procedure OnNewGame;

procedure ApplyImages(toShow : boolean = false);

procedure OnClick2(Sender : TObject);

function CheckForFinish : boolean;

Procedure OnFinish;

procedure OnStart;

procedure OnShowTime;

procedure OnRestart;

procedure StartTimers;

procedure StopTimers;

end;

var

MainMemoryForm: TMainMemoryForm;

implementation

{$R *.dfm}

procedure TMainMemoryForm.FormCreate(Sender: TObject);

begin

m_ImgnumList := TList.Create;

m_object := TObject.Create;

m_object2 := TObject.Create;

ClickTimer.Enabled := false;

showTimer.Enabled := false;

min.Enabled := false;

sec.Enabled := false;

OnNewGame;

end;

procedure TMainMemoryForm.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

case key of

27 : close;

113 : OnRestart;

112 : ZastFormN.Run;

end;

end;

procedure TMainMemoryForm.minTimer(Sender: TObject);

begin

if m_min > 58 then

m_min := 0

else

inc(m_min);

end;

function TMainMemoryForm.RandomizeList(var ExceptList: TList; count, minvalue, maxvalue: Integer) : boolean; //Перемішування списку

var

x, x2, i, n : longint;

begin

randomize;

ExceptList.clear;

for i := 1 to Count do

begin

while True do

begin

x := random(maxvalue) + minvalue;

n := FindObjectInItemsOfList(ExceptList, x);

if n < 0 then

begin

ExceptList.Add(Tobject(x));

break;

end;

end;

end;

end;

procedure TMainMemoryForm.secTimer(Sender: TObject);

begin

if m_sec > 58 then

m_sec := 0

else

inc(m_sec);

end;

procedure TMainMemoryForm.showtimerTimer(Sender: TObject);

begin

OnShowTime;

end;

procedure TMainMemoryForm.SpeedButton1Click(Sender: TObject);

begin

OnRestart;

end;

procedure TMainMemoryForm.SpeedButton2Click(Sender: TObject);

begin

Close;

end;

procedure TMainMemoryForm.SpeedButton3Click(Sender: TObject);

begin

ZastFormN.Run;

end;

procedure TMainMemoryForm.clicktimerTimer(Sender: TObject);

begin

imagelist1.GetBitmap(0, TImage(m_object2).Picture.Bitmap);

TImage(m_object2).Repaint;

Timage(m_object2).Tag := 0;

imagelist1.GetBitmap(0, TImage(m_object).Picture.Bitmap);

TImage(m_object).Repaint;

Timage(m_object).Tag := 0;

m_x := -1;

m_block := false;

clickTimer.Enabled := false;

if CheckForFinish then

OnFinish;

end;

function TMainMemoryForm.FindObjectInItemsOfList(l:TList; n:longint):longint; // пошук обєкта в списку

var

i:longint;

begin

FindObjectInItemsOfList := -1;

for i:=0 to l.count-1 do

if longint(l[i])=n then

begin

FindObjectInItemsOfList :=i;

exit;

end;

end;

procedure TMainMemoryForm.OnNewGame;

var

i : longint;

s : string;

begin

m_started := false;

m_block := false;

TimeLabel.Caption := '00:00';

m_min := 0;

m_sec := 0;

RandomizeList(m_ImgnumList, 20, 1, 20);

ApplyImages;

end;

procedure TMainMemoryForm.ApplyImages(toShow : boolean = false);

var

x, n, i, j : longint;

begin

m_x := -1;

for i := 1 to 20 do

for j := 0 to self.ControlCount - 1 do

if self.Controls[j].Name = 'Image' + inttostr(i) then

begin

x := longint(TObject(m_ImgnumList[i-1]));

if x < 11 then

x := x

else

x := x - 10;

if toShow then

imagelist1.GetBitmap(x, TImage(self.Controls[j]).Picture.Bitmap)

else

imagelist1.GetBitmap(11, TImage(self.Controls[j]).Picture.Bitmap);

TImage(self.Controls[j]).Tag := x;

TImage(self.Controls[j]).OnClick := OnClick2;

TImage(self.Controls[j]).Repaint;

break;

end

else

continue;

end;

procedure TMainMemoryForm.OnClick2(Sender: TObject);

var

i, x : longint;

sName : string;

begin

if not m_started then

OnStart;

if m_block then

exit;

x := TImage(Sender).Tag;

if x = 0 then

exit;

if TImage(m_object).Name = Timage(sender).Name then

exit;

if m_x = -2 then

begin

imagelist1.GetBitmap(11, TImage(m_object).Picture.Bitmap);

TImage(m_object).Repaint;

imagelist1.GetBitmap(11, TImage(m_object2).Picture.Bitmap);

TImage(m_object2).Repaint;

m_x := -1;

end;

if m_x = -1 then

begin

imagelist1.GetBitmap(x, TImage(Sender).Picture.Bitmap);

TImage(Sender).Repaint;

m_object := Sender;

m_x := x;

exit;

end;

if m_x = x then

begin

m_object2 := Sender;

imagelist1.GetBitmap(x, TImage(Sender).Picture.Bitmap);

TImage(Sender).Repaint;

m_block := true;

clickTimer.Enabled := true;

end

else

begin

imagelist1.GetBitmap(x, TImage(Sender).Picture.Bitmap);

TImage(Sender).Repaint;

m_object2 := m_object;

m_object := Sender;

m_x := -2;

exit;

end;

end;

function TMainMemoryForm.CheckForFinish : boolean;

var

i : longint;

begin

result := false;

for i := 0 to self.ControlCount - 1 do

if (Tcontrol(self.Controls[i]).ClassType = TImage) and

(Tcontrol(self.Controls[i]).Tag <> 0) then

exit;

result := true;

end;

procedure TMainMemoryForm.OnFinish;

var

but : longint;

begin

m_started := false;

StopTimers;

m_ShowPoints := true;

OnShowTime;

ApplyImages(true);

but := MessageDlg('Гру завершено. Ви відкрили всі зображення за '+ #13 +

inttostr(m_min)+ ' хвилин і ' + inttostr(m_sec) + ' секунд.' + #13 +

'Бажаєте спробувати знову?', mtInformation, mbyesno, 6);

if but = 6 then

OnNewGame

else

close;

end;

procedure TMainMemoryForm.OnStart;

begin

m_started := true;

StartTimers;

end;

procedure TMainMemoryForm.OnShowTime;

var

m,s : string;

begin

if m_min < 10 then

m := '0' + inttostr(m_min)

else

m := inttostr(m_min);

if m_sec < 10 then

s := '0' + inttostr(m_sec)

else

s := inttostr(m_sec);

if m_showpoints then

m_CurTime := m + ':' + s

else

m_CurTime := m + ' ' + s;

timeLabel.Caption := m_curTime;

m_showpoints := not m_showpoints;

end;

procedure TMainMemoryForm.OnRestart;

begin

m_started := false;

min.Enabled := false;

sec.Enabled := false;

showTimer.Enabled := false;

OnNewGame;

end;

procedure TMainMemoryForm.StartTimers;

begin

min.Enabled := true;

sec.Enabled := true;

showtimer.Enabled := true;

end;

procedure TMainMemoryForm.StopTimers;

begin

min.Enabled := false;

sec.Enabled := false;

showtimer.Enabled := false;

end;

end.

ZastUnit.pas

unit ZastUnit;

interface

uses

Forms,

shellapi,

windows,

graphics,Messages, Mask, SysUtils, Variants, Classes, Controls,

Dialogs, ExtCtrls, stdctrls, checklst, comctrls, grids;

type

TZastFormN = class(TForm)

Image1: TImage;

Timer1: TTimer;

procedure Image1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormKeyPress(Sender: TObject; var Key: Char);

procedure Label1Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

private

public

{ Public declarations }

r2:trect;

m_Path, m_FileName, m_AddText: string;

m_BackColor : TColor;

m_StartMode : boolean;

m_ToClose : boolean;

procedure Run(FileName:string = '');

procedure Run2;

end;

var

ZastFormN: TZastFormN;

m_Validations: array [1..10] of string;

implementation

{$R *.dfm}

procedure TZastFormN.Image1Click(Sender: TObject);

begin

if not m_ToClose then

exit;

close;

end;

procedure TZastFormN.Run(FileName:string = '');

begin

m_ToClose := true;

showmodal;

end;

procedure TZastFormN.Run2;

begin

m_ToClose := false;

showmodal;

Timer1.Enabled := true;

end;

procedure TZastFormN.Timer1Timer(Sender: TObject);

begin m_ToClose := true;

close;

Timer1.Enabled := false;

end;

procedure TZastFormN.Label1Click(Sender: TObject);

begin

close;

end;

procedure TZastFormN.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin CanClose := m_ToClose;

end;

procedure TZastFormN.FormCreate(Sender: TObject);

var

filename: string;

begin

m_ToClose := false;

doublebuffered:=true;

end;

procedure TZastFormN.FormKeyPress(Sender: TObject; var Key: Char);

begin

if (key = #27) and m_ToClose then

close;

end;

end. Размещено на www.allbest.


Подобные документы

  • Розробка програми для вирішення графічної задачі. При вирішенні задачі необхідно cтворювати програму у середовищі програмування Turbo Pascal. Розробка алгоритму функціонування програми і надання блок-схеми алгоритму. Демонстрація роботи програми.

    курсовая работа [1,3 M], добавлен 23.06.2010

  • Основні відомості з лінійної алгебри. Власні значення і вектори матриці. Метод обертання Якобі. Засоби формування інтерфейсу користувача. Текст програми алгоритму методу обертання Якобі. Вимоги до програмно-технічного забезпечення. Інструкція користувача.

    курсовая работа [306,0 K], добавлен 18.11.2015

  • Основні розрахунки резисторів мікросхеми. Розробка алгоритму рішення задачі методом блок-схем. Характеристика та розробка програми на мові С++ з використанням принципів модульного і структурного програмування. План тестування і налагоджування програми.

    курсовая работа [2,9 M], добавлен 05.12.2012

  • Опис методів і алгоритмів вирішення задачі в середовищі розробки Myeclipse. Основні функції програмного продукту, його структура. Розробка алгоритму та програми, інструкція користувачу. Результати тестування, лістинг основних блоків. Вікно головного меню.

    курсовая работа [1,8 M], добавлен 24.02.2014

  • Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.

    курсовая работа [991,4 K], добавлен 06.08.2013

  • Розробка структурної схеми системи управління, головні вимоги до основних елементів. Обґрунтування та вибір елементної бази. Блок-схема алгоритму і програми реалізації закону управління (лістинг програми). Зміст програми керування мікроконтроллером.

    курсовая работа [170,7 K], добавлен 28.08.2012

  • Проектування архітектури гри "Тетріс". Аналіз вимог до неї. Вивчення особливостей реалізації, кодування та тестування програми. Алгоритм побудови робочого поля. Вибір мови програмування. Розробка і налагодження тексту програми. Інструкції з експлуатації.

    курсовая работа [460,9 K], добавлен 04.03.2014

  • Постановка та описання алгоритму розв’язання задачі про оптимальне призначення, формулювання вимог. Обґрунтування вибору засобів програмування. Розробка структури програми та системи її візуалізації, тестування та верифікація, оцінка ефективності.

    курсовая работа [1,1 M], добавлен 12.05.2013

  • Написання програм для перейменування файлів та копіювання файлів і підкаталогів (аналоги REN, XCOPY). Вибір методу розв'язки задачі та його обґрунтування. Алгоритм та реалізація програми, її системні вимоги. Інструкція для користувача та лістинг.

    курсовая работа [14,7 K], добавлен 08.08.2009

  • Формулювання умови задачі в термінах теорії графів. Метод вирішення задачі й алгоритм написання програми на мові C++. Розробка інструкції користувача, розрахунок контрольних прикладів й аналіз результатів. Приклади практичного застосування програми.

    курсовая работа [526,2 K], добавлен 31.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.