2016-03-29 27 views
0

Basit bir istemci ve sunucu kullanarak python kullanarak bir cellat oyunu yazmaya çalışıyorum. Sunucuyu açıp yuvayı dinledikten sonra istemciye sunucuya bağlanma ve bir mesaj göndererek ve gizli kelime ile cevap veren sunucu, gizli kelimenin harf sayımıyla _ * ile temsil edilen gizli bir kelimeyle yanıt veriyor.Soket Programlama Python Sırasında ve Sorun Var

Soket kullanmayan bir cellat oyunu yazdım, bu yüzden elimde bu var ama sorun işten çıkarılacak ifadeleri kullanamıyorum. Ya hiçbir şey döndürmezler ya da sözdizimi hataları getirirler. İşte bu kadar baş ağrısı neden deyim aslında değil Açıkçası bu

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

ise ifadesi

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() 

i oyunda kullanacağınız if ve else ifadeleri ise olmaksızın sunucusudur ama bu benim testim ve çalışmıyor. Kontrol ettiğim sözdizimi hataları ile geliyor ve o zaman

+0

İkinci kod parçanızda yanlış bir şey yanlış yok. Buradaki kodun tam olduğundan emin misin? –

+0

Teşekkürler Sadece sıraya dizdim, sözdizimi ile yanlış bir şey yok. Kodu düzenlemek için kullandığım prog idi. – Bridget

cevap

0

Gedit kullanıyordum ve ayar yanlış yapıyordu, bu yüzden sekmeler ekliyordu ve düzgün görünmese de işe yaramadı. Sadece yer ekleyerek değiştirdi ve işe yaradı, bunun gerçekleşip gerçekleşmeyeceğinden emin olmadı ve ne olduğundan emin olmadı, ama daha az çalıştım.

Teşekkürler