-
Notifications
You must be signed in to change notification settings - Fork 0
/
console.cpp
123 lines (115 loc) · 3.12 KB
/
console.cpp
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
#include "console.h"
#include "data.h"
#include "move.h"
#include "misc.h"
#include <iostream>
#include <string>
using namespace std;
void displayHelp()
{
cout << "\nwuttang > new : Start a new game"
<< "\nwuttang > quit : To exit"
<< "\nwuttang > setdepth : Set depth of search"
<< "\nwuttang > settime : Set time of search"
<< "\nwuttang > print : Show board"
<< "\nwuttang > setboard : Enter FEN for position"
<< "\nwuttang > reset : To reset time and depth"
<< "\nwuttang > Enter moves in e7e8q notation";
}
void Console_loop(Position &pos, searchInfo &info)
{
string input;
int time = 10000;
int move;
info.timeset = true;
info.depthset = false;
info.depth = maxDepth;
pos.parseFEN(startFEN);
cout << "Type help for commands : \n";
while(true)
{
cout << "\nwuttang > ";
cin.sync();
getline(cin, input);
if (input == "help")
{
displayHelp();
}
else if (input == "new")
{
pos.parseFEN(startFEN);
}
else if (input == "quit")
{
info.quit = true;
}
else if (input == "print")
{
pos.display();
}
else if (input == "setdepth")
{
do {
cout << "\nwuttang > Enter depth of search : ";
cin >> info.depth;
if (info.depth <= 0)
{
cout << "wuttang > Invalid depth!";
}
} while (info.depth <= 0);
info.depthset = true;
info.timeset = false;
}
else if (input == "settime")
{
do {
cout << "\nwuttang > Enter time of search : ";
cin >> time;
if (time <= 0)
{
cout << "wuttang > Invalid time!";
}
time *= 1000;
} while (time <= 0);
info.timeset = true;
}
else if (input == "setboard")
{
cout << "\nwuttang > Enter FEN : ";
cin.sync();
getline(cin, input);
pos.parseFEN(input);
}
else if (input == "reset")
{
info.depthset = false;
info.depth = maxDepth;
time = 10000;
info.timeset = true;
}
else
{
move = parseMove(input, pos);
if (move == NOMOVE)
{
cout << "\nwuttang > Invalid Move!";
}
else
{
pos.makeMove(move);
if (info.timeset)
{
info.starttime = getTimeMS();
info.stoptime = info.starttime + time;
}
cout << '\n';
cin.sync();
searchPosition(pos, info);
}
}
if (info.quit)
{
break;
}
}
}