playerVeryGood.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import numpy as np
  2. import playerConfig
  3. class Player():
  4. def __init__(self):
  5. return
  6. def Step(self,step=0,own_state=[],known_state_opponent=[]):
  7. chaos = 5-step
  8. if chaos <= 0:
  9. score=((np.array(own_state)-np.array(known_state_opponent))*playerConfig.Weights).sum()
  10. if score>0:
  11. return playerConfig.ACT
  12. return playerConfig.PASS
  13. our_first_card = range(known_state_opponent[0]-chaos if known_state_opponent[0]-chaos > 0 else 0, known_state_opponent[0]+1)
  14. our_second_card = range(known_state_opponent[1]-chaos if known_state_opponent[1]-chaos > 0 else 0, known_state_opponent[1]+1)
  15. our_third_card = range(known_state_opponent[2]-chaos if known_state_opponent[2]-chaos > 0 else 0, known_state_opponent[2]+1)
  16. our_fourth_card = range(known_state_opponent[3]-chaos if known_state_opponent[3]-chaos > 0 else 0, known_state_opponent[3]+1)
  17. print(our_first_card, our_second_card, our_fourth_card, our_third_card)
  18. our_results = []
  19. for first in our_first_card:
  20. for second in our_second_card:
  21. for third in our_third_card:
  22. for fourth in our_fourth_card:
  23. our_results.append(((np.array(own_state)-np.array([first, second, third, fourth]))*playerConfig.Weights).sum() > 0)
  24. our_prob = (our_results.count(True) / len(our_results))*100
  25. if our_prob > 70:
  26. return playerConfig.ACT
  27. if our_prob < 31:
  28. return playerConfig.PASS
  29. return playerConfig.LOOK