(env, state_winner_triples)
| 355 | |
| 356 | |
| 357 | def initialV_o(env, state_winner_triples): |
| 358 | # this is (almost) the opposite of initial V for player x |
| 359 | # since everywhere where x wins (1), o loses (0) |
| 360 | # but a draw is still 0 for o |
| 361 | V = np.zeros(env.num_states) |
| 362 | for state, winner, ended in state_winner_triples: |
| 363 | if ended: |
| 364 | if winner == env.o: |
| 365 | v = 1 |
| 366 | else: |
| 367 | v = 0 |
| 368 | else: |
| 369 | v = 0.5 |
| 370 | V[state] = v |
| 371 | return V |
| 372 | |
| 373 | |
| 374 | def play_game(p1, p2, env, draw=False): |