Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.06.2011, 22:41
link993 link993 вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 36
Репутация: 10
Восклицание как осуществить передачу команды между двумя програмами (Sockets)

Ув. Pilot Red, подскажи как осуществить передачу команды между двумя програмами (Sockets). Пробовал писать игру не получилось...
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  DoubleBuffered := True; // двойная буфферизация, чтобы не моргали компоненты на форме
if Key = VK_RIGHT then
  Shape1.Left := Shape1.Left + 1; // перемещаем вправо
if Key = VK_LEFT then
  Shape1.Left := Shape1.Left - 1; // перемещаем влево
if Key = VK_DOWN then
  Shape1.Top := Shape1.Top + 1; // перемещаем вверх
if Key = VK_UP then
  Shape1.Top := Shape1.Top - 1;  // перемещаем вниз
end;

Мне надо сделать так:

if Key = VK_UP then cокет посылает всем клиентам сообщение (команду) VK_UP , а клиенты уже на нее реагируют и двигают shape1 на своей форме вперед.
__________________
Я не поэт, но я скажу стихами: "Пошли вы нах*(пииии)уй мелкими шажками" Люди эт я шучу...
Ответить с цитированием
  #2  
Старый 05.06.2011, 01:31
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от link993
Ув. Pilot Red, подскажи как осуществить передачу команды между двумя програмами (Sockets). Пробовал писать игру не получилось...
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  DoubleBuffered := True; // двойная буфферизация, чтобы не моргали компоненты на форме
if Key = VK_RIGHT then
  Shape1.Left := Shape1.Left + 1; // перемещаем вправо
if Key = VK_LEFT then
  Shape1.Left := Shape1.Left - 1; // перемещаем влево
if Key = VK_DOWN then
  Shape1.Top := Shape1.Top + 1; // перемещаем вверх
if Key = VK_UP then
  Shape1.Top := Shape1.Top - 1;  // перемещаем вниз
end;

Мне надо сделать так:

if Key = VK_UP then cокет посылает всем клиентам сообщение (команду) VK_UP , а клиенты уже на нее реагируют и двигают shape1 на своей форме вперед.

Завтра попробую что-нибудь накатать. Сегодня не получиться так как уже под пивандрием
Ответить с цитированием
  #3  
Старый 05.06.2011, 13:26
link993 link993 вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 36
Репутация: 10
Восклицание

Цитата:
Сообщение от Pilot_Red
Завтра попробую что-нибудь накатать. Сегодня не получиться так как уже под пивандрием

Спасибо большое)))
__________________
Я не поэт, но я скажу стихами: "Пошли вы нах*(пииии)уй мелкими шажками" Люди эт я шучу...
Ответить с цитированием
  #4  
Старый 05.06.2011, 17:33
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Цитата:
Сообщение от Pilot_Red
так как уже под пивандрием
Странно, на меня спиртосодержащие напитки действуют как катализаторы мозговой деятельности. Даже оптимизировать ничего не надо - сразу идеальный код рождается
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #5  
Старый 05.06.2011, 17:59
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от DJ PhoeniX
Странно, на меня спиртосодержащие напитки действуют как катализаторы мозговой деятельности. Даже оптимизировать ничего не надо - сразу идеальный код рождается
Так такая же фигня, входишь в транс, начинаешь писать, а утром встаешь и ни хрена не понимаешь
Тем не менее, вчера уже кондиция нормальная была )
Ответить с цитированием
  #6  
Старый 05.06.2011, 18:10
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Цитата:
Сообщение от Pilot_Red
ни хрена не понимаешь
Это да, но ведь оно ещё и работает
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #7  
Старый 05.06.2011, 18:35
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

раньше на меня пивас тоже так действовал, а потом начал действовать как снотворное, чуть выпил и уже ничо делать не охото, только спать...старею...
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #8  
Старый 05.06.2011, 19:34
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

запускаешь сервер, запускаешь несколько клиентов, вводишь ip-шник, подключаешься.
Управляя стрелками на серваке любуешься тем, как послушно двигаются клиентские Shape-ки
З.Ы.
Это сделано в качестве примера, чтобы понять как взаимодействуют ClienSocket и ServerSocket, так что само собой доработка за ВАМИ!

Последний раз редактировалось Pilot_Red, 14.06.2012 в 22:25.
Ответить с цитированием
  #9  
