DheerajAlamuri commited on
Commit
ad2f54d
·
verified ·
1 Parent(s): fc47494

Upload 5 files

Browse files
Files changed (5) hide show
  1. analyzer.py +84 -0
  2. app.py +72 -0
  3. eco.csv +1001 -0
  4. requirements.txt +7 -0
  5. utils.py +91 -0
analyzer.py ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import io
2
+ import chess
3
+ import chess.pgn
4
+ from stockfish import Stockfish
5
+ from utils import (
6
+ get_opening_name,
7
+ evaluate_position,
8
+ classify_move,
9
+ get_board_image,
10
+ calculate_accuracy,
11
+ )
12
+
13
+ class ChessAnalyzer:
14
+ def __init__(self, uploaded_file, stockfish_path=r"E:\ML\chess_game_analyzer\stockfish\stockfish.exe"):
15
+ pgn_text = uploaded_file.read().decode("utf-8")
16
+ self.pgn_io = io.StringIO(pgn_text)
17
+
18
+ self.stockfish = Stockfish(path=stockfish_path)
19
+ self.game = chess.pgn.read_game(self.pgn_io)
20
+ self.board = self.game.board()
21
+ self.moves_info = []
22
+ self.white_scores = []
23
+ self.black_scores = []
24
+ self.player_names = {
25
+ "White": self.game.headers.get("White", "White"),
26
+ "Black": self.game.headers.get("Black", "Black"),
27
+ }
28
+ self.opening_name = get_opening_name(self.game)
29
+
30
+ def analyze_game(self):
31
+ node = self.game
32
+ move_number = 1
33
+
34
+ while node.variations:
35
+ next_node = node.variation(0)
36
+ move = next_node.move
37
+ san = self.board.san(move)
38
+
39
+ self.stockfish.set_fen_position(self.board.fen())
40
+ eval_before = evaluate_position(self.stockfish)
41
+
42
+ self.board.push(move)
43
+
44
+ self.stockfish.set_fen_position(self.board.fen())
45
+ eval_after = evaluate_position(self.stockfish)
46
+
47
+ move_color = "White" if self.board.turn == chess.BLACK else "Black"
48
+ cp_loss = abs(eval_before - eval_after)
49
+
50
+ move_type = classify_move(cp_loss)
51
+ board_img = get_board_image(self.board)
52
+
53
+ self.moves_info.append({
54
+ "move_number": move_number,
55
+ "move": san,
56
+ "color": move_color,
57
+ "eval_before": eval_before,
58
+ "eval_after": eval_after,
59
+ "cp_loss": cp_loss,
60
+ "type": move_type,
61
+ "image": board_img,
62
+ })
63
+
64
+ if move_color == "White":
65
+ self.white_scores.append(cp_loss)
66
+ else:
67
+ self.black_scores.append(cp_loss)
68
+
69
+ move_number += 1
70
+ node = next_node
71
+
72
+ def get_scorecards(self):
73
+ white_acc = calculate_accuracy(self.white_scores)
74
+ black_acc = calculate_accuracy(self.black_scores)
75
+ return {
76
+ "White": {
77
+ "name": self.player_names["White"],
78
+ "accuracy": white_acc,
79
+ },
80
+ "Black": {
81
+ "name": self.player_names["Black"],
82
+ "accuracy": black_acc,
83
+ }
84
+ }
app.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from analyzer import ChessAnalyzer
3
+ from PIL import Image
4
+ import io
5
+ import pandas as pd
6
+ from utils import get_eval_bar_image # NEW import
7
+
8
+ st.set_page_config(layout="wide")
9
+ st.title("♟️ Chess Game Analyzer")
10
+
11
+ uploaded_file = st.file_uploader("Upload a PGN file", type=["pgn"])
12
+
13
+ if uploaded_file:
14
+ analyzer = ChessAnalyzer(uploaded_file)
15
+ analyzer.analyze_game()
16
+
17
+ scorecards = analyzer.get_scorecards()
18
+ moves = analyzer.moves_info
19
+ opening = analyzer.opening_name
20
+
21
+ st.subheader(f"📖 Opening: {opening}")
22
+ col1, col2 = st.columns(2)
23
+ col1.metric(f"{scorecards['White']['name']} (White)", f"{scorecards['White']['accuracy']}% Accuracy")
24
+ col2.metric(f"{scorecards['Black']['name']} (Black)", f"{scorecards['Black']['accuracy']}% Accuracy")
25
+
26
+ st.markdown("---")
27
+ st.subheader("🧠 Move-by-Move Analysis")
28
+
29
+ selected_index = st.slider("Select Move Number", 1, len(moves), 1)
30
+ selected_move = moves[selected_index - 1]
31
+
32
+ # Evaluation bar and board side-by-side
33
+ from PIL import Image as PILImage
34
+
35
+ img_col, bar_col = st.columns([5, 1], gap="small")
36
+
37
+ with img_col:
38
+ st.image(
39
+ PILImage.open(io.BytesIO(selected_move["image"])),
40
+ caption=f"{selected_move['color']} plays {selected_move['move']}"
41
+ )
42
+
43
+ with bar_col:
44
+ bar_image = get_eval_bar_image(selected_move["eval_before"])
45
+ st.image(
46
+ bar_image,
47
+ use_container_width=False,
48
+ width=40
49
+ )
50
+
51
+
52
+
53
+ st.write(f"**Move Type:** `{selected_move['type']}`")
54
+ st.write(f"**Centipawn Loss:** `{int(selected_move['cp_loss'])}`")
55
+ st.write(f"**Evaluation Before:** `{selected_move['eval_before']}`")
56
+ st.write(f"**Evaluation After:** `{selected_move['eval_after']}`")
57
+
58
+ st.markdown("---")
59
+ st.subheader("📋 All Moves Table")
60
+
61
+ table_data = [
62
+ {
63
+ "Move #": move["move_number"],
64
+ "Color": move["color"],
65
+ "Move": move["move"],
66
+ "Type": move["type"],
67
+ "CP Loss": int(move["cp_loss"])
68
+ }
69
+ for move in moves
70
+ ]
71
+ df = pd.DataFrame(table_data)
72
+ st.dataframe(df, use_container_width=True)
eco.csv ADDED
@@ -0,0 +1,1001 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ eco,name,moves
2
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
3
+ B01,Scandinavian Defense,1.e4 d5
4
+ A50,Indian Game,1.d4 Nf6 2.c4
5
+ A04,Reti Opening,1.Nf3
6
+ B06,Robatsch Defense,1.e4 g6
7
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
8
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
9
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
10
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
11
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
12
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
13
+ A40,Modern Defense,1.d4 g6
14
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
15
+ B00,King's Pawn,1.e4
16
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
17
+ A00,Polish Opening,1.b4
18
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
19
+ A40,Modern Defense,1.d4 g6
20
+ A00,Polish Opening,1.b4
21
+ A50,Indian Game,1.d4 Nf6 2.c4
22
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
23
+ A00,Polish Opening,1.b4
24
+ A04,Reti Opening,1.Nf3
25
+ B12,Caro-Kann Defense,1.e4 c6
26
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
27
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
28
+ A04,Reti Opening,1.Nf3
29
+ B00,King's Pawn,1.e4
30
+ D10,Slav Defense,1.d4 d5 2.c4 c6
31
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
32
+ B20,Sicilian Defense,1.e4 c5
33
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
34
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
35
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
36
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
37
+ B12,Caro-Kann Defense,1.e4 c6
38
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
39
+ B01,Scandinavian Defense,1.e4 d5
40
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
41
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
42
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
43
+ D00,Queen's Pawn Game,1.d4 d5
44
+ A40,Modern Defense,1.d4 g6
45
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
46
+ B12,Caro-Kann Defense,1.e4 c6
47
+ D10,Slav Defense,1.d4 d5 2.c4 c6
48
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
49
+ B12,Caro-Kann Defense,1.e4 c6
50
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
51
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
52
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
53
+ B20,Sicilian Defense,1.e4 c5
54
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
55
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
56
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
57
+ A04,Reti Opening,1.Nf3
58
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
59
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
60
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
61
+ A04,Reti Opening,1.Nf3
62
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
63
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
64
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
65
+ C00,French Defense,1.e4 e6
66
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
67
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
68
+ A50,Indian Game,1.d4 Nf6 2.c4
69
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
70
+ B00,King's Pawn,1.e4
71
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
72
+ B00,King's Pawn,1.e4
73
+ B06,Robatsch Defense,1.e4 g6
74
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
75
+ D00,Queen's Pawn Game,1.d4 d5
76
+ B01,Scandinavian Defense,1.e4 d5
77
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
78
+ C00,French Defense,1.e4 e6
79
+ D10,Slav Defense,1.d4 d5 2.c4 c6
80
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
81
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
82
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
83
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
84
+ C00,French Defense,1.e4 e6
85
+ A00,Polish Opening,1.b4
86
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
87
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
88
+ B01,Scandinavian Defense,1.e4 d5
89
+ A00,Polish Opening,1.b4
90
+ B12,Caro-Kann Defense,1.e4 c6
91
+ D00,Queen's Pawn Game,1.d4 d5
92
+ D10,Slav Defense,1.d4 d5 2.c4 c6
93
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
94
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
95
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
96
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
97
+ A04,Reti Opening,1.Nf3
98
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
99
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
100
+ D00,Queen's Pawn Game,1.d4 d5
101
+ A50,Indian Game,1.d4 Nf6 2.c4
102
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
103
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
104
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
105
+ A00,Polish Opening,1.b4
106
+ B20,Sicilian Defense,1.e4 c5
107
+ B06,Robatsch Defense,1.e4 g6
108
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
109
+ D10,Slav Defense,1.d4 d5 2.c4 c6
110
+ A00,Polish Opening,1.b4
111
+ C20,King's Pawn Game,1.e4 e5
112
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
113
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
114
+ A00,Polish Opening,1.b4
115
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
116
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
117
+ B06,Robatsch Defense,1.e4 g6
118
+ B00,King's Pawn,1.e4
119
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
120
+ B00,King's Pawn,1.e4
121
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
122
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
123
+ C00,French Defense,1.e4 e6
124
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
125
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
126
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
127
+ A50,Indian Game,1.d4 Nf6 2.c4
128
+ A50,Indian Game,1.d4 Nf6 2.c4
129
+ A40,Modern Defense,1.d4 g6
130
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
131
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
132
+ D00,Queen's Pawn Game,1.d4 d5
133
+ B06,Robatsch Defense,1.e4 g6
134
+ B01,Scandinavian Defense,1.e4 d5
135
+ A00,Polish Opening,1.b4
136
+ B01,Scandinavian Defense,1.e4 d5
137
+ A50,Indian Game,1.d4 Nf6 2.c4
138
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
139
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
140
+ B20,Sicilian Defense,1.e4 c5
141
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
142
+ A00,Polish Opening,1.b4
143
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
144
+ C00,French Defense,1.e4 e6
145
+ C00,French Defense,1.e4 e6
146
+ A00,Polish Opening,1.b4
147
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
148
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
149
+ D00,Queen's Pawn Game,1.d4 d5
150
+ A50,Indian Game,1.d4 Nf6 2.c4
151
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
152
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
153
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
154
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
155
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
156
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
157
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
158
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
159
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
160
+ D10,Slav Defense,1.d4 d5 2.c4 c6
161
+ A40,Modern Defense,1.d4 g6
162
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
163
+ A40,Modern Defense,1.d4 g6
164
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
165
+ A00,Polish Opening,1.b4
166
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
167
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
168
+ B12,Caro-Kann Defense,1.e4 c6
169
+ C00,French Defense,1.e4 e6
170
+ B06,Robatsch Defense,1.e4 g6
171
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
172
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
173
+ A40,Modern Defense,1.d4 g6
174
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
175
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
176
+ A40,Modern Defense,1.d4 g6
177
+ B12,Caro-Kann Defense,1.e4 c6
178
+ D10,Slav Defense,1.d4 d5 2.c4 c6
179
+ B12,Caro-Kann Defense,1.e4 c6
180
+ B01,Scandinavian Defense,1.e4 d5
181
+ C20,King's Pawn Game,1.e4 e5
182
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
183
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
184
+ C00,French Defense,1.e4 e6
185
+ B20,Sicilian Defense,1.e4 c5
186
+ B06,Robatsch Defense,1.e4 g6
187
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
188
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
189
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
190
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
191
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
192
+ C20,King's Pawn Game,1.e4 e5
193
+ B12,Caro-Kann Defense,1.e4 c6
194
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
195
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
196
+ B01,Scandinavian Defense,1.e4 d5
197
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
198
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
199
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
200
+ B20,Sicilian Defense,1.e4 c5
201
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
202
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
203
+ B01,Scandinavian Defense,1.e4 d5
204
+ A04,Reti Opening,1.Nf3
205
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
206
+ A04,Reti Opening,1.Nf3
207
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
208
+ C20,King's Pawn Game,1.e4 e5
209
+ B01,Scandinavian Defense,1.e4 d5
210
+ C20,King's Pawn Game,1.e4 e5
211
+ A40,Modern Defense,1.d4 g6
212
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
213
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
214
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
215
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
216
+ D10,Slav Defense,1.d4 d5 2.c4 c6
217
+ C20,King's Pawn Game,1.e4 e5
218
+ C00,French Defense,1.e4 e6
219
+ B06,Robatsch Defense,1.e4 g6
220
+ A00,Polish Opening,1.b4
221
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
222
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
223
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
224
+ B01,Scandinavian Defense,1.e4 d5
225
+ A04,Reti Opening,1.Nf3
226
+ C20,King's Pawn Game,1.e4 e5
227
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
228
+ B06,Robatsch Defense,1.e4 g6
229
+ A04,Reti Opening,1.Nf3
230
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
231
+ A50,Indian Game,1.d4 Nf6 2.c4
232
+ D00,Queen's Pawn Game,1.d4 d5
233
+ B06,Robatsch Defense,1.e4 g6
234
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
235
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
236
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
237
+ A04,Reti Opening,1.Nf3
238
+ A00,Polish Opening,1.b4
239
+ A50,Indian Game,1.d4 Nf6 2.c4
240
+ B06,Robatsch Defense,1.e4 g6
241
+ A40,Modern Defense,1.d4 g6
242
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
243
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
244
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
245
+ B20,Sicilian Defense,1.e4 c5
246
+ A50,Indian Game,1.d4 Nf6 2.c4
247
+ D10,Slav Defense,1.d4 d5 2.c4 c6
248
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
249
+ B12,Caro-Kann Defense,1.e4 c6
250
+ B00,King's Pawn,1.e4
251
+ A40,Modern Defense,1.d4 g6
252
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
253
+ B00,King's Pawn,1.e4
254
+ A50,Indian Game,1.d4 Nf6 2.c4
255
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
256
+ A00,Polish Opening,1.b4
257
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
258
+ B20,Sicilian Defense,1.e4 c5
259
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
260
+ A40,Modern Defense,1.d4 g6
261
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
262
+ A04,Reti Opening,1.Nf3
263
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
264
+ A50,Indian Game,1.d4 Nf6 2.c4
265
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
266
+ B01,Scandinavian Defense,1.e4 d5
267
+ B06,Robatsch Defense,1.e4 g6
268
+ A40,Modern Defense,1.d4 g6
269
+ D10,Slav Defense,1.d4 d5 2.c4 c6
270
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
271
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
272
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
273
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
274
+ C20,King's Pawn Game,1.e4 e5
275
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
276
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
277
+ B20,Sicilian Defense,1.e4 c5
278
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
279
+ B00,King's Pawn,1.e4
280
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
281
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
282
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
283
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
284
+ B01,Scandinavian Defense,1.e4 d5
285
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
286
+ B01,Scandinavian Defense,1.e4 d5
287
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
288
+ B06,Robatsch Defense,1.e4 g6
289
+ D00,Queen's Pawn Game,1.d4 d5
290
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
291
+ C20,King's Pawn Game,1.e4 e5
292
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
293
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
294
+ D10,Slav Defense,1.d4 d5 2.c4 c6
295
+ C20,King's Pawn Game,1.e4 e5
296
+ A04,Reti Opening,1.Nf3
297
+ B12,Caro-Kann Defense,1.e4 c6
298
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
299
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
300
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
301
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
302
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
303
+ B12,Caro-Kann Defense,1.e4 c6
304
+ A50,Indian Game,1.d4 Nf6 2.c4
305
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
306
+ A50,Indian Game,1.d4 Nf6 2.c4
307
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
308
+ B00,King's Pawn,1.e4
309
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
310
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
311
+ D00,Queen's Pawn Game,1.d4 d5
312
+ C20,King's Pawn Game,1.e4 e5
313
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
314
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
315
+ A04,Reti Opening,1.Nf3
316
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
317
+ B01,Scandinavian Defense,1.e4 d5
318
+ B06,Robatsch Defense,1.e4 g6
319
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
320
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
321
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
322
+ A40,Modern Defense,1.d4 g6
323
+ C00,French Defense,1.e4 e6
324
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
325
+ B01,Scandinavian Defense,1.e4 d5
326
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
327
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
328
+ B06,Robatsch Defense,1.e4 g6
329
+ B20,Sicilian Defense,1.e4 c5
330
+ A40,Modern Defense,1.d4 g6
331
+ D10,Slav Defense,1.d4 d5 2.c4 c6
332
+ A50,Indian Game,1.d4 Nf6 2.c4
333
+ A04,Reti Opening,1.Nf3
334
+ A50,Indian Game,1.d4 Nf6 2.c4
335
+ D00,Queen's Pawn Game,1.d4 d5
336
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
337
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
338
+ C20,King's Pawn Game,1.e4 e5
339
+ A40,Modern Defense,1.d4 g6
340
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
341
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
342
+ B00,King's Pawn,1.e4
343
+ A04,Reti Opening,1.Nf3
344
+ A00,Polish Opening,1.b4
345
+ C20,King's Pawn Game,1.e4 e5
346
+ A40,Modern Defense,1.d4 g6
347
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
348
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
349
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
350
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
351
+ D10,Slav Defense,1.d4 d5 2.c4 c6
352
+ A50,Indian Game,1.d4 Nf6 2.c4
353
+ B00,King's Pawn,1.e4
354
+ B00,King's Pawn,1.e4
355
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
356
+ A00,Polish Opening,1.b4
357
+ B01,Scandinavian Defense,1.e4 d5
358
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
359
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
360
+ D00,Queen's Pawn Game,1.d4 d5
361
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
362
+ A50,Indian Game,1.d4 Nf6 2.c4
363
+ B06,Robatsch Defense,1.e4 g6
364
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
365
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
366
+ B20,Sicilian Defense,1.e4 c5
367
+ A40,Modern Defense,1.d4 g6
368
+ B12,Caro-Kann Defense,1.e4 c6
369
+ B06,Robatsch Defense,1.e4 g6
370
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
371
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
372
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
373
+ A40,Modern Defense,1.d4 g6
374
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
375
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
376
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
377
+ D00,Queen's Pawn Game,1.d4 d5
378
+ A04,Reti Opening,1.Nf3
379
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
380
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
381
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
382
+ A00,Polish Opening,1.b4
383
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
384
+ B00,King's Pawn,1.e4
385
+ C20,King's Pawn Game,1.e4 e5
386
+ D00,Queen's Pawn Game,1.d4 d5
387
+ A40,Modern Defense,1.d4 g6
388
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
389
+ B00,King's Pawn,1.e4
390
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
391
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
392
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
393
+ A40,Modern Defense,1.d4 g6
394
+ B01,Scandinavian Defense,1.e4 d5
395
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
396
+ B06,Robatsch Defense,1.e4 g6
397
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
398
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
399
+ B01,Scandinavian Defense,1.e4 d5
400
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
401
+ B12,Caro-Kann Defense,1.e4 c6
402
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
403
+ C20,King's Pawn Game,1.e4 e5
404
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
405
+ D00,Queen's Pawn Game,1.d4 d5
406
+ C00,French Defense,1.e4 e6
407
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
408
+ A40,Modern Defense,1.d4 g6
409
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
410
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
411
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
412
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
413
+ A50,Indian Game,1.d4 Nf6 2.c4
414
+ A00,Polish Opening,1.b4
415
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
416
+ D00,Queen's Pawn Game,1.d4 d5
417
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
418
+ B01,Scandinavian Defense,1.e4 d5
419
+ A04,Reti Opening,1.Nf3
420
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
421
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
422
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
423
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
424
+ B20,Sicilian Defense,1.e4 c5
425
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
426
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
427
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
428
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
429
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
430
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
431
+ C00,French Defense,1.e4 e6
432
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
433
+ C20,King's Pawn Game,1.e4 e5
434
+ A50,Indian Game,1.d4 Nf6 2.c4
435
+ B06,Robatsch Defense,1.e4 g6
436
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
437
+ C00,French Defense,1.e4 e6
438
+ C00,French Defense,1.e4 e6
439
+ C00,French Defense,1.e4 e6
440
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
441
+ A40,Modern Defense,1.d4 g6
442
+ B20,Sicilian Defense,1.e4 c5
443
+ D10,Slav Defense,1.d4 d5 2.c4 c6
444
+ B01,Scandinavian Defense,1.e4 d5
445
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
446
+ C20,King's Pawn Game,1.e4 e5
447
+ C20,King's Pawn Game,1.e4 e5
448
+ A04,Reti Opening,1.Nf3
449
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
450
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
451
+ B01,Scandinavian Defense,1.e4 d5
452
+ B20,Sicilian Defense,1.e4 c5
453
+ B00,King's Pawn,1.e4
454
+ A50,Indian Game,1.d4 Nf6 2.c4
455
+ D00,Queen's Pawn Game,1.d4 d5
456
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
457
+ D10,Slav Defense,1.d4 d5 2.c4 c6
458
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
459
+ D00,Queen's Pawn Game,1.d4 d5
460
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
461
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
462
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
463
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
464
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
465
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
466
+ A40,Modern Defense,1.d4 g6
467
+ B12,Caro-Kann Defense,1.e4 c6
468
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
469
+ B20,Sicilian Defense,1.e4 c5
470
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
471
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
472
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
473
+ B06,Robatsch Defense,1.e4 g6
474
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
475
+ A00,Polish Opening,1.b4
476
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
477
+ D10,Slav Defense,1.d4 d5 2.c4 c6
478
+ A50,Indian Game,1.d4 Nf6 2.c4
479
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
480
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
481
+ B00,King's Pawn,1.e4
482
+ D00,Queen's Pawn Game,1.d4 d5
483
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
484
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
485
+ C00,French Defense,1.e4 e6
486
+ B01,Scandinavian Defense,1.e4 d5
487
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
488
+ A40,Modern Defense,1.d4 g6
489
+ B06,Robatsch Defense,1.e4 g6
490
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
491
+ C20,King's Pawn Game,1.e4 e5
492
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
493
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
494
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
495
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
496
+ B12,Caro-Kann Defense,1.e4 c6
497
+ C00,French Defense,1.e4 e6
498
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
499
+ A00,Polish Opening,1.b4
500
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
501
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
502
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
503
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
504
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
505
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
506
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
507
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
508
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
509
+ D10,Slav Defense,1.d4 d5 2.c4 c6
510
+ A00,Polish Opening,1.b4
511
+ B00,King's Pawn,1.e4
512
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
513
+ C00,French Defense,1.e4 e6
514
+ D00,Queen's Pawn Game,1.d4 d5
515
+ B12,Caro-Kann Defense,1.e4 c6
516
+ B00,King's Pawn,1.e4
517
+ B01,Scandinavian Defense,1.e4 d5
518
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
519
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
520
+ D00,Queen's Pawn Game,1.d4 d5
521
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
522
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
523
+ B01,Scandinavian Defense,1.e4 d5
524
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
525
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
526
+ A50,Indian Game,1.d4 Nf6 2.c4
527
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
528
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
529
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
530
+ C00,French Defense,1.e4 e6
531
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
532
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
533
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
534
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
535
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
536
+ B00,King's Pawn,1.e4
537
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
538
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
539
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
540
+ A00,Polish Opening,1.b4
541
+ A00,Polish Opening,1.b4
542
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
543
+ C00,French Defense,1.e4 e6
544
+ B06,Robatsch Defense,1.e4 g6
545
+ A40,Modern Defense,1.d4 g6
546
+ D10,Slav Defense,1.d4 d5 2.c4 c6
547
+ A50,Indian Game,1.d4 Nf6 2.c4
548
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
549
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
550
+ D10,Slav Defense,1.d4 d5 2.c4 c6
551
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
552
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
553
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
554
+ B20,Sicilian Defense,1.e4 c5
555
+ B01,Scandinavian Defense,1.e4 d5
556
+ A04,Reti Opening,1.Nf3
557
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
558
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
559
+ C00,French Defense,1.e4 e6
560
+ A40,Modern Defense,1.d4 g6
561
+ A04,Reti Opening,1.Nf3
562
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
563
+ D10,Slav Defense,1.d4 d5 2.c4 c6
564
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
565
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
566
+ C20,King's Pawn Game,1.e4 e5
567
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
568
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
569
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
570
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
571
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
572
+ B00,King's Pawn,1.e4
573
+ B00,King's Pawn,1.e4
574
+ B20,Sicilian Defense,1.e4 c5
575
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
576
+ B06,Robatsch Defense,1.e4 g6
577
+ B12,Caro-Kann Defense,1.e4 c6
578
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
579
+ A04,Reti Opening,1.Nf3
580
+ C20,King's Pawn Game,1.e4 e5
581
+ B12,Caro-Kann Defense,1.e4 c6
582
+ D10,Slav Defense,1.d4 d5 2.c4 c6
583
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
584
+ C00,French Defense,1.e4 e6
585
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
586
+ B06,Robatsch Defense,1.e4 g6
587
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
588
+ A40,Modern Defense,1.d4 g6
589
+ B06,Robatsch Defense,1.e4 g6
590
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
591
+ B06,Robatsch Defense,1.e4 g6
592
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
593
+ D10,Slav Defense,1.d4 d5 2.c4 c6
594
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
595
+ B06,Robatsch Defense,1.e4 g6
596
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
597
+ C00,French Defense,1.e4 e6
598
+ D00,Queen's Pawn Game,1.d4 d5
599
+ B20,Sicilian Defense,1.e4 c5
600
+ A50,Indian Game,1.d4 Nf6 2.c4
601
+ B06,Robatsch Defense,1.e4 g6
602
+ D00,Queen's Pawn Game,1.d4 d5
603
+ C00,French Defense,1.e4 e6
604
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
605
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
606
+ D00,Queen's Pawn Game,1.d4 d5
607
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
608
+ B01,Scandinavian Defense,1.e4 d5
609
+ C20,King's Pawn Game,1.e4 e5
610
+ B06,Robatsch Defense,1.e4 g6
611
+ A04,Reti Opening,1.Nf3
612
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
613
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
614
+ A04,Reti Opening,1.Nf3
615
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
616
+ C20,King's Pawn Game,1.e4 e5
617
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
618
+ C20,King's Pawn Game,1.e4 e5
619
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
620
+ D00,Queen's Pawn Game,1.d4 d5
621
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
622
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
623
+ A50,Indian Game,1.d4 Nf6 2.c4
624
+ A50,Indian Game,1.d4 Nf6 2.c4
625
+ B01,Scandinavian Defense,1.e4 d5
626
+ B20,Sicilian Defense,1.e4 c5
627
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
628
+ A04,Reti Opening,1.Nf3
629
+ A00,Polish Opening,1.b4
630
+ D10,Slav Defense,1.d4 d5 2.c4 c6
631
+ B01,Scandinavian Defense,1.e4 d5
632
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
633
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
634
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
635
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
636
+ C20,King's Pawn Game,1.e4 e5
637
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
638
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
639
+ B01,Scandinavian Defense,1.e4 d5
640
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
641
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
642
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
643
+ C00,French Defense,1.e4 e6
644
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
645
+ B12,Caro-Kann Defense,1.e4 c6
646
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
647
+ A40,Modern Defense,1.d4 g6
648
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
649
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
650
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
651
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
652
+ B00,King's Pawn,1.e4
653
+ D00,Queen's Pawn Game,1.d4 d5
654
+ B06,Robatsch Defense,1.e4 g6
655
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
656
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
657
+ A04,Reti Opening,1.Nf3
658
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
659
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
660
+ A04,Reti Opening,1.Nf3
661
+ A00,Polish Opening,1.b4
662
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
663
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
664
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
665
+ B06,Robatsch Defense,1.e4 g6
666
+ C20,King's Pawn Game,1.e4 e5
667
+ A00,Polish Opening,1.b4
668
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
669
+ D00,Queen's Pawn Game,1.d4 d5
670
+ C00,French Defense,1.e4 e6
671
+ A00,Polish Opening,1.b4
672
+ C00,French Defense,1.e4 e6
673
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
674
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
675
+ C20,King's Pawn Game,1.e4 e5
676
+ B00,King's Pawn,1.e4
677
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
678
+ B01,Scandinavian Defense,1.e4 d5
679
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
680
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
681
+ D10,Slav Defense,1.d4 d5 2.c4 c6
682
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
683
+ B06,Robatsch Defense,1.e4 g6
684
+ A04,Reti Opening,1.Nf3
685
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
686
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
687
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
688
+ D00,Queen's Pawn Game,1.d4 d5
689
+ D00,Queen's Pawn Game,1.d4 d5
690
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
691
+ C20,King's Pawn Game,1.e4 e5
692
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
693
+ B01,Scandinavian Defense,1.e4 d5
694
+ B00,King's Pawn,1.e4
695
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
696
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
697
+ D10,Slav Defense,1.d4 d5 2.c4 c6
698
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
699
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
700
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
701
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
702
+ B00,King's Pawn,1.e4
703
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
704
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
705
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
706
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
707
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
708
+ B01,Scandinavian Defense,1.e4 d5
709
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
710
+ B00,King's Pawn,1.e4
711
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
712
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
713
+ D10,Slav Defense,1.d4 d5 2.c4 c6
714
+ B00,King's Pawn,1.e4
715
+ C20,King's Pawn Game,1.e4 e5
716
+ B12,Caro-Kann Defense,1.e4 c6
717
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
718
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
719
+ B12,Caro-Kann Defense,1.e4 c6
720
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
721
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
722
+ B20,Sicilian Defense,1.e4 c5
723
+ B06,Robatsch Defense,1.e4 g6
724
+ B12,Caro-Kann Defense,1.e4 c6
725
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
726
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
727
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
728
+ C00,French Defense,1.e4 e6
729
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
730
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
731
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
732
+ B01,Scandinavian Defense,1.e4 d5
733
+ B20,Sicilian Defense,1.e4 c5
734
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
735
+ B20,Sicilian Defense,1.e4 c5
736
+ D10,Slav Defense,1.d4 d5 2.c4 c6
737
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
738
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
739
+ A50,Indian Game,1.d4 Nf6 2.c4
740
+ B00,King's Pawn,1.e4
741
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
742
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
743
+ A40,Modern Defense,1.d4 g6
744
+ C00,French Defense,1.e4 e6
745
+ B06,Robatsch Defense,1.e4 g6
746
+ B12,Caro-Kann Defense,1.e4 c6
747
+ B12,Caro-Kann Defense,1.e4 c6
748
+ B12,Caro-Kann Defense,1.e4 c6
749
+ B06,Robatsch Defense,1.e4 g6
750
+ C20,King's Pawn Game,1.e4 e5
751
+ B12,Caro-Kann Defense,1.e4 c6
752
+ B06,Robatsch Defense,1.e4 g6
753
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
754
+ B12,Caro-Kann Defense,1.e4 c6
755
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
756
+ A40,Modern Defense,1.d4 g6
757
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
758
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
759
+ D10,Slav Defense,1.d4 d5 2.c4 c6
760
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
761
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
762
+ A40,Modern Defense,1.d4 g6
763
+ B20,Sicilian Defense,1.e4 c5
764
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
765
+ D00,Queen's Pawn Game,1.d4 d5
766
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
767
+ C00,French Defense,1.e4 e6
768
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
769
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
770
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
771
+ D00,Queen's Pawn Game,1.d4 d5
772
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
773
+ A40,Modern Defense,1.d4 g6
774
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
775
+ C00,French Defense,1.e4 e6
776
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
777
+ C20,King's Pawn Game,1.e4 e5
778
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
779
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
780
+ D10,Slav Defense,1.d4 d5 2.c4 c6
781
+ A50,Indian Game,1.d4 Nf6 2.c4
782
+ B00,King's Pawn,1.e4
783
+ D00,Queen's Pawn Game,1.d4 d5
784
+ A00,Polish Opening,1.b4
785
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
786
+ A04,Reti Opening,1.Nf3
787
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
788
+ B12,Caro-Kann Defense,1.e4 c6
789
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
790
+ B20,Sicilian Defense,1.e4 c5
791
+ B20,Sicilian Defense,1.e4 c5
792
+ B20,Sicilian Defense,1.e4 c5
793
+ C00,French Defense,1.e4 e6
794
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
795
+ A50,Indian Game,1.d4 Nf6 2.c4
796
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
797
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
798
+ C20,King's Pawn Game,1.e4 e5
799
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
800
+ C20,King's Pawn Game,1.e4 e5
801
+ B00,King's Pawn,1.e4
802
+ C00,French Defense,1.e4 e6
803
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
804
+ D10,Slav Defense,1.d4 d5 2.c4 c6
805
+ A00,Polish Opening,1.b4
806
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
807
+ D10,Slav Defense,1.d4 d5 2.c4 c6
808
+ A04,Reti Opening,1.Nf3
809
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
810
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
811
+ A40,Modern Defense,1.d4 g6
812
+ B01,Scandinavian Defense,1.e4 d5
813
+ B12,Caro-Kann Defense,1.e4 c6
814
+ A50,Indian Game,1.d4 Nf6 2.c4
815
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
816
+ A00,Polish Opening,1.b4
817
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
818
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
819
+ B06,Robatsch Defense,1.e4 g6
820
+ B12,Caro-Kann Defense,1.e4 c6
821
+ B00,King's Pawn,1.e4
822
+ C00,French Defense,1.e4 e6
823
+ D00,Queen's Pawn Game,1.d4 d5
824
+ C20,King's Pawn Game,1.e4 e5
825
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
826
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
827
+ C20,King's Pawn Game,1.e4 e5
828
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
829
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
830
+ B01,Scandinavian Defense,1.e4 d5
831
+ B06,Robatsch Defense,1.e4 g6
832
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
833
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
834
+ A40,Modern Defense,1.d4 g6
835
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
836
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
837
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
838
+ B01,Scandinavian Defense,1.e4 d5
839
+ D00,Queen's Pawn Game,1.d4 d5
840
+ C20,King's Pawn Game,1.e4 e5
841
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
842
+ D10,Slav Defense,1.d4 d5 2.c4 c6
843
+ D10,Slav Defense,1.d4 d5 2.c4 c6
844
+ C00,French Defense,1.e4 e6
845
+ A50,Indian Game,1.d4 Nf6 2.c4
846
+ C20,King's Pawn Game,1.e4 e5
847
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
848
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
849
+ D10,Slav Defense,1.d4 d5 2.c4 c6
850
+ A04,Reti Opening,1.Nf3
851
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
852
+ A00,Polish Opening,1.b4
853
+ B00,King's Pawn,1.e4
854
+ C20,King's Pawn Game,1.e4 e5
855
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
856
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
857
+ A40,Modern Defense,1.d4 g6
858
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
859
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
860
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
861
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
862
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
863
+ A50,Indian Game,1.d4 Nf6 2.c4
864
+ B01,Scandinavian Defense,1.e4 d5
865
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
866
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
867
+ B12,Caro-Kann Defense,1.e4 c6
868
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
869
+ D00,Queen's Pawn Game,1.d4 d5
870
+ C00,French Defense,1.e4 e6
871
+ C20,King's Pawn Game,1.e4 e5
872
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
873
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
874
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
875
+ A40,Modern Defense,1.d4 g6
876
+ B01,Scandinavian Defense,1.e4 d5
877
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
878
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
879
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
880
+ A40,Modern Defense,1.d4 g6
881
+ B00,King's Pawn,1.e4
882
+ B12,Caro-Kann Defense,1.e4 c6
883
+ A50,Indian Game,1.d4 Nf6 2.c4
884
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
885
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
886
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
887
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
888
+ B20,Sicilian Defense,1.e4 c5
889
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
890
+ C00,French Defense,1.e4 e6
891
+ C20,King's Pawn Game,1.e4 e5
892
+ D00,Queen's Pawn Game,1.d4 d5
893
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
894
+ B00,King's Pawn,1.e4
895
+ D10,Slav Defense,1.d4 d5 2.c4 c6
896
+ B00,King's Pawn,1.e4
897
+ C20,King's Pawn Game,1.e4 e5
898
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
899
+ B06,Robatsch Defense,1.e4 g6
900
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
901
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
902
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
903
+ A50,Indian Game,1.d4 Nf6 2.c4
904
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
905
+ B06,Robatsch Defense,1.e4 g6
906
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
907
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
908
+ B07,Pirc Defense,1.e4 d6 2.d4 Nf6
909
+ B00,King's Pawn,1.e4
910
+ B00,King's Pawn,1.e4
911
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
912
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
913
+ B12,Caro-Kann Defense,1.e4 c6
914
+ C00,French Defense,1.e4 e6
915
+ B06,Robatsch Defense,1.e4 g6
916
+ B00,King's Pawn,1.e4
917
+ D10,Slav Defense,1.d4 d5 2.c4 c6
918
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
919
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
920
+ A04,Reti Opening,1.Nf3
921
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
922
+ A00,Polish Opening,1.b4
923
+ D10,Slav Defense,1.d4 d5 2.c4 c6
924
+ C20,King's Pawn Game,1.e4 e5
925
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
926
+ B06,Robatsch Defense,1.e4 g6
927
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
928
+ A00,Polish Opening,1.b4
929
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
930
+ A40,Modern Defense,1.d4 g6
931
+ C20,King's Pawn Game,1.e4 e5
932
+ A50,Indian Game,1.d4 Nf6 2.c4
933
+ B00,King's Pawn,1.e4
934
+ C00,French Defense,1.e4 e6
935
+ A00,Polish Opening,1.b4
936
+ D00,Queen's Pawn Game,1.d4 d5
937
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
938
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
939
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
940
+ E60,King's Indian Defense,1.d4 Nf6 2.c4 g6 3.Nc3 Bg7
941
+ A40,Modern Defense,1.d4 g6
942
+ A04,Reti Opening,1.Nf3
943
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
944
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
945
+ A40,Modern Defense,1.d4 g6
946
+ D10,Slav Defense,1.d4 d5 2.c4 c6
947
+ C00,French Defense,1.e4 e6
948
+ C00,French Defense,1.e4 e6
949
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
950
+ B12,Caro-Kann Defense,1.e4 c6
951
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
952
+ C00,French Defense,1.e4 e6
953
+ B12,Caro-Kann Defense,1.e4 c6
954
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
955
+ A00,Polish Opening,1.b4
956
+ C00,French Defense,1.e4 e6
957
+ A50,Indian Game,1.d4 Nf6 2.c4
958
+ B20,Sicilian Defense,1.e4 c5
959
+ A04,Reti Opening,1.Nf3
960
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
961
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
962
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
963
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
964
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
965
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
966
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
967
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
968
+ B12,Caro-Kann Defense,1.e4 c6
969
+ A00,Polish Opening,1.b4
970
+ C00,French Defense,1.e4 e6
971
+ D10,Slav Defense,1.d4 d5 2.c4 c6
972
+ E20,Nimzo-Indian Defense,1.d4 Nf6 2.c4 e6 3.Nc3 Bb4
973
+ A46,Queen's Pawn,1.d4 Nf6 2.Nf3
974
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
975
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
976
+ C00,French Defense,1.e4 e6
977
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
978
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
979
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
980
+ C44,Scotch Game,1.e4 e5 2.Nf3 Nc6 3.d4
981
+ B01,Scandinavian Defense,1.e4 d5
982
+ A00,Polish Opening,1.b4
983
+ B06,Robatsch Defense,1.e4 g6
984
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
985
+ C20,King's Pawn Game,1.e4 e5
986
+ C20,King's Pawn Game,1.e4 e5
987
+ C15,French Defense: Winawer,1.e4 e6 2.d4 d5 3.Nc3 Bb4
988
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
989
+ A50,Indian Game,1.d4 Nf6 2.c4
990
+ C50,Italian Game,1.e4 e5 2.Nf3 Nc6 3.Bc4
991
+ B01,Scandinavian Defense,1.e4 d5
992
+ B01,Scandinavian Defense,1.e4 d5
993
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
994
+ C60,Ruy Lopez,1.e4 e5 2.Nf3 Nc6 3.Bb5
995
+ E00,Catalan Opening,1.d4 Nf6 2.c4 e6 3.g3
996
+ C41,Philidor Defense,1.e4 e5 2.Nf3 d6
997
+ C20,King's Pawn Game,1.e4 e5
998
+ D00,Queen's Pawn Game,1.d4 d5
999
+ B01,Scandinavian Defense,1.e4 d5
1000
+ D30,Queen's Gambit Accepted,1.d4 d5 2.c4 dxc4
1001
+ D06,Queen's Gambit Declined,1.d4 d5 2.c4 e6
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ streamlit
2
+ python-chess
3
+ stockfish
4
+ cairosvg
5
+ matplotlib
6
+ pillow
7
+ pandas
utils.py ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import io
2
+ import matplotlib.pyplot as plt
3
+ import chess.svg
4
+ import cairosvg
5
+ import pandas as pd
6
+ from PIL import Image, ImageDraw
7
+
8
+ def get_opening_name(game):
9
+ try:
10
+ df = pd.read_csv("eco.csv")
11
+ df.dropna(subset=["moves", "name"], inplace=True)
12
+ df["moves"] = df["moves"].str.strip()
13
+ df["name"] = df["name"].str.strip()
14
+ df["eco"] = df["eco"].str.strip()
15
+
16
+ board = game.board()
17
+ moves = []
18
+ for move in game.mainline_moves():
19
+ moves.append(board.san(move))
20
+ board.push(move)
21
+
22
+ # Reconstruct PGN-style numbered move string (e.g., 1.e4 e5 2.Nf3 Nc6 ...)
23
+ move_str = ""
24
+ for i in range(len(moves)):
25
+ if i % 2 == 0:
26
+ move_str += f"{(i // 2) + 1}.{moves[i]} "
27
+ else:
28
+ move_str += f"{moves[i]} "
29
+ move_str = move_str.strip()
30
+
31
+ best_match = "Unknown Opening"
32
+ best_length = 0
33
+
34
+ for _, row in df.iterrows():
35
+ opening_moves = row["moves"]
36
+ if move_str.startswith(opening_moves) and len(opening_moves) > best_length:
37
+ best_match = f"{row['eco']} - {row['name']}"
38
+ best_length = len(opening_moves)
39
+
40
+ return best_match
41
+ except Exception as e:
42
+ return f"Error: {e}"
43
+
44
+ def evaluate_position(stockfish):
45
+ eval_info = stockfish.get_evaluation()
46
+ if eval_info["type"] == "cp":
47
+ return eval_info["value"]
48
+ elif eval_info["type"] == "mate":
49
+ return 10000 if eval_info["value"] > 0 else -10000
50
+ return 0
51
+
52
+ def classify_move(cp_loss):
53
+ if cp_loss < 15:
54
+ return "Best"
55
+ elif cp_loss < 50:
56
+ return "Excellent"
57
+ elif cp_loss < 100:
58
+ return "Good"
59
+ elif cp_loss < 200:
60
+ return "Inaccuracy"
61
+ elif cp_loss < 500:
62
+ return "Mistake"
63
+ else:
64
+ return "Blunder"
65
+
66
+ def get_board_image(board):
67
+ svg = chess.svg.board(board, size=350)
68
+ png_data = cairosvg.svg2png(bytestring=svg)
69
+ return png_data
70
+
71
+ def calculate_accuracy(cp_losses):
72
+ if not cp_losses:
73
+ return 100.0
74
+ avg_loss = sum(cp_losses) / len(cp_losses)
75
+ acc = max(0, 100 - avg_loss / 10)
76
+ return round(acc, 2)
77
+
78
+ def get_eval_bar_image(cp_score):
79
+ height = 350
80
+ img = Image.new("RGB", (40, height), "gray")
81
+ draw = ImageDraw.Draw(img)
82
+
83
+ cp_score = max(min(cp_score, 1000), -1000)
84
+ norm = cp_score / 2000 + 0.5
85
+ white_height = int(norm * height)
86
+
87
+ draw.rectangle([0, 0, 40, height - white_height], fill="black")
88
+ draw.rectangle([0, height - white_height, 40, height], fill="white")
89
+
90
+ return img
91
+