Установка машин в початкове положення;
. Висновок поточного статусу гри;
. Установка зв'язку між клієнтом і сервером;
. Обмін станом між клієнтом і сервером;
Б) Переміщення об'єктів на формі:
. Переміщення своєї машини на формі;
. Переміщення машини противника на формі;
В) Процес гри:
. Підрахунок час витраченого на гру;
. Підрахунок кількості не повернуся вводів;
. Підрахунок швидкості друку символів в хвилину;
. Зміни фокусу на вводиться символ;
. Фарбування вірно введених символів;
. Фарбування не вірно введених символів;
Г) Завершення гри:
. Підсумок гри (Перемога/Програш);
. Припинення підрахунку ігровий статистики;
. Можливість розпочати заново;
3.2 Схема алгоритму № 1
Генерація ігрової форми
Малюнок 3.1 - Генерація ігрової форми.
Опис алгоритму наведено у пункті розробка програми .
3.3 Схема алгоритму № 2
Схема введення символу з клавіатури
Рисунок 3.2 - Схема введення символу з клавіатури
Опис алгоритму наведено у пункті розробка програми .
3.5 Склад проекту
Проект Keyboard Racer складається, крім файлів, що створюються системою програмування автоматично, з класів і бібліотек.
У заголовному файлі (хедері) першого модуля (Program), знаходиться створення і запуск нового об'єкта класу menuForm, який являє собою перелік можливих дій.
Модуль MainForm, в якому йде опис головної форми програми, початкових значень змінних, створюваних при її запуску. У тілі цього класу знаходяться вихідні тексти обробників подій, породжуваних тими чи іншими діями користувача в головній формі програми, посилання на бібліотеки використовувані для написання програми, необхідні простору імен. Також описані всі методи, на основі яких будується робота програми.
Модуль About, є компонентом WindowsForm і містить в собі інформація про програмне додаток Keyboard Racer .
Модуль Finish, є компонентом WindowsForm і містить в собі інформація про статус гри при її завершенні.
Модуль File, є компонентом WindowsForm і містить в собі інформація необхідну для вибору і завантаження тексту на головну форму.
Модуль Server, є класом і містить в собі методи і дані необхідні для створення об'єкта сервера і його автономної роботи.
Модуль Client, є класом і місти в собі методи і дані необхідні для створення об'єкта клієнта і його автономної роботи.
Модуль ThreadChat, є статичним класом і містить у собі дані необхідні для спілкування між потоками.
4. Розробка програми
4.1 Розробка методу private void MainForm_Load ()
Розробка методу генерування ігрової форми (Схема алгоритму №1).
Лістинг процедури знаходиться в Додатку. У лістингу метод матиме ім'я private void MainForm_Load (object sender, EventArgs e).
У першій блоці відбувається перевірка на сервер, якщо перевірка вірна, то включається таймер мережі, після чого з файлу в змінну text зчитується текст (з файлу), який буде використовуватися в процесі гри, далі цей текст передається в статичний клас для подальшої передачі його клієнту по мережі:
(whoI == server )
{. Enabled=true;=new StreamReader (pathFile, ASCIIEncoding. ASCII);=tr. ReadToEnd () ;. gameText=text ;. Close ();
}
У другому блоці відбувається перевірка на клієнт, якщо перевірка вірна, то включається таймер мережі, після чого в змінну текст подгружается текст зі статичного класу, який був туди завантажений ще до завантаження форми, завдяки інструкції Sleep () головного потоку:
(whoI == client )
{. Enabled=true;=ThreadChat. gameText;
}
Потім метод встановлює у форму для тексту (RichTextBox), набір символів завантажених раніше в змінну text:
. Text=text;