2013-10-09 6 views
0

텍스트 기반 게임을 만들어서 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 
+1

내가 생각하기에 좋은 곳은 장고 https://www.djangoproject.com/를 보아라. 파이썬을위한 웹 프레임 워크이며, 실제로 시작하기에 좋은 튜토리얼을 가지고있다. 당신은 대부분의 게임을 다시 작성합니다.) 단지 파이썬을 배우고 있다면 처음부터 데스크톱 게임을 사용하는 것이 좋습니다. – Calum

답변

0

나는 좋은 다음 단계는 텔넷 인터페이스로를 연결하는 것입니다 생각합니다. 컴퓨터에서 로컬 호스트로 telnet을 사용하여 쉽게 로컬에서 재생할 수 있지만 서버 설정의 기본 사항을 배우기 때문에 사용자와 친구들이 원격으로 재생할 수 있습니다. 친구와 같은 서버 공간을 확보 할 수 있습니다. 서버와 같이 장기간 실행되는 프로세스 (예 : Mudconnector 또는 Mudbytes와 같은 진흙 포럼)를 실행하거나 한 달에 몇 달러를 지불 할 수있는 무료 쉘 계정을 찾을 수 있습니다. 저렴한 VPS (lowendbox에서 찾을 수 있음).

나는 최고의 파이썬 텔넷 라이브러리가 Miniboa라고 생각합니다. 여기에서 찾으실 수 있습니다, https://code.google.com/p/miniboa/.

@ Calum의 아이디어는 좋은 생각이지만 Django는 Miniboa보다 훨씬 복잡하므로 배울 것이 많을 것입니다. (학습 곡선이 장고로 더 가파르지 않고, 더 길고, 산만해질 수 있습니다. 너는이 시점에서).

0

정말 당신이 가고 싶은 토끼 구멍까지 얼마나 멀리 떨어져 있느냐에 달려 있습니다. 나는 진흙을 추측하고 머드에게 많은 말을 할 것입니다. 여기에 나를 데려온 태그가 있습니다. :)

당신이 이해하고 싶어 할 기지는 소켓 프로그래밍과 telnet protcol (http://en.wikipedia.org/wiki/Telnet#Related_RFCs)이 될 것입니다. 훌륭한 사이트는 http://www.beej.us/guide/bgnet/입니다. 파이썬은 소켓 사용에 대해 꽤 좋은 인터페이스를 가지고 있으며,이 가이드는 꽤 집중되어 있지만 모든 개념이 적용됩니다. 그러면 MUD가 인터넷과 같은 네트워크를 통해 데이터를 보내고받을 수 있습니다.

대부분의 MUD가 구현하는 텔넷 프로토콜의 모든 기능을 제공합니다. 색상 코드, 이스케이프 문자, 플레이어 화면의 크기를 감지하고 이에 따라 텍스트 형식을 조정하는 루틴이 있습니다.

MCCP는 조사 할 가치가있는 또 다른 것입니다. 이것은 대부분의 MUD 클라이언트가 이해하는 압축 프로토콜입니다. 텍스트 기반 게임에서 푸시 된 네트워크 데이터의 양은 요즘 사용되는 인터넷의 방식과 비교하면 엄청나게 크지는 않지만, 압축을하면 거의 아무런 상처를 입지 않을 것입니다.

정직하게 말하면 이것은 배우고 구현하는 모든 재미있는 물건이며, 당신이 정말로 알고 싶을 것입니다.

다른 답변에서 언급했듯이 기존 텔넷 라이브러리도 있습니다. 이것에 더하여 모든 텔넷 프로토콜/네트워킹 작업을 처리 할 필요가 없으며 게임 자체에 집중할 수 있습니다.

재미있게 보내세요!