2017-11-10 7 views
1

ここにpythonサーバークライアントの推測ゲームprogramm.Wellがあります。私の問題は、すべてが動作しますが、ループはdoesntです。詳細は、ユーザーから推測することができます。ユーザーが値を入力すると、正しい答えが見つかるとプログラムが終了します。現在、何らかの理由で1つの値しか挿入できません。Python Guess Game Server-Client

サーバー:

import socket 
import random 


s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
s.bind(("192.168.1.3",9000)) 
s.listen(5) 

(c,a) = s.accept() 
print ("Received connection from", a) 

Hello=c.recv(10000).decode() 

print(Hello) 

greetings="Greetings!" 
c.send((greetings+"\r\n").encode()) 

game=c.recv(10000).decode() 
print (game) 

ready="Ready For The Guess Game!" 
c.send((ready+"\r\n").encode()) 

random_number = random.randint(1, 20) 

running = 1 

while running: 
    guess=c.recv(10000).decode() 
    guess=int(guess) 
    print(guess) 

    if guess <= random_number - 3: 

     far_message="Far!" 
     c.send((far_message+"\r\n").encode()) 

    if guess >= random_number + 3: 

     far_message="Far!" 
     c.send((far_message+"\r\n").encode()) 

    if guess == random_number - 2 or guess == random_number + 2 or guess == random_number + 1 or guess == random_number - 1: 

     close_message="close!" 
     c.send((close_message+"\r\n").encode()) 


    if (guess==random_number): 

     correct_message="Correct!" 
     c.send((correct_message+"\r\n").encode()) 
     running=0 

c.close() 

とクライアント:

import socket 
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
s.connect(('192.168.1.3',9000)) 

Hello="Hello" 

s.send((Hello +"\r\n").encode()) 

greetings=s.recv(10000).decode() 
print(greetings) 

game="Guess Game Please" 
s.send((game +"\r\n").encode()) 

game=s.recv(10000).decode() 
print (game) 


running=1 
while running: 

    guess = input("Enter your guess: ") 

    s.send(guess.encode()) 

    close_message = s.recv(10000).decode() 
    print (close_message) 

    far_message = s.recv(10000).decode() 
    print(far_message) 

    correct_message = s.recv(10000).decode() 

    print(correct_message) 
    running=0 




s.close() 
+0

あなたはどのようなエラーを見ていますか?メッセージから '\ r \ n 'という改行を省略することをお勧めします。 –

+0

私はコードをどうにかしましたが、今は自分の問題に別の問題があります – dennoukos

+0

もっと具体的にはループは動作しません – dennoukos

答えて

0

あなたは、クライアント側でのみ1人の応答リスナーを必要とする

while running: 

    guess = input("Enter your guess: ") 
    s.send(guess.encode()) 

    response = s.recv(10000).decode() 
    print(response) 
    if response.startswith("Correct"): 
     running = 0 
+0

私は本当に本当に<3を好きです – dennoukos

+0

投稿の横にあるチェックマークを使って回答を受け入れることができます;) –