2016-03-29 15 views
0

Ich versuche, ein Hangman-Spiel mit Python mit einem einfachen Client und Server zu schreiben. Ich lasse den Server öffnen und lausche auf den Socket und dann lasse ich den Client eine Verbindung zum Server herstellen und eine Nachricht senden und der Server antwortet mit einem geheimen Wort, das durch _ * durch die Buchstabenzählung des geheimen Wortes dargestellt wird.Socket-Programmierung Python während und wenn Probleme

Ich habe ein Hangman-Spiel geschrieben, das keine Sockets verwendet, also habe ich das, aber das Problem ist, ich kann die If-Anweisungen nicht funktionieren. Sie geben entweder nichts zurück oder sie bringen Syntaxfehler. Hier ist der Server, ohne die if-Anweisung

import socket 
import random 

#Characters and places from HHGTTG to make it a little more difficult 

word_list = [ 'agrajag','altairians','android','apple','arthur','beeblebrox', 
       'betelgeuse','colin','dent','dentrassis','dolphins','eddie','fenchurch', 
       'ford','galaxy','gargravarr','garkbit','god','golgafrinchans','guide', 
       'hactar','harmless','hello','hitchhikers','hooloovoo','hyperspace', 
       'krikkiters','lallafa','laminate','lamuella','magrathea','marvin', 
       'panic','paranoid','prefect','random','roosta','russell', 
       'slartibartfast','sorcerer','thor','towel','trillian','vogon','willow', 
       'zaphod','zarniwoop','zarquon','zem'] 

lowercase = ['q','w','e','r','t','y','u','i','o','p','l','k','j','h','g','f', 
      'd','s','a','z','x','c','v','b','n','m'] 

secret_word = random.choice(word_list) 

guesses=0 
letters_guessed = [] 
word = [] 


#while testing i used this a lot and i have left it in in case you want to cheat as well 
#print(secret_word) 

for x in range(len(secret_word)): 
    word.append('_ ') 

arthur = ("\n %s"%''.join(word)) 

def Main(): 
    host = '' 
    port = 4242 

    s = socket.socket() 
    s.bind((host,port)) 

    s.listen(1) 
    c, addr = s.accept() 
    print("Connection from: " + str(addr), secret_word) 
    while True: 
     data = c.recv(1024).decode('utf-8') 
     if not data: 
      break 
     print("from connected user: " + data) 
     data = data.upper() 
     print("sending: " + arthur) 
     c.send(arthur.encode('utf-8')) 
    c.close() 

if __name__ == '__main__': 
    Main() 

Die if-Anweisung so viele Kopfschmerzen verursacht, ist dies

while True: 
     data = c.recv(1024).decode('utf-8') 
     if len(data) == 1: 
      print ("BlaBlaBla") 
     else: 
      print ("Bohoohooho") 

Offensichtlich ist das nicht das eigentlich, wenn und sonst Aussagen i im Spiel zu verwenden werde aber es ist mein Test und es funktioniert nicht. Es kommt immer wieder mit Syntaxfehlern, die ich überprüfe und dann

+0

Es gibt nichts falsches in Ihrem zweiten Stück Code falsch. Bist du sicher, dass es der Code hier ist? –

+0

Danke Ich habe es nur sortiert, nichts falsch mit der Syntax überhaupt. Es war das Prog, mit dem ich den Code bearbeitete. – Bridget

Antwort

0

Ich war gedit und hatte die Einstellung falsch, so dass es Tabs und nicht Leerzeichen so hinzugefügt wurde, obwohl es richtig aussah, hat es nicht funktioniert. Habe es einfach auf Leerzeichen umgestellt und es funktionierte, nicht sicher, ob das passieren sollte und nicht einmal sicher, ob es so weiterging, aber ich habe es trotzdem funktioniert.

Danke