Помощь - Поиск - Пользователи - Календарь
Полная версия: Сетевая игра
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
Анна
Подскажите какую сетевую игру можно написать на паскале?
Наиболее распространненые игры и попроще в написании
Unconnected
Ну, по-моему, паскалевский аналог "Танчиков" был бы интересен (сетевой). Только вот насчёт сложности его реализации не знаю, на паскале с сетью не работал.
TarasBer
Ну если на простом Паскале...
У меня многие знакомы делали дёшево и сердито.
Соединяли компы в сеть, создавали сетевой диск, который виден с обоих компов. Естественно, паскалевская программа тоже имеет к нему доступ через банальные Assign(F, FileName). Вот и писалась игра таким образом - с обменом данных через сетевой диск.
Правда скорость не очень. Но для пошаговых игр должно хватить. Вот тут правильно заметили про танчики (типа Worms).
amega
опита не имею еще в написании игр, но как бы я зделал, допустим игра танчики:
на одном из кампов сделал сервер, а остальные клиенты, клиент отправлял бы свои координаты и сигнал что он тоже хочет поиграть. а сервер в свою очередь всем таким клиентам которые заявились отравлял бы дание через какойнить порт. прада на счет бистроты действие и синхронности незнаю что с этим будет(чесно говоря никогда не пробывал)..
andriano
Если имется в виду BP for DOS, то использовал протокол IPX, при этом, правда, на обеих машинах был не "голый DOS", а DOS-сессия Win9x.
Если же имеется в виду какой-либо 32-разрядный компилятор под Win или Linux, то для динамических игрушек можно посоветовать UDP, а для логических (или походовых) - TCP.

По поводу игр:
Динамическая: какая-либо игра, где тем или иным образом соревнуются/сражаются 2 или несколько игроков. Игровое поле общее для всех и целиком помещается на экран (2D).
Логическая: реализация какой-нибудь классической карточной игры, либо шахмат, шашек, etc.
Анна
А "крестики-нолики" на паскале или делфе есть примеры у кого? smile.gif
amega
крестики нолике по сети или так на одном кампекампе?
Анна
Компьютер - Компьютер.
С использованием сокетов.
Unconnected
Крестики-нолики с полем 3 на 3?
Shuruper
Алгоритм для пошаговой очень прост. Во первых соединяемся с помощью assign с сетевым ресурсом.
Запоминаем некий файл game.txt Затем после каждого хода игроков вносим в этот файл необходимые изменения.
На практике это выглядит так:
Есть сетевой ресурс напр. ftp://mygame.net/ .
На ресурсе лежит файл game.gm с неким число.
Пользователь соединяется с файлом game.gm и проводит необходимые операции после чего файл game изменяется в зависемости от введенной информации.
Когда цель игры осуществлена всем игрокам выводится файл с их именами и местами.


Конечно я описал простейший случай но для начала такой способ самый оптимальный.
Анна
Цитата(Unconnected @ 7.12.2009 14:06) *

Крестики-нолики с полем 3 на 3?

да, самые обычные крестики-нолики для игры по сети между двумя компьютерами.
Shuruper, мне не нужен доп. сервер. Нужен простой пример данной игры.
Где есть поле 3 на 3. На обоих ПК запускается приложение, пользователи выбирают друг друга и играют.
Unconnected
Позднее уточнение:) Набросал тут крестики-нолики через сокеты на делфи, с задаваемым количеством клеток и длиной выигрышной линии. Игра сама реализована, только вот программа не показывает, когда складывается выигрышная линия. Если хочешь, доделай сама, я в любом случае приду попозже и сделаю.

Исходники в аттаче(не забудь проверить, установлены ли у тебя TClientSocket и TServerSocket).

Анна
Господа, такой вопрос: как сделать, чтобы при потере соединения вылазила ошибка, что соединение потеряно?
andriano
Ну, наверное, предусмотреть постоянный периодический обмен пакетами. Если в течение таймаута пакет не пришел, соединение потеряно.
Unconnected
В моём варианте достаточно повесить на событие OnDisconnect сокетов вылет окошка с ошибкой.

{доделывать не стал, общался с Анной в ICQ, ей немного другое надо, а точнее целая курсовая}
Анна
Курсовая пишется уже мной smile.gif Вот на этом пока встала.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.