Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Рис. 1 Блок-схема алгоритму основної частини програми.
Рис. 2 Блок-схема алгоритму ініціалізації.
Рис. 3 Продовження блок-схеми алгоритму ініціалізації.
Рис. 4 Блок-схема алгоритму обробки відкриття нового сокету.
Рис. 5 Блок-схема алгоритму функції Game.
Рис. 6 Блок-схема алгоритму обробки приходу даних на сокет клієнта
Рис. 7 Блок-схема алгоритму обробки приходу даних на сокет серверу.
Рис. 8 Блок-схема алгоритму функції CheckFirstMove
Рис. 9 Блок-схема алгоритму обробки натиснення на карту
Рис. 10 Продовження блок-схеми алгоритму обробки натиснення на карту
Рис. 11 Блок-схема алгоритму функції ReadMsgServer
Рис. 12 Блок-схема алгоритму функції ReadMsgClient
Рис. 13 Блок-схема алгоритму запиту нової партії гри
Початок
Початкова ініціалізація змінних
Створення основної форми
Вивід основної форми на екран
Кінець
Виклик форми вибору типу гри
Вхід
Перевірка відео режиму
M1
M2
M1
M2
ні
ак
так
ні
Вихід
Виклик форми вибору кількості гравців
Виклик форми для вводу імені комютера де створено сервер
Спроба встановлення звязку з сервером
Виведення запиту користувачу про очікування серверу
ні
Вхід
Посилаємо по відкритому сокету клієнту його номер
Вихід
так
Вихід
Відправляємо повідомлення про необхідність передати серверу імя гравця
Ініціалізація карт. Роздача кожному з гравців
Вхід
так
Відправляємо серверу повідомлення про необхідність передати цьому клієнту імя іншого
Перевіряємо чи всім вже відправили повідомлення
Вихід
Виведення повідомлення про помилку
Звязок є?
так
ні
800х600?
так
ні
Відповідь
Ok?
Перевіряємо чи всі гравці вже встановили звязок
Початок гри.
Виклик функції
Game
так
Вхід
ні
Перевіряемо, чи всі вже імена прийнято
Зчитування з буферу масиву карт
В залежності від повідомлення, що прийшло відправляємо серверу необхідну інформацію
Розпочата?
Перевіряемо, чи розпочата вже гра
ні
Перевіряемо, чи розпочата вже гра
так
Викликаємо функцію обробки повідомлень сервера ReadMsgClient
Викликаємо функцію
GameClientBegin
Вхід
Повідомляємо кожного з клієнтів, що тепер хід першого гравця
Перевіряемо, чи дозволено цією картою в даному випадку ходити?
так
Всім?
Перевіряемо, чи всім вже відправлено
Викликаємо функцію обробки повідомлень клієнта ReadMsgServer
так
Зчитування з буферу повідомлення
Відправляємо повідомлення всім клієнтам про початок
Дозволено?
Вихід
ні
Вихід
Відправляємо повідомлення з імям серверу, іменами інших гравців, та масив карт
Викликаємо функцію СheckFirstMove
Знаходимо по картам кожного гравця того хто повинен ходити
Вхід
Повідомляємо кожного з клієнтів, що тепер хід іншого гравця
Повідомляємо гравця
M3
так
Перевіряемо, це сервер, чи кліент
Сервер?
Вихід
В залежності від того що зараз: хід, підкид чи відбив перевіряємо
Вхід
M4
M3
M4
Визначаємо клієнт передав запит, чи інформацію
Визначаємо відповідь користувача
Запит?
Повідомляємо кожного з клієнтів, про зроблений хід
Повідомляємо сервер, про зроблений хід клієнта
Визначаємо, про що повідомив клієнт та передаємо інфо іншим
Визначаємо відповідь та посилаємо її клієнту
Згоден?
так
Визначаємо сервер передав запит, чи інформацію
Вихід
Зчитуємо з буферу повідомлення клієнта
Вхід
Визначаємо зміни в грі відображаємо це (зміна положень карт, зміна написів)
Визначаємо відповідь та посилаємо її серверу
Запит?
ні
так
Вихід
Зчитуємо з буферу повідомлення сервера
Вхід
Вхід
Виводимо повідомлення на екран та запит про нову партію
Вихід
ні
Завершуємо програму
Викликаємо функцію
початку гри Game
Обрано тип сервер?
Всі?
Всім?
ні
так
Масив?
Перевіряемо, що прийнято масив чи повідомлення
Всі?
так
ні
Розпочата?
ні
Перевіряемо сервер, чи клієнт робить хід
так
Сервер?
ні
ні
ні
ні
так