139 lines
5.2 KiB
Python
139 lines
5.2 KiB
Python
import socket
|
|
import json
|
|
|
|
class Client:
|
|
def __init__(self, address, port):
|
|
self.address = address
|
|
self.port = port
|
|
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
|
|
def connect(self):
|
|
self.socket.connect((self.address, self.port))
|
|
|
|
def send(self, message):
|
|
self.socket.send(message.encode())
|
|
|
|
def receive_string(self):
|
|
return self.socket.recv(1024).decode()
|
|
|
|
def receive(self):
|
|
return json.loads(self.socket.recv(1024))
|
|
|
|
def close(self):
|
|
self.socket.close()
|
|
|
|
class UI:
|
|
def __init__(self):
|
|
self.client = Client("172.30.114.67", 3000)
|
|
self.client.connect()
|
|
print(self.client.receive_string())
|
|
self.run()
|
|
def run(self):
|
|
while True:
|
|
option = input("Choose an option: ")
|
|
match option:
|
|
case "1":
|
|
self.client.send(option)
|
|
data = self.client.receive()
|
|
print("\nPlayer hand:")
|
|
for card in data['playerHand']:
|
|
print(card, end=" ")
|
|
print("\nPlayer score:", data['playerScore'])
|
|
|
|
print("\nDealer hand:")
|
|
for card in data['dealerHand']:
|
|
print(card, end=" ")
|
|
print("\nDealer score:", data['dealerScore'])
|
|
case "2":
|
|
self.client.send(option)
|
|
print(self.client.receive_string())
|
|
self.client.close()
|
|
exit()
|
|
case "stand":
|
|
self.client.send(option)
|
|
data = self.client.receive()
|
|
if(data.get('error') != None):
|
|
print(data['error'])
|
|
continue
|
|
print("\nPlayer hand:")
|
|
for card in data['playerHand']:
|
|
print(card, end=" ")
|
|
print("\nPlayer score:", data['playerScore'])
|
|
|
|
print("\nDealer hand:")
|
|
for card in data['dealerHand']:
|
|
print(card, end=" ")
|
|
print("\nDealer score:", data['dealerScore'])
|
|
if(data.get('winner') != None):
|
|
print("Winner: " + data['winner'])
|
|
print(self.client.receive_string())
|
|
else:
|
|
print("hit or stand?")
|
|
case "s":
|
|
self.client.send(option)
|
|
data = self.client.receive()
|
|
if(data.get('error') != None):
|
|
print(data['error'])
|
|
continue
|
|
print("\nPlayer hand:")
|
|
for card in data['playerHand']:
|
|
print(card, end=" ")
|
|
print("\nPlayer score:", data['playerScore'])
|
|
|
|
print("\nDealer hand:")
|
|
for card in data['dealerHand']:
|
|
print(card, end=" ")
|
|
print("\nDealer score:", data['dealerScore'])
|
|
if(data.get('winner') != None):
|
|
print("Winner: " + data['winner'])
|
|
print(self.client.receive_string())
|
|
else:
|
|
print("hit or stand?")
|
|
case "hit":
|
|
self.client.send(option)
|
|
data = self.client.receive()
|
|
if(data.get('error') != None):
|
|
print(data['error'])
|
|
continue
|
|
print("\nPlayer hand:")
|
|
for card in data['playerHand']:
|
|
print(card, end=" ")
|
|
print("\nPlayer score:", data['playerScore'])
|
|
|
|
print("\nDealer hand:")
|
|
for card in data['dealerHand']:
|
|
print(card, end=" ")
|
|
print("\nDealer score:", data['dealerScore'])
|
|
if(data.get('winner') != None):
|
|
print("Winner: " + data['winner'])
|
|
print(self.client.receive_string())
|
|
else:
|
|
print("hit or stand?")
|
|
case "h":
|
|
self.client.send(option)
|
|
data = self.client.receive()
|
|
if(data.get('error') != None):
|
|
print(data['error'])
|
|
continue
|
|
print("\nPlayer hand:")
|
|
for card in data['playerHand']:
|
|
print(card, end=" ")
|
|
print("\nPlayer score:", data['playerScore'])
|
|
|
|
print("\nDealer hand:")
|
|
for card in data['dealerHand']:
|
|
print(card, end=" ")
|
|
print("\nDealer score:", data['dealerScore'])
|
|
if(data.get('winner') != None):
|
|
print("Winner: " + data['winner'])
|
|
print(self.client.receive_string())
|
|
else:
|
|
print("hit or stand?")
|
|
|
|
case _:
|
|
print("Invalid option")
|
|
|
|
|
|
|
|
ui=UI()
|