-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
170 lines (115 loc) · 4.45 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
from Checkers_state import *
import time
# from Minimax import *
# from AlphaBeta import *
# from MCTS import *
from Algorithms.MCTS import *
from GetFromNetwork import *
def move_player(checkers):
print('Turn <' + checkers.current_player + '> player')
possible_moves = checkers.get_possible_moves()
print("possible moves: ")
print(possible_moves)
good_move = False
while not good_move:
print("From which box to which [RowColumn RowColumn]? : ")
start, end = map(int, sys.stdin.readline().split())
move = [[start // 10, start % 10], [end // 10, end % 10]]
if move in possible_moves:
checkers.make_move(move)
good_move = True
def move_computer(checkers, diff):
# print('Turn <' + checkers.current_player + '> player')
move = get_move(checkers, diff)
checkers.make_move(move)
def move_computer_random(checkers):
print('Turn <' + checkers.current_player + '> player')
print('AI turn')
possible_moves = checkers.get_possible_moves()
print("possible moves: ")
print(possible_moves)
checkers.make_move(random.choice(possible_moves))
def fun1(board):
# determination for which mark the person and AI will play
# human_letter = ''
# while not (human_letter == 'A' or human_letter == 'R'):
# print('Do you want to be \'A\' (moves first) or \'R\' ?')
# human_letter = input().upper()
while checkers.get_win() is None:
move_player(checkers)
print("Win <" + checkers.get_win() + ">")
def fun2(board):
# determination for which mark the person and AI will play
human_letter = ''
while not (human_letter == 'A' or human_letter == 'R'):
print('Do you want to be \'A\' (moves first) or \'R\' ?')
human_letter = input().upper()
while checkers.get_win() is None:
if checkers.whose_turn() == human_letter.lower():
move_player(checkers)
else:
move_computer(checkers, 4)
checkers.print()
print("Win <" + checkers.get_win() + ">")
def fun3(board):
# determination for which mark the person and AI will play
human_letter = ''
while not (human_letter == 'A' or human_letter == 'R'):
print('Do you want to be \'A\' (moves first) or \'R\' ?')
human_letter = input().upper()
while checkers.get_win() is None:
if checkers.whose_turn() == human_letter.lower():
move_player(checkers)
else:
move_computer(checkers, 9)
checkers.print()
print("Win <" + checkers.get_win() + ">")
def fun4(board):
while checkers.get_win() is None:
move = get_move(checkers, 14)
checkers.make_move(move)
checkers.print()
time.sleep(0.1)
print(checkers.get_win())
def check(network_move, all_moves):
for move in all_moves:
if move[0] == network_move[0] and move[1] == network_move[1]:
return move
return None
def fun_user(checkers):
k=0
for move in checkers.get_possible_moves():
print(k, ": ", move)
k+=1
i = int(input())
# print(checkers.get_possible_moves()[i])
return checkers.get_possible_moves()[i]
if __name__ == "__main__":
print('Welcome to English draughts (checkers)!')
checkers = Checkers_state()
checkers.print()
white_experience = 500
red_experience = 500
checkers = Checkers_state()
while checkers.get_win() is None:
selected_move = 0
if checkers.get_current_player() == 'r':
print("r")
selected_move = get_rezult_from_network_r(checkers)
print("selected_move ", selected_move)
# print(checkers.get_possible_moves())
selected_move = check(selected_move, checkers.get_possible_moves())
if selected_move is None:
print("\n\n\n----------------------------------------------- the selected move is not possible -> MCTS ")
exit()
# if len(checkers.get_possible_moves()) == 1:
# selected_move = checkers.get_possible_moves()[0]
# else:
# selected_move = select_move(checkers, red_experience)
else:
print("w")
selected_move = select_move(checkers, 50)
# selected_move = fun_user(checkers)
checkers = checkers.make_move(selected_move)
checkers.print(selected_move[0])
# print("checkers.get_win() ", checkers.get_win(), "\n\n")