Форум программистов, компьютерный форум, киберфорум
Python: PyGame
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/76: Рейтинг темы: голосов - 76, средняя оценка - 4.92
18 / 18 / 15
Регистрация: 17.02.2013
Сообщений: 85

Сетевая игра на pygame

12.02.2015, 18:35. Показов 13962. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил написать на python'е небольшую игру с использованием pygame. В планах была игра по сети. Решил использовать сокеты. Но вот как всё реализовать я до конца не могу понять.
Игра на 2-х игроков, причем пошаговая (интересно было б и с не пошаговой разобраться на будущее...). В своё основное время игра висит на pygame.event.wait(). Для игры на одном компьютере в режиме двоих игроков все хорошо, а вот если ход нужно передавать по сети возникает проблема: если ждать хода от второго игрока, то нет ни какой реакции на действия пользователя (это ясно, теперь всё висит на data = tcpSock.recv(BUFSIZE) а не на pygame.event.wait() ). На ум сразу приходит использовать несколько потоков. Тогда 1-й следит за действиями пользователя, а 2-й ждёт хода оппонента с сети. Хорошо. Допустим 2-й поток принял ход, но как ему тогда сказать 1-му, чтобы тот обработал это событие? Ведь 1-й всё еще ждет что-то от пользователя (pygame.event.wait() ). Как это решить я не придумал......
Взаимодействие между игроками должно осуществляться без сервера(в смысле кто-то из игроков им будет, или вообще p2p, вот только как сделать p2p я тоже не понимаю), только указанием ip-адреса оппонента.
К тому же ооооочень хочется окошка с чатом Думал сделать его в отдельном окне с использованием tKinter, но вот как прикрутить tKinter к pygame, да ёще чтобы окно показывалось только при игре по сети/инету.... Тут же и вопрос с передачей данных: для чата использовать тот же порт (только теперь нужно ставить в начале маркер, это ход или сообщение) или создать ещё связь (пару клиент-сервер или использовать иной порт (может тут я сказал что-то глупое, извините, опыта маловато)).
Но хотя бы с передачей хода разобраться.
Может я делаю что-то не так в принципе или есть способ сделать это намного проще - подскажите пожалуйста. Буду очень рад как объяснениям "на пальцах" так и примерам. Может есть ещё библиотеки какие....
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.02.2015, 18:35
Ответы с готовыми решениями:

игра-грузчик Pygame
import sys import pygame import string import queue class game: def is_valid_value(self,char): if ( char ==...

Игра на Python с использованием библиотеки Pygame!
Кто может помочь по написанию игры на Python с использованием библиотеки Pygame! Вот тема: Средствами python разработать игровое...

Ложится игра при смене цикла на PyGame
При попытке выйти из одного цикла и войти в другой, второй обрабатывается один раз и игра зависает. while introMenu: ... for...

3
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
18.02.2015, 10:25
_N_,
1) По поводу чата, сомневаюсь, что можно прикрутить в принципе tk к pygame, я думаю все окошки самому пилить придётся. Просто тупо вынести в отдельный потом, пускай вертиться. Пересылать лучше по одному порту. Как-то жирно два порта на одну программу. Придумайте свой формат данных на основе, например, json.
А по поводу игры по сети, надо еще подумать.
А так прочтите вообще как такое делают: тут можно посмотреть
1
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
18.02.2015, 13:07
Цитата Сообщение от Wolkodav Посмотреть сообщение
Придумайте свой формат данных на основе, например, json.
Думаю в сто раз проще будет использовать pickle.
1
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
18.02.2015, 16:38
alex925, да, возможно и pickle проще) Привычка с web использовать json, забываешь про стандартные вещи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2015, 16:38
Помогаю со студенческими работами здесь

Как создать apk для андроид (игра Pygame)
Всем привет! Суть проблемы в заголовке) Мучилась долго с бульдозером, ничего не вышло. Вот какие ошибки выдает: : pkg-config location...

Python (+Pygame), аркадная игра "Получи диплом"
Здравствуйте, улучшаю игру и в процессе пыталась сделать уведомление/сообщение о проигрыше "Game Over". Но проблема в том, что...

При импорте pygame пишет что нет модуля pygame.base
Устанавливаю для kivy.Всё есть (sython,gsstreamer,kivy,pyscripter,python) , а вот фраем. pygame не работает.Почему?Что ещё надо для работы...

Ошибка в pygame AttributeError: 'pygame.Rect' object has no attribute 'blit'
Создаю игру, крестики нолики Почему возникает ошибка и как ее исправить? AttributeError: 'pygame.Rect' object has no attribute 'blit' ...

pygame.error: cannot convert without pygame.display initialized
Только начал изучать спрайты Выдаёт ошибку: Traceback (most recent call last): File "D:/project1/OCode.py", line 18, in...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru