Add game's Watchers
This commit is contained in:
parent
0f482aade5
commit
9bbcedeb59
55
server.py
55
server.py
@ -44,6 +44,7 @@ def readSocket(socket, string):
|
|||||||
s = socket.recv(1024).decode().strip()
|
s = socket.recv(1024).decode().strip()
|
||||||
return s.split("\n")[-1].strip()
|
return s.split("\n")[-1].strip()
|
||||||
|
|
||||||
|
watchers = []
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
connP1, addrP1 = s.accept()
|
connP1, addrP1 = s.accept()
|
||||||
@ -51,6 +52,13 @@ while True:
|
|||||||
connP1.send("Hey! Welcome to Opale game. What's your name?\n> ".encode())
|
connP1.send("Hey! Welcome to Opale game. What's your name?\n> ".encode())
|
||||||
print('Asking Player1 name...')
|
print('Asking Player1 name...')
|
||||||
nameP1 = connP1.recv(1024).decode().strip()
|
nameP1 = connP1.recv(1024).decode().strip()
|
||||||
|
|
||||||
|
if nameP1 == "watcher":
|
||||||
|
print("new Watcher")
|
||||||
|
watchers.append(connP1)
|
||||||
|
connP1.send(("Welcome! You'll watch futher games. Wait for one... :)\n").encode())
|
||||||
|
continue
|
||||||
|
else:
|
||||||
connP1.send(("Welcome \033[93m%s\033[0m! We are waiting for a second player...\n" % nameP1).encode())
|
connP1.send(("Welcome \033[93m%s\033[0m! We are waiting for a second player...\n" % nameP1).encode())
|
||||||
|
|
||||||
connP1.send("\n\nWould you like to load a saved game? (leave blank and press ENTER to load a new game)\n> ".encode())
|
connP1.send("\n\nWould you like to load a saved game? (leave blank and press ENTER to load a new game)\n> ".encode())
|
||||||
@ -111,11 +119,24 @@ while True:
|
|||||||
game.player1.input = functools.partial(readSocket, connP1)
|
game.player1.input = functools.partial(readSocket, connP1)
|
||||||
game.player2.input = functools.partial(readSocket, connP2)
|
game.player2.input = functools.partial(readSocket, connP2)
|
||||||
|
|
||||||
|
def printWatchers(*args):
|
||||||
|
for w in watchers:
|
||||||
|
try:
|
||||||
|
writeSocket(w, *args)
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
w.close()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
watchers.remove(w)
|
||||||
|
|
||||||
def printBoth(*args):
|
def printBoth(*args):
|
||||||
game.player1.print(*args)
|
game.player1.print(*args)
|
||||||
game.player2.print(*args)
|
game.player2.print(*args)
|
||||||
|
printWatchers(*args)
|
||||||
|
|
||||||
def play_turn():
|
def play_turn():
|
||||||
|
printWatchers("\n\033[1mCurrent player:\033[0m \033[93m%s\033[0m \033[95m%s\033[0m" % (game.current_player.name, "DRAGON" if game.current_player.dragonPetrified else ""))
|
||||||
game.current_player.print("\n\033[1mCurrent player:\033[0m \033[93m%s\033[0m \033[95m%s\033[0m" % (game.current_player.name, "DRAGON" if game.current_player.dragonPetrified else ""))
|
game.current_player.print("\n\033[1mCurrent player:\033[0m \033[93m%s\033[0m \033[95m%s\033[0m" % (game.current_player.name, "DRAGON" if game.current_player.dragonPetrified else ""))
|
||||||
game.current_partner.print("\n\033[1mCurrent player:\033[0m \033[96m%s\033[0m \033[95m%s\033[0m" % (game.current_player.name, "DRAGON" if game.current_player.dragonPetrified else ""))
|
game.current_partner.print("\n\033[1mCurrent player:\033[0m \033[96m%s\033[0m \033[95m%s\033[0m" % (game.current_player.name, "DRAGON" if game.current_player.dragonPetrified else ""))
|
||||||
|
|
||||||
@ -124,6 +145,7 @@ while True:
|
|||||||
game.current_player.print("\033[1mHere is your hand currently:\033[0m %s" % {i+1: game.current_player.hand[i] for i in range(len(game.current_player.hand))})
|
game.current_player.print("\033[1mHere is your hand currently:\033[0m %s" % {i+1: game.current_player.hand[i] for i in range(len(game.current_player.hand))})
|
||||||
game.current_partner.print("\033[1mHere is your hand currently:\033[0m %s" % {i+1: game.current_partner.hand[i] for i in range(len(game.current_partner.hand))})
|
game.current_partner.print("\033[1mHere is your hand currently:\033[0m %s" % {i+1: game.current_partner.hand[i] for i in range(len(game.current_partner.hand))})
|
||||||
game.current_partner.print("\n =============:[ Please wait until \033[1;96m" + game.current_player.name + "\033[0m plays... :-) ]:=============\r",None)
|
game.current_partner.print("\n =============:[ Please wait until \033[1;96m" + game.current_player.name + "\033[0m plays... :-) ]:=============\r",None)
|
||||||
|
printWatchers("\n =============:[ Please wait until \033[1;96m" + game.current_player.name + "\033[0m plays... :-) ]:=============\r",None)
|
||||||
icards = game.current_player.input("\nChoose one or more card to play: ")
|
icards = game.current_player.input("\nChoose one or more card to play: ")
|
||||||
pcards = map(lambda x: int(x), icards.split(" "))
|
pcards = map(lambda x: int(x), icards.split(" "))
|
||||||
good = True
|
good = True
|
||||||
@ -138,19 +160,8 @@ while True:
|
|||||||
|
|
||||||
if good:
|
if good:
|
||||||
try:
|
try:
|
||||||
curRound = game.board.roundCity
|
|
||||||
hasDragon = game.current_player.dragonPetrified
|
|
||||||
game.play_round(*cards)
|
game.play_round(*cards)
|
||||||
printBoth(chr(27) + "[2J")
|
return cards
|
||||||
game.current_player.print("\n\033[93m%s\033[0m plays: %s\n" % (game.current_partner.name, cards))
|
|
||||||
game.current_partner.print("\nYou played: %s\n" % (cards))
|
|
||||||
if game.current_partner.dragonPetrified != hasDragon:
|
|
||||||
game.current_player.print("\n\033[1;93m%s\033[95m takes the petrified dragon!\033[0m\n" % game.current_partner.name)
|
|
||||||
game.current_partner.print("\n\033[95mYou take the petrified dragon!\033[0m\n")
|
|
||||||
if curRound != game.board.roundCity and game.board.roundCity < 3:
|
|
||||||
game.current_player.print("\n\033[1;93m%s\033[96m discovers a new lost city! \033[1m%d/%d\033[0m\n" % (game.current_partner.name, game.board.roundCity, 3))
|
|
||||||
game.current_partner.print("\n\033[96mYou discover a new lost city! \033[1m%d/%d\033[0m\n" % (game.board.roundCity, 3))
|
|
||||||
break
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
game.current_player.print("\033[91m%s\033[0m" % e)
|
game.current_player.print("\033[91m%s\033[0m" % e)
|
||||||
|
|
||||||
@ -170,14 +181,32 @@ while True:
|
|||||||
game.player2.input = ip2
|
game.player2.input = ip2
|
||||||
game.player1.print = pp1
|
game.player1.print = pp1
|
||||||
game.player2.print = pp2
|
game.player2.print = pp2
|
||||||
|
|
||||||
|
curRound = game.board.roundCity
|
||||||
|
hasDragon = game.current_player.dragonPetrified
|
||||||
|
|
||||||
try:
|
try:
|
||||||
play_turn()
|
cards = play_turn()
|
||||||
except BrokenPipeError as e:
|
except BrokenPipeError as e:
|
||||||
raise e
|
raise e
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
raise e
|
||||||
game.current_player.print("\033[91mSorry, something goes wrong: '%s'.\033[0m" % e)
|
game.current_player.print("\033[91mSorry, something goes wrong: '%s'.\033[0m" % e)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
printBoth(chr(27) + "[2J")
|
||||||
|
game.current_player.print("\n\033[93m%s\033[0m plays: %s\n" % (game.current_partner.name, cards))
|
||||||
|
printWatchers("\n\033[93m%s\033[0m plays: %s\n" % (game.current_partner.name, cards))
|
||||||
|
game.current_partner.print("\nYou played: %s\n" % (cards))
|
||||||
|
if game.current_partner.dragonPetrified != hasDragon:
|
||||||
|
game.current_player.print("\n\033[1;93m%s\033[95m takes the petrified dragon!\033[0m\n" % game.current_partner.name)
|
||||||
|
printWatchers("\n\033[1;93m%s\033[95m takes the petrified dragon!\033[0m\n" % game.current_partner.name)
|
||||||
|
game.current_partner.print("\n\033[95mYou take the petrified dragon!\033[0m\n")
|
||||||
|
if curRound != game.board.roundCity and game.board.roundCity < 3:
|
||||||
|
game.current_player.print("\n\033[1;93m%s\033[96m discovers a new lost city! \033[1m%d/%d\033[0m\n" % (game.current_partner.name, game.board.roundCity, 3))
|
||||||
|
printWatchers("\n\033[1;93m%s\033[96m discovers a new lost city! \033[1m%d/%d\033[0m\n" % (game.current_partner.name, game.board.roundCity, 3))
|
||||||
|
game.current_partner.print("\n\033[96mYou discover a new lost city! \033[1m%d/%d\033[0m\n" % (game.board.roundCity, 3))
|
||||||
|
|
||||||
if game.player1.cantpioche:
|
if game.player1.cantpioche:
|
||||||
printBoth("\n\033[1;93m%s n'a plus de pioche ! Last round\033[0m" % game.player1.name)
|
printBoth("\n\033[1;93m%s n'a plus de pioche ! Last round\033[0m" % game.player1.name)
|
||||||
elif game.player2.cantpioche:
|
elif game.player2.cantpioche:
|
||||||
|
Loading…
Reference in New Issue
Block a user