bot_lowest_card.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import json
  2. import select
  3. import socket
  4. import sys
  5. import time
  6. from common_client import *
  7. PLAYER_NAME='BOT_lowest_first'
  8. def listen(start=False):
  9. global ssock
  10. ssock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  11. #ssock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  12. ssock.connect((HOST, PORT))
  13. print('connected:', ssock)
  14. send_msg(ssock,set_name(PLAYER_NAME))
  15. if start:
  16. send_msg(ssock, start_game())
  17. while True:
  18. bmsg = ssock.recv(1024)
  19. if len(bmsg) <= 0:
  20. print('read 0; hangup')
  21. exit(3)
  22. msg = str(bmsg, 'utf-8').strip()
  23. jmsg = json.loads(msg)
  24. print(jmsg)
  25. msg_type = parse_server_message(jmsg)
  26. print('parsed msg_type:', msg_type)
  27. if msg_type == 'query':
  28. action = get_action(jmsg)
  29. print('parsed action:', action)
  30. if action == 'give_card':
  31. bot_give_card(jmsg)
  32. elif action == 'select_row':
  33. bot_select_row(jmsg)
  34. else:
  35. print('unknown message action:', action)
  36. else:
  37. print('unknown message type:', msg_type)
  38. def bot_give_card(msg):
  39. print('about to give card')
  40. hand = msg.get('hand')
  41. print(hand, '->', min(hand))
  42. msg = give_card(min(hand))
  43. send_msg(ssock,msg)
  44. return min(hand)
  45. def bot_select_row(msg):
  46. print('about to select row')
  47. msg = choose_row(0)
  48. send_msg(ssock,msg)
  49. return 0
  50. if __name__ == '__main__':
  51. try:
  52. while True:
  53. listen(len(sys.argv)>1)
  54. except KeyboardInterrupt:
  55. print('interrupt - exiting')
  56. #TODO: close
  57. exit(9)