Старый 05.06.2011, 19:37
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от Assistant
раньше на меня пивас тоже так действовал, а потом начал действовать как снотворное, чуть выпил и уже ничо делать не охото, только спать...старею...

Да да да, полностью согласен Да и по синьке уже как то и не думаешь о программинге(потихоньку пропадает творческое вдохновение).....
Ответить с цитированием
  #10  
Старый 05.06.2011, 22:34
link993 link993 вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 36
Репутация: 10
Восклицание

Pilot_Red, спасибо большое)) Даже не большое, а просто огромное...
__________________
Я не поэт, но я скажу стихами: "Пошли вы нах*(пииии)уй мелкими шажками" Люди эт я шучу...
Ответить с цитированием
  #11  
Старый 05.06.2011, 22:53
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от link993
Pilot_Red, спасибо большое)) Даже не большое, а просто огромное...

Да не за что!, главное чтобы помогло
Ответить с цитированием
  #12  
Старый 05.06.2011, 23:17
link993 link993 вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 36
Репутация: 10
По умолчанию

C этим разобрался, буду делать геймплей. Еще несколько вопросов.

1. Можно ли например на каком нибудь хостинге с PHP разместить сервер, чтобы был постоянный ip и передавать ему команды с клиентов запросами?

2. Программа передает очень много пакетов (приблизительно 500 пакетов за минуту если непрерывно жать), это не повлияет на ее работу между двумя компьютерами на удаленном расстоянии?

3. Чтобы сделать мультиплеер для двух игроков надо добавить функции клиента к серверу, а функции сервера к клиенту?

Заранее спасибо!!!
__________________
Я не поэт, но я скажу стихами: "Пошли вы нах*(пииии)уй мелкими шажками" Люди эт я шучу...
Ответить с цитированием
  #13  
Старый 05.06.2011, 23:26
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от link993
C этим разобрался, буду делать геймплей. Еще несколько вопросов.

1. Можно ли например на каком нибудь хостинге с PHP разместить сервер, чтобы был постоянный ip и передавать ему команды с клиентов запросами?

2. Программа передает очень много пакетов (приблизительно 500 пакетов за минуту если непрерывно жать), это не повлияет на ее работу между двумя компьютерами на удаленном расстоянии?

3. Чтобы сделать мультиплеер для двух игроков надо добавить функции клиента к серверу, а функции сервера к клиенту?

Заранее спасибо!!!

1. Можно
2. 500 пакетов я не думаю что это очень много
3. не понял вопрос...
Ответить с цитированием
  #14  
Старый 05.06.2011, 23:43
link993 link993 вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 36
Репутация: 10
Восклицание

Cпасибо за ответы...

Пример, который ты мне дал работает так:
Сервер посылает команду клиенту, а клиент на нее реагирует.
Получается только один игрок (сервер) может играть.

А я хочу сделать так:
Сервер посылает команду клиенту - клиент на нее реагирует. В тоже время клиент может выполнять функции сервера.
Получается оба игрока (клиент и сервер) могут играть. Действия клиента отображаются у сервера, а действия сервера у клиента.

Чтобы это осуществить надо добавить функции клиента серверу, а функции сервера клиенту?
__________________
Я не поэт, но я скажу стихами: "Пошли вы нах*(пииии)уй мелкими шажками" Люди эт я шучу...
Ответить с цитированием
  #15  
Старый 06.06.2011, 00:06
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

пример делался по пожеланию:
Цитата:
Сообщение от link993
if Key = VK_UP then cокет посылает всем клиентам сообщение (команду) VK_UP , а клиенты уже на нее реагируют и двигают shape1 на своей форме вперед.

В общем ты хочешь чтобы клиенты двигались по полю и, при этом они должны видеть друг друга.

там немного по другому будет.
сервер будет принимать от клиентов команды, их обрабатывать и отсылать им ответы (например координаты).

Например:
Я один из клиентов. хочу двигаться вверх, нажимаю соответствующую клавишу. к серверу летит соответствующая команда. Сервер в свою очередь принимает ее, рассчитывает мои координаты. и отсылает их всем активным клиентам включая и мне. каждый клиент принимает эти координаты и на основе их рисует кружочки, квадратики в общем клиентов. Это одна из вариаций. Решений может быть много. Например клиент сам рассчитывает свои координаты и их соответственно отправляет на сервак. Но тогда клиента можно взломать каким-нибудь ArtMoney..

Как я писал выше тот пример, который я выслал, это некая почва для размышления. Так что разбирайся
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:53.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025