Что мне нужно сделать / научиться делать мою текстовую игру Python доступной для пользователей через Интернет
Я учу Python, делая текстовую игру. Что мне нужно сделать, чтобы вывести эту игру в онлайн? Очевидно, что он чрезвычайно слаборазвит и даже не воспроизводится. Но я просто хотел знать рано, чтобы я мог двигаться в правильном направлении и учиться.
#object = [x, y, z, name, armor rating, weapon 1]
user= [100, 100, 100, "Wing Zero", 250, 50]
mothership=[100, 100, 50, 'mothership']
enemy1 = [100, 100, 105, "leo1", 100, 20]
enemy2 = [100, 100, 110, "leo2", 100, 20]
enemy3 = [100, 100, 115, "leo3", 100, 20]
nearbyships=[] #List of ships by player for printing purposes
truenearbyships=[]#List of ships near player for calculating purposes
listofships=[mothership, enemy1, enemy2, enemy3] #Overall ships in game
target = 'r'#Placecholder var
def radar(listofships, user):
for i in listofships:
if user[0] + 50 > i[0] and user[1] + 50 > i[1] and user[2] + 50 > i[2]:
nearbyships.append("space object (%s) detected at coordinates (%s, %s, %s)" % (i[3], i[0], i[1], i[2]))
truenearbyships.append(('%s') % (i[3]))
else:
print('no ships detected')
def target(ship, user):
print("You target ship")
while(True):
print('\n Current coordinates: (%s, %s, %s)' % (user[0], user[1], user[2]))
i=str(raw_input())
if i == 'radar':
radar(listofships, user)
for i in nearbyships:
print(i)
nearbyships=[]
elif i == 'l':
print("You are sitting in a Leo cockpit")
elif i == 'nearby':
print(truenearbyships)
elif 'target' in i:
radar(listofships, user)
targetlist=i
targetlist=targetlist.split()
# target list is text taken from player input 'target object'. targetlist[-1] is the space object in game
if targetlist[-1] in truenearbyships:
print("You begin locking in on %s space object" % (i[-1]))
print('target confirmed')
currenttarget=targetlist[-1]
else:
print('ship not detected')
elif i == 'fire weapon1':
if currenttarget:
print("You fire your buster rifle at %s and hit it directly" %(currenttarget)) #Insert probability of hit and damage
else:#Check if there is a target set
print("You are not targeting anything")
else:
print("Please input a valid command from the manual below \n'radar'\n'target (object)'")
#Movement system? Timed flight
#Combat
#Hyperspace
#multiple people
#Docking
2 ответа
Как только у вас будет запущена однопользовательская версия этой игры для командной строки, я думаю, что следующим хорошим шагом будет подключение к интерфейсу telnet. Вы по-прежнему можете легко воспроизводить его локально на своем компьютере (связавшись по телефону с localhost), но вы также можете изучить основы настройки сервера, чтобы вы и ваши друзья могли воспроизводить его удаленно. Вы можете получить место на сервере от друга, найдя где-нибудь бесплатную учетную запись оболочки, которая позволит вам запустить длительный процесс, например, сервер (например, на грязном форуме, таком как Mudconnector или Mudbytes), или заплатив несколько долларов в месяц для дешевого VPS (который вы можете найти на lowendbox).
Я думаю, что лучшей простой библиотекой Python telnet является Miniboa. Вы можете найти его здесь, https://code.google.com/p/miniboa/.
Я думаю, что идея @Calum тоже хороша, но Django намного сложнее, чем Miniboa, так что вам придется учиться намного больше (кривая обучения не обязательно круче с Django, только дольше, и может отвлечь вас на этом этапе).).
Это действительно зависит от того, как далеко в кроличью нору вы хотите пойти. Я собираюсь принять MUD и сказать MUD много, так как это тег, который привел меня сюда:)
Основой того, что вы захотите понять, будут программирование сокетов и протокол telnet ( http://en.wikipedia.org/wiki/Telnet). Отличный сайт http://www.beej.us/guide/bgnet/. Python имеет довольно хороший интерфейс для использования сокетов, и хотя это руководство довольно сфокусировано на C, применимы все концепции. Это позволит вашему MUD отправлять и получать данные через сеть, такую как Интернет.
То, что это не даст вам, - это все входы и выходы протокола telnet, которые реализует большинство MUD. Есть цветовые коды, экранирующие символы, процедуры для определения размера экрана игроков и соответствующей настройки формата текста.
MCCP - это еще одна вещь, которую стоит изучить. Это протокол сжатия, понятный большинству клиентов MUD. Количество сетевых данных, распространяемых в текстовых играх, на самом деле не так уж велико по сравнению с тем, как в наши дни используется Интернет, но небольшое сжатие никогда никому не повредит, если у него есть процессорное время:)
Честно говоря, это все забавные вещи для изучения и реализации, и если вы действительно хотите пойти с нуля, это то, что вы захотите узнать.
Как уже упоминалось в других ответах, существуют и существующие библиотеки telnet. Плюсом этого является то, что вам не придется обрабатывать все протоколы telnet / сетевые ресурсы и вы можете сосредоточиться на самой игре.
Повеселись!