Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 27.07.2010, 11:30   #1
Bizzy
AnyKey`щик
 
Регистрация: 27.07.2010
Сообщений: 6
Написано одно полезное сообщение
(для 2 участников)
TCP

Почитав статьи: Вышло вот
Сервер:
svrGame=CreateTCPServer(7777)
If svrGame<>0 Then
Print "Сервер запущен удачно."
Else
Print "Ошибка создания сервера."
End
End If
While Not KeyHit(1)
strStream=AcceptTCPStream(svrGame)
If strStream Then
While Not Eof(strStream)
Print ReadString$(strStream)
Delay 2000
Wend
Else
Print "От Apollo X ничего нет ..."
Delay 1000
End If
Wend
End

Клиент:

strmGame=OpenTCPStream("127.0.0.1",7777)
If strmGame<>0 Then
Print "Клиент соединился с сервером."
Else
Print "Сервер не отвечает."
WaitKey
End
End If
While Not KeyHit(1)
; отправим сообщение серверу
WriteString strmGame,"Центр Управления, это Apollo X ..."
Print "Сообщение Центр Управления отправлено успешно..."
Delay 2000
Wend

Все в роде бы хорошо, вот только как это преобразовать в игру, т.е. шарик - игрок передвигается по плоскости.
(проблема в передаче координат, не могу понять как, всего то нужно передать координаты X,Y и их же раздать всем клиентам. )

Надеюсь на Вашу помощь.
(Offline)
 
Ответить с цитированием
Старый 27.07.2010, 11:56   #2
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: TCP

1) Порт лучше брать от 49152 до 65535
2) Вот, может плможет:
ТСР
ДирекстПлэй
(Offline)
 
Ответить с цитированием
Старый 27.07.2010, 15:51   #3
Bizzy
AnyKey`щик
 
Регистрация: 27.07.2010
Сообщений: 6
Написано одно полезное сообщение
(для 2 участников)
Ответ: TCP

Сообщение от Den Посмотреть сообщение
1) Порт лучше брать от 49152 до 65535
2) Вот, может плможет:
ТСР
ДирекстПлэй
Это я несколько раз перечитал. Саму суть понять не магу, единой строкой все передавать? или поочередно? (лихо теряется переданная инф).
Когда то натыкался на примере с шариками на плоскости, теперь найти не магу . Может у кого остался в заначке? Поделитесь.
1пост с вопросом еще в силе.
(Offline)
 
Ответить с цитированием
Старый 29.07.2010, 11:00   #4
Bizzy
AnyKey`щик
 
Регистрация: 27.07.2010
Сообщений: 6
Написано одно полезное сообщение
(для 2 участников)
Ответ: TCP

Еще вопросик:

сервер

svrGame=CreateTCPServer(7777)
If svrGame<>0 Then
Print "Сервер запущен удачно."
Else
Print "Ошибка создания сервера."
End
End If
While Not KeyHit(1)
strStream=AcceptTCPStream(svrGame)
If strStream Then
While Not Eof(strStream)
x1 = Readline(strStream)
x2 = Readline(strStream)
x3 = x1 +x2
Writeline strmGame," x3
Delay 2000
Wend
Else
Print "От Apollo X ничего нет ..."
Delay 1000
End If
Wend
End

клиент

x1 =10
x2 = 20
strmGame=OpenTCPStream("127.0.0.1",7777)
If strmGame<>0 Then
Print "Клиент соединился с сервером."
Else
Print "Сервер не отвечает."
WaitKey
End
End If
While Not KeyHit(1)
; отправим сообщение серверу
WriteLine strmGame, x1
WriteLine strmGame, x2

Print ReadLine(strStream)

Print "Сообщение Центр Управления отправлено успешно..."
Delay 2000
Wend


После запуска вылетает Ошибка "Stream does not exist", помогите.
Без "Print ReadLine(strStream)" все нормально работает, подскажите как получать сообщения от сервера.
Заранее СПС.


Извиняюсь, моя АШИПКА в коде. Выделил красным.
З.Ы. Никогда не делайте Ctrl+C & Ctrl+V, пишити ручками, думайте головой Всем удачи!

Последний раз редактировалось Bizzy, 29.07.2010 в 18:59.
(Offline)
 
Ответить с цитированием
Старый 14.09.2010, 04:19   #5
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: TCP

Объясните, пожалуйста, как правильно пользоваться TCP?
Я сделал сервер и изменил код своей игры так сказать под сеть (делал по примеру TCPEngine.bb). Внимательно разобрав код я сделал что бы координаты позиции, поворота и скорости объектов передавались отдельно, но не работает почему-то (видать не до конца понял). И еще как можно создавать "нового игрока" в клиенте когда приходит определенное сообщение от сервера (напр: NewPlayer)? А то щас приходящие данные каждый раз проверяются на имя игрока и если имя новое, то создается игрок. Такой способ как то не удобен..
(Offline)
 
Ответить с цитированием
Старый 14.09.2010, 11:25   #6
Spy4433
ПроЭктировщик
 
Аватар для Spy4433
 
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений
(для 63 пользователей)
Ответ: TCP

ну я пользуюсь такой конструцией

Type Player
Field stream
End Type

port=989789
tcp=CreateTCPServer(port)

repeat
pot=AcceptTCPStream(tcp)
If pot Then
p.Player=New Player
p\stream=pot
;создаем новый тип и записываем поток
;тут размещаем код когда подключается клиент
EndIf

For p.player=Each player
If ReadAvail(p\stream) Then
com$=ReadLine(p\stream)
;здесь проверяем не пришло ли сообщение , и если пришло то читаем его
endif
next

until keyhit(1)
end

P.S может такая конструкция не совсем правельная
__________________
форум эт вещь... и почему я раньше им не пользовался?

AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
(Offline)
 
Ответить с цитированием
Старый 14.09.2010, 13:36   #7
cyberblut
Знающий
 
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений
(для 257 пользователей)
Ответ: TCP

Я делал систему ивентов, на которые подписываются листенеры. Например приходит мессадж NewPlayer - вызываются все подписанные на него листенеры и выполняют метод Process (например), в котором уже как раз и создаётся новый игрок.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:30.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com