![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| IRQ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
Мне надо написать морской бой. Желательно с поддержкой игры по сети. Необходимо использовать потоки и синхронизацию. Подскажите, какие компоненты нужно использовать для подобного рода программ и как использовать потоки в данном случае. 2 игрока. Я не вижу прямо таких напрашивающихся решеений по использованию потоков.
|
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Как и обычное использование потоков. Хотя я не понимаю, зачем потоки использовать. Марской бой - он же, по сути, на random строится. И только при попадании нужно включать вычисления, что бы "ударить" по другой палубе (это при игре с ИИ). Единственное, это можно применить патоки при сонхронизации по сети, т.к. сеть может глючить, и тогда будет ощущение, что зависла прога. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| IRQ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
Ну про потоки-как раз возможно при работе в сети. Но я всё равно не очень понимаю, как именно использовать. А компоненты я имел ввиду для работы в сети. Что надо? TTcpClient/TTcpServer? Где-то видел про Indy. Или может TClient Socket/TServerSocket. Но этих компонентов я почему-то не нашёл в палитре компонентов Delphi 7. Только если руками прописывать. В BCB 6 эти компоненты есть.
|
|||
|
||||
| Тьма |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 22.1.2005 Где: Украина, Винница Репутация: нет Всего: 4 |
использовать потоки имеет смысл, если так стоит задание.......
-------------------- Vir magni ingenii |
|||
|
||||
| Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Вот как раз TClientSocket и TServerSocket подойдет -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
| IRQ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
Спасибо за информацию о добавлении компонентов
|
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Зашить в отдельный поток только передачу по сети информацию о ходе.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| IRQ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
А не подскажите, как юзать ClientSocket/ServerSocket. Я пробовал. Вроде всё соединятеся, но сообщения не отсылаются.
|
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Главное, не забывать, что сторона, каторая посылает - это ClientSocket, а сторона, каторая принимает - это ServerSocket. Т.е. в программе должен быть и ServerSocket (для приема) и ClientSocket (для посылки).
Вот пример посылки текста (всю информацию о ходе можно запихнуть в текстовую переменную.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| IRQ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
А. Теперь понятно. Просто я пытался юзать TServerSocket.ReceiveText. Но там этого не было
|
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Я уже писал, запихни все работу с сетью в поток, что бы на случай сетевых глюков прога не зависала. Т.е. коннект и передачу сообщения лучше в поток. Так же не мешало бы прикрутить ответ на сообщения. Что-то вроди "сообщение получено". Так во многих сетевых чатах сделано и даже в ICQ-клиентах.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: нет Всего: 7 |
В потоках можно сделать анимацию моря, колец от взрывов, мониторинг сети (юзер ушел, пришел), чат между игроками. А если использовать Indy, так тот синхронный по определению, тут как раз без потоков не обойтись. Например, сидит такой Indy сокет в потоке, и просто ждет очередного пакета, а по приему бросает сообщение в основное окно об очередном событии, а то уж пущай реагирует.
(Свой "Морской бой" делал на TClientSocket, TServerSocket) --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
| IRQ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
Появилось ещё несколько вопросов.
1)Использование TClientSocket/TServerSocket упрошает и формализует работу по сети? Можно было бы использовать TTcpClient/TTcpServer? Или нет смысла. Достатчно первых. 2)Потоки. Я так подумал. На каждого игрока создаётся поток. И может получиться так, что игра идёт, а к серверу (тот, кто создал игру) начинает подключаться кто-то ещё. Игра втроём получается. Здесь видимо тоже надо использовать синхронизацию? Расскажите про эту штуку пожалуйста. Про всякие там синхронизации, приостановки потоков. |
|||
|
||||
| Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Один топик - один вопрос!
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
| VJVS |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.5.2006 Репутация: нет Всего: нет |
Poseidon, как мне поставить TClientSocket/TServerSocket в Delphi7, я никак не могу найти!
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |