From 3d545d6e8c7bfed14d43144d96d770d8e7cf9ff1 Mon Sep 17 00:00:00 2001 From: Jean Bovet Date: Fri, 7 May 2021 18:21:25 -0700 Subject: [PATCH] Improved PGN parser to be easier to understand --- BChess.xcodeproj/project.pbxproj | 16 + BChess/CaroKann.pgn | 1774 ++++++++++++++++++++++++ BChess/Openings.pgn | 4 +- BChess/e4NYStyle.pgn | 628 +++++++++ BChessTests/PGNTests.cpp | 121 +- Shared/Engine/Engine/ChessGame.hpp | 1 + Shared/Engine/Engine/ChessOpenings.cpp | 1 + Shared/Engine/Helpers/FPGN.cpp | 659 +++++---- Shared/Engine/Helpers/FPGN.hpp | 52 +- 9 files changed, 2908 insertions(+), 348 deletions(-) create mode 100644 BChess/CaroKann.pgn create mode 100644 BChess/e4NYStyle.pgn diff --git a/BChess.xcodeproj/project.pbxproj b/BChess.xcodeproj/project.pbxproj index 28fc485..3584ef4 100644 --- a/BChess.xcodeproj/project.pbxproj +++ b/BChess.xcodeproj/project.pbxproj @@ -54,6 +54,12 @@ A775236C25AD6533009BFFD1 /* Openings.pgn in Resources */ = {isa = PBXBuildFile; fileRef = A7C92AA91FF6EE5500160D2E /* Openings.pgn */; }; A775237625AD68FA009BFFD1 /* Animation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A775237525AD68FA009BFFD1 /* Animation.swift */; }; A775237725AD68FA009BFFD1 /* Animation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A775237525AD68FA009BFFD1 /* Animation.swift */; }; + A77BA8B42645AEDD00ABA501 /* e4NYStyle.pgn in Resources */ = {isa = PBXBuildFile; fileRef = A77BA8B22645AEDD00ABA501 /* e4NYStyle.pgn */; }; + A77BA8B52645AEDD00ABA501 /* e4NYStyle.pgn in Resources */ = {isa = PBXBuildFile; fileRef = A77BA8B22645AEDD00ABA501 /* e4NYStyle.pgn */; }; + A77BA8B62645AEDD00ABA501 /* e4NYStyle.pgn in Resources */ = {isa = PBXBuildFile; fileRef = A77BA8B22645AEDD00ABA501 /* e4NYStyle.pgn */; }; + A77BA8B72645AEDD00ABA501 /* CaroKann.pgn in Resources */ = {isa = PBXBuildFile; fileRef = A77BA8B32645AEDD00ABA501 /* CaroKann.pgn */; }; + A77BA8B82645AEDD00ABA501 /* CaroKann.pgn in Resources */ = {isa = PBXBuildFile; fileRef = A77BA8B32645AEDD00ABA501 /* CaroKann.pgn */; }; + A77BA8B92645AEDD00ABA501 /* CaroKann.pgn in Resources */ = {isa = PBXBuildFile; fileRef = A77BA8B32645AEDD00ABA501 /* CaroKann.pgn */; }; A77F66C825A832270030E61D /* Tests_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77F66C725A832270030E61D /* Tests_iOS.swift */; }; A77F66D325A832270030E61D /* Tests_macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77F66D225A832270030E61D /* Tests_macOS.swift */; }; A77F66D525A832270030E61D /* BChessUIApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77F66AC25A832230030E61D /* BChessUIApp.swift */; }; @@ -237,6 +243,8 @@ A77372001FE320010001A90F /* FPGN.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = FPGN.hpp; sourceTree = ""; }; A77372041FE340780001A90F /* PGNTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PGNTests.cpp; sourceTree = ""; }; A775237525AD68FA009BFFD1 /* Animation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Animation.swift; sourceTree = ""; }; + A77BA8B22645AEDD00ABA501 /* e4NYStyle.pgn */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = e4NYStyle.pgn; sourceTree = ""; }; + A77BA8B32645AEDD00ABA501 /* CaroKann.pgn */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CaroKann.pgn; sourceTree = ""; }; A77F66AC25A832230030E61D /* BChessUIApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BChessUIApp.swift; sourceTree = ""; }; A77F66AD25A832240030E61D /* ChessDocument.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChessDocument.swift; sourceTree = ""; }; A77F66AE25A832240030E61D /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; @@ -578,6 +586,8 @@ children = ( A7AFCCA91FB4E40D00AE3D85 /* main.swift */, A7712D3F1FCB97A800E7E802 /* BChess-Bridging-Header.h */, + A77BA8B32645AEDD00ABA501 /* CaroKann.pgn */, + A77BA8B22645AEDD00ABA501 /* e4NYStyle.pgn */, A7C92AA91FF6EE5500160D2E /* Openings.pgn */, A7712D301FC7C4D300E7E802 /* UCI */, ); @@ -770,7 +780,9 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + A77BA8B72645AEDD00ABA501 /* CaroKann.pgn in Resources */, A7C92AAB1FF6F19100160D2E /* Openings.pgn in Resources */, + A77BA8B42645AEDD00ABA501 /* e4NYStyle.pgn in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -778,8 +790,10 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + A77BA8B82645AEDD00ABA501 /* CaroKann.pgn in Resources */, A775236C25AD6533009BFFD1 /* Openings.pgn in Resources */, A77F66DB25A832270030E61D /* Assets.xcassets in Resources */, + A77BA8B52645AEDD00ABA501 /* e4NYStyle.pgn in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -787,8 +801,10 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + A77BA8B92645AEDD00ABA501 /* CaroKann.pgn in Resources */, A775236325AD6532009BFFD1 /* Openings.pgn in Resources */, A77F66DC25A832270030E61D /* Assets.xcassets in Resources */, + A77BA8B62645AEDD00ABA501 /* e4NYStyle.pgn in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/BChess/CaroKann.pgn b/BChess/CaroKann.pgn new file mode 100644 index 0000000..eb27b99 --- /dev/null +++ b/BChess/CaroKann.pgn @@ -0,0 +1,1774 @@ +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Caro-Kann"] +[Black "Repertoire Overview"] +[Result "*"] +[ECO "B15"] +[Annotator "Gotham"] +[PlyCount "28"] + +{Welcome to my 2021 updated Caro-Kann course! In our introductory file I would +like to give you an overview of our repertoire. This is not a comprehensive +file of every single line, rather it can serve you as a roadmap as to White's +and Black's options. I will also outline where I present several options for +Black and my thoughts on how you can pick your preferred lines.} 1. e4 c6 { +Here we go! Our idea is to occupy the center with c6-d5 and adopt a light +square strategy. By attacking White's e4 pawn we also strive to give our Bc8 a +home on f5 square, although as we will see we don't always utilize the +possibility.} 2. d4 {Surely the best move for White is to occupy the center +but he also has some other viable options} (2. Nc3 d5 3. Nf3 {Is a very +popular and sound variation known as the "Two Knights." This variation has +seen a surge of popularity in the last years as it has been recommended in +several White repertoires and new ideas have been found.} Bg4 {is the solid +and most popular move. The main line goes} (3... dxe4 {Capturing on e4 seeks +to transpose to positions seen in the Tartakower Classical variation (see main +line) which have been revived with new ideas for Black in recent years.} 4. +Nxe4 Nf6) (3... a6 {This little pawn nudge is roughly 50x less popular than +the main move 3..Bg4 so it contains great surprise value. It also scores 56% +for Black! We are making a small useful waiting move to control the b5 square +and considering playing Bg4 at a more opportune moment.}) 4. h3 Bxf3 5. Qxf3 e6 +{[%csl Gb7,Gc1,Gc6,Gd5,Ge6,Gf1,Gf7] Where White is happy to get the bishop +pair but Black is very solid and puts the pawns on the light squares. There +have been many setups tried for White here but I have an offbeat suggestion +for Black involving a Kingside fianchetto:}) (2. Nf3 d5 3. exd5 cxd5 4. d4 { +is an offshoot type of Exchange Variation of the Caro. White goes for simple +development but lets Black do the same. The resulting middgames are give us +comfortable play as I will show in the files.}) (2. c4 {is known as the +"Pseudo-Panov" and after} d5 3. exd5 cxd5 4. cxd5 (4. d4 {is the Panov}) 4... +Nf6 {White has some options to try to cause trouble before Black collects the +pawn back and short castles. With knowledge of a few key lines Black will +emerge in good shape. I would say this line is not really seen much nowadays +and is not popular at club level, although it is completely respectable.}) (2. +d3 {is a "KIA" (Kings Indian Attack) setup which of course will have it's +Kings Indian fans. I've definitely seen it a fair bit online and several times +OTB but we will get a good game by taking over the center} d5 3. Nd2 e5) 2... +d5 3. Nc3 {Protecting the pawn with Nc3/Nd2 is known as the "Classical" +variation. Nothing more classical than developing a piece and protecting the +center! This variation remains extremely popular but in my opinion is not as +challenging as the Advance variation (3. e5).} (3. Nd2 dxe4 {Will transpose to +3. Nc3}) (3. e5 $1 {I believe that the Advance Variation may be the "best" +line at White's disposal. The idea is clear: grab the space! Now the main move +is 3...Bf5, a move that is certainly very adequate and developing. However, I +am rolling with the less popular 3..c5!} c5 $5 4. dxc5 $1 {This greedy move is +considered critical. White grabs the pawn and dares Black to retrieve it!} (4. +c3 {This is a very important move to analyze. Although 4. dxc5! is arguable +most challenging, 4. c3 is roughly 3x more popular at the club level. However +this move is not so tough as it allows Black a version of a "good french". +Something like:} Nc6 5. Nf3 Bg4 6. Be2 e6 {[%csl Rd4,Gg4][%cal Gd8b6,Gg8h6, +Gg8e7,Ge7f5,Gh6f5] is an example! The position has a French structure (e4 e6 +d4 d5 e5 c5) with the key distinction of Black's Bc8 being active on g4! This +is another reason I am happy to recommend 3..c5: many opponents will +unwittingly allow us this juicy continuation.}) (4. c4 $5 {is an aggressive +option}) 4... Nc6 $5 {This is the ambitious way to continue. We refuse to +close the Bc8! I think that unless White has deep theoretical knowledge of the +position then Nc6 would be my choice (and has been vs several master+ players). +However White does have some challenging retorts that we need to deal with.} ( +4... e6 {is a solid alternative})) (3. exd5 cxd5 4. Bd3 {[%cal Gc1f4,Gc2c3, +Gb1d2,Gg1f3] This is the "Exchange Variation" and is a very popular line with +Masters and Amateurs alike. It is also a very frequent guest in online play. +The allure of this line for White is the promise of a simple developmental +setup with potential attacking chances.} (4. c4 {This is the "Panov-Botvinnik +Attack." This variation often gives rise to the famous "IQP" (Isolated Queen's +Pawn) structures that has been debating and analyzed endlessly over the past +century. There isn't anything particularly wrong with this line for White in +my view its popularity has been dwindling. I used to place it in the "Big +Four" of Classical, Advance, and Exchange variations but I think now the Two +Knights is more popular. Anyway, my main recommendation is the g6 fianchetto +which can be very unpleasant for White to face if he is unprepared (a common +issue here for club/amateur players!). My surprise recommendation is one that +I've used successfully myself and will either give you a second option or you +can even make it your main idea!} Nf6 5. Nc3 g6 {My preference. By +fianchettoing our Bf8 we keep the Bc8 open and also seek to put additional +pressure onto the d4 pawn.} (5... Nc6 6. Nf3 (6. Bg5 Ne4 $5 {This line can +lead to very dynamic play}) 6... Be6 {Surprise! This quirky move seeks to +resolve the pressure on the d5 pawn and force White to make a decision.}) 6. +Nf3 (6. Qb3 $1 Bg7 7. cxd5 {is the main and critical line. We sacrifice a pawn +but will try to collect it back in the future! Again as I have said about +several of the lines in this overview, this is a line that either a Master or +well prepared opponent will use. Of course I have analyzed this idea deeply to +give you good retorts in either case. Nevertheless if you are facing an +unprepared or amateur opponent then the inferior 6. Nf3?! will be seen more +often!}) 6... Bg7 7. Be2 O-O 8. O-O dxc4 9. Bxc4 Nc6 {[%csl Rd4][%cal Gg7d4, +Gc6d4,Gd8d4,Gc8g4,Gb7b6,Gc8b7] is a pleasant anti-IQP position!}) 4... Nc6 5. +c3 Nf6 (5... Qc7 {[%cal Rc1f4] This main line option prevents Bf4 and has +generally scored very strongly for Black.}) 6. Bf4 Bg4 {continues simple +development and usuall White wil try to attack our kingside while we storm the +queenside} (6... g6 $5 {This was the first line I learned vs the Exchange I +really liked and have shown it to many of my students. The resulting positions +are easy to play and White is often unsure how to meet them. Definitely +recommend this line for u2200 play:} 7. Nd2 Bg7 8. Ngf3 O-O 9. O-O Bf5 10. Bxf5 +gxf5 {Black scores 56% here. We will occupy e4 and perhaps use the g-file to +attack})) (3. f3 {This is the "Fantasy Variation". This can be a very +unpleasant line to face without preparation as White seeks to have a big +center and attack/squash us.} e6 {Keeping things nice and solid, frustrating +White.} (3... e5 $5 {A violent counterattacking gambit!} 4. dxe5 Bc5 {[%csl +Re1]}) 4. Nc3 Qb6 $5 {Bringing the queen out early but placing annoying +pressure on the d4/b2 pawns. This move has scored excellently for Black but is +not very popular. That is a perfect repertoire weapon for my checklist!}) 3... +dxe4 4. Nxe4 Nf6 {This variation has been around for a while but perhaps did +not enjoy the best reputation as Black is seemingly doubling his pawns for no +gain. However it is apparent nowadays that such thinking was too simplistic +and Nf6 is enjoying a big surge in popularity. I definitely think this is the +move to learn as your main weapon.} (4... Bf5 {This is the main move and is +known as the Capablanca variation. This move is perfectly fine and I have +played it myself for many years and many games} 5. Ng3 Bg6 {White actually has +a lot of pesky sideline setups here but we will just overview the main line} 6. +h4 h6 7. Nf3 e6 $5 {is very interesting and a modern twist. Black doesn't mind +allowing Ne5 and also hopes that the Nb8 may jump to c6 instead in the future. +I think Black is doing fine after Nd7 as well but White may be less prepared +to deal with this modern try} (7... Nd7 {This is the very well explored "old +main line" and often times the opening moves are blitzed here} 8. h5 Bh7 9. Bd3 +Bxd3 10. Qxd3 e6 11. Bd2 Ngf6 12. O-O-O Be7 13. Kb1 O-O 14. Ne4 Nxe4 15. Qxe4 +Nf6 16. Qe2 Qd5 {While both sides had deviations along the way, this is really +the main line with 750 games played. Again I should say that this "Old Main +Line" is fine for black but has arguably been better trodden than the paths of +7..e6!? or the earlier 4... Nf6 Tartakower.})) 5. Nxf6+ {Really this makes the +most sense but of course we will look at alternatives in the main file.} exf6 +$1 {[%cal Gf8d6,Gc8e6,Ge8g8,Gb8d7] As mentioned, Black does get doubled pawns +but now development will flow as free as water. Often times Black will also +get attacking chances on the Kingside by pointing his pieces there and +potentially even sacrificing and pawn storming!} 6. Nf3 {An unprepared +opponent is way more likely to develop naturally as such and the resulting +positions will give Black excellent play and activity. Although I don't think +Nf3 is the best move it is still important to learn and understand the +resulting positions for Black.} (6. c3 {This move, or rather the setup that +follows, has been established as White's most testing idea. Many experienced +players may know this from reviewing their openings but it is very rare for an +unprepared player to play this idea at the board.} Bd6 7. Bd3 O-O 8. Qc2 Re8+ +9. Ne2 {Now Black has to make a decision regarding protecting the h7 pawn. +This variation was considered better for White for many years but recently has +been a fertile battle ground for many Grandmasters as Black discovered the idea +} h5 $1 {This move was first played in 2014 but did not recieve attention +until it was repeated in 2017 by several Grandmasters. Since then hundreds of +games have tested this move and it is firmly the main line. The idea in a +nutshell is to get the pawn out of harm's way and often times push it to h4. +The subtleties will be further explored in the Tartakower file. Now White has +a choice: castle long or short? With a few key ideas, Black's game will be +easy to handle regardless and I believe this is an excellent repertoire option +for spirited play}) 6... Bd6 7. h3 O-O 8. Be2 Re8 9. O-O Be6 10. Be3 Nd7 11. +Qd2 Nf8 12. Rfe1 Qd7 13. Rad1 Bxh3 $1 14. gxh3 Qxh3 $19 {[%cal Ge8e4,Ge4g4] is +a taste of how Black can develop and get an attack. See the files for more!} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Exchange Caro"] +[Black "Quick-Starter"] +[Result "*"] +[ECO "B13"] +[Annotator "Gotham"] +[PlyCount "62"] +[EventDate "2017.??.??"] + +{We will examine an instructive game in the Exchange Caro Kann (ECK). The ECK +is a popular approach from White who hopes to play natural developing moves +and get a kingside attack. This variation leads to the important pawn +structure known as the "Carlsbad Structure." For now, we will look at a +slightly unusual approach from Black involving a kingside fianchetto.} 1. e4 c6 +2. d4 d5 3. exd5 cxd5 4. Bd3 {[%cal Gc2c3,Gc1f4,Gg1f3,Gb1d2] This is the +Exchange Caro. White wants to play: C3, Nf3, Nd2, Bf4, 0-0, Re1, Ne5 and get +some kingside attack.} Nc6 5. c3 Nf6 6. Bf4 (6. Nf3 {Experienced White ECK +players will often delay Nf3 to prevent us from pinning the Knight. We can +continue with the fianchetto or take the opportunity to play Bg4} Bg4 {[%cal +Ge7e6,Gf8e7,Ge7d6,Ge8g8,Ga8b8,Gb7b5,Gg4h5,Gh5g6] The plan for Black: e6, Be7/ +Bd6, 0-0 and start a pawn minority attack on the queenside with b5-b4 (often +supported by Rb8). The Bg4 can drop back to h5-g6 to defend the Kingside and +nullify the strong Bd3}) 6... g6 $5 {This is the first idea I ever used +against the ECK. It somewhat cuts across White's plans of a kingside attack by +blunting the Bd3. Therefore, we make White's task trickier because he can't +rely on the same ideas. Futhermore, the main idea is actually the sneaky move +Bf5!} 7. Nf3 Bg7 8. O-O O-O 9. Nbd2 {White is finishing up his setup.} Bf5 $1 { +Our main idea! Now White almost always plays} 10. Bxf5 gxf5 {At first it looks +like Black has used a terrible plan: He has weakened his King's position and +ruined his pawn structure. Actually, both of these "disadvantages" are going +to be Black's advantages (or he hopes!). The King is actually not weak, but +Black will try to attack with Kh8 and Rg8! And the pawn structure is actually +not damaged, but instead Black gains more control over the center and +especially the e4 square. Let's have a quick look at how a Grandmaster used +these ideas to score an emphatic win.} 11. Ne5 Nxe5 12. Bxe5 e6 13. Nf3 Kh8 $1 +{Getting ready to play Rg8 and then Ne4!} 14. Qb3 Qe7 15. c4 $6 {I don't like +this move for White because now he has an isolated pawn and Black gains the d5 +outpost for his pieces.} dxc4 16. Qxc4 Rg8 17. Rac1 Nd5 18. Qc5 Qe8 19. Bxg7+ +Rxg7 {I really like Black's position and his plans are also very easy to +follow. He is simply building up on the g-file.} 20. Rc2 f6 $1 {Taking control +of the e5 square and preparing Qh5. A key rule of attacking: Bring all your +pieces into the attack!!} 21. Rfc1 Qh5 22. Qa3 Rag8 23. g3 Qh3 {Black has a +lot of pressure against White's king. How should he break through?} 24. Qd6 f4 +$1 {Another key principle of attacking: Open files so that your pieces can +invade!} 25. Rc8 fxg3 26. Rxg8+ Rxg8 27. fxg3 (27. hxg3 Ne3 $1) 27... Ne3 28. +Kf2 Ng4+ 29. Kg1 Nxh2 $3 {Open files for your pieces to invade!!} 30. Kf2 Ng4+ +31. Kg1 {0-1 (31) Masternak,G (2320)-Malisauskas,V (2505)/ Mikolajki 1991/ +White resigned before Black can put up the finishing touches with:} e5 $1 { +Summary: The Exchange Caro is a popular option for White who just wants to +follow a simple development scheme and attack the Kingside. We will cut across +these plans with a solid Kingside fianchetto followed by the quirky Bf5! In +the resulting pawn structure, Black has a stronghold on the central light +squares and the key plan of attacking along the g-file.} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Panov-Botvinnik Attack"] +[Black "Quick-Starter"] +[Result "*"] +[ECO "D94"] +[Annotator "Gotham"] +[PlyCount "70"] +[EventDate "2017.??.??"] + +{This file is about the Panov-Botvinnik Attack (PBA). It is a reasonably +popular option for White on all levels, especially scholastic. White is aiming +for an attacking IQP structure where he will rely on the activity of his +pieces as well as many well tested maneuvers to attack our king. To cut across +White's plans, I'm recommending the less popular approach of a Kingside +Fianchetto. The fianchetto setup I am going to show is considered the BEST way +to set up against an IQP structure (more on that below) but it works best when +White doesn't know the most testing anti-fianchetto idea} 1. e4 c6 2. d4 d5 3. +exd5 cxd5 4. c4 {This is the PBA. White is putting pressure against the center +and wishes to reach the famous IQP structure.} Nf6 5. Nc3 g6 $5 {If we can get +away with setting up a fianchetto system, then we are going to be doing very +well. First of all, our kingside will be very secure against White's attacking +attempts (usually done with a battery Bc2-Qd3) . Second, our Bg7 will not only +be a powerful defender but also will exert great pressure against the d4 +weakness. Finally, since we have not played e6 our Bc8 will be free to wander +(although we can put it on b7 as well). Futhermore, I am also a fan of this +system since it is not well known by our opponents and their usual plans don't +work against it (you will see I have great emphasis on the practical +applicability of our openings!).} 6. Nf3 $6 {This perfectly natural developing +move is already inaccurate. This move looks very natural and it is very +popular. That is great news for us! The reason it is not precise is because it +doesn't disturb our position at all. If we get our desired setup in, then +White will feel the pain of the weakness of d4.} (6. Qb3 $1 {This is the BEST +move for White and it's annoying because they want to win our pawn! There is +no good way to defend so it we are going to sacrifice it...but aim to get it +back in the future (and win our nice IQP position).} Bg7 7. cxd5 O-O 8. Be2 { +[%cal Ge2f3,Gg1e2,Ge2f4] White is going to do his best to defend d5, Black is +going to do his best to win it back. This is a critical variation, but to be +honest I would advise focusing on the BOLDED line more because it will be more +popular in your games for now. However we will explore this variation later +and of course especially if you start facing it a lot. I have attached a good +example of Black's strategy:} Nbd7 9. Bf3 Nb6 10. Nge2 Bg4 $1 {Getting rid of +a defender of d5.} 11. Bxg4 Nxg4 12. O-O Nf6 13. Nf4 Qd7 14. Be3 Rfd8 {So +Black wins the pawn and can go about putting pressure on the IQP!} 15. d6 Qxd6 +16. Nb5 Qb8 17. Rac1 Nbd5 18. Nxd5 Nxd5 19. Rc5 e6 20. Rfc1 b6 21. Rc6 Rd7 22. +Qc4 Qf8 23. Bg5 h6 24. Bh4 a6 25. Rc8 Rxc8 26. Qxc8 Qxc8 27. Rxc8+ Kh7 28. Nc3 +Bxd4 {Just like that, Black is a pawn up. 0-1 (42) Kokkila, T (2260)-Arkell,K +(2545)/Bratislava 1996/}) 6... Bg7 {White usually tries to develop his pieces +normally here} 7. Be2 O-O 8. O-O Nc6 9. h3 (9. c5 {This is an important move +to have a look at because some players make this pawn push in some positions. +Here White doesn't get an IQP but the d4 pawn is still exposed. Usually Black +can play moves like Bg4 putting pressure on it and sometimes striking in the +center with e5. However almost always the key response is:} Ne4 $1 {Unleashing +the Bg7!} 10. Be3 Nxc3 $1 {A great move with the idea:} 11. bxc3 b6 $1 12. cxb6 +axb6 {White no longer has an IQP but his c3 and a2 pawns are weak which is +also a big problem. On top of that, Black also has great control over the +light squares (such as c4). Why is this so important? Because sometimes in +this variation Black makes a "Trade of Advantages." Sometimes it is a good +idea to take on c3 if you get something significant in return (like the +backwards c3 pawn and the c4 outpost)} 13. Qd2 Ba6 $1) 9... dxc4 $1 10. Bxc4 { +We have reached an IQP position..... the type of pawn structure White is going +for in the PBA. Except...this is the best possible version for Black! All our +pieces will soon find good squares and White will lack active play in return +for his structural concession (pawn on d4 is isolated). Black's main plans +here a mix: pressure the d4 pawn and play for the light squares on d5/c4. The +games below are important to study because they show how Black can slowly take +over the game and put White on the defensive. Here is Black's usual win +strategy: develop pieces on influential squares (that control light squares) +by playing b6-Bb7-Na5-Rc8-Nc4 (Nd5) (usually), followed by some combo of +Qd6+Rd8 (pressure d4) pawn....followed by favorable trades and winning the d4 +pawn and then winning the endgame!} b6 $1 {I like this plan the best. Black is +going to place both bishops on the long diagonals, very influential} 11. Be3 +Bb7 12. Qd2 Rc8 13. Be2 Nb4 $5 {[%cal Gb4d5]} (13... Na5 {[%cal Ga5c4]}) (13... +e6 $5 {[%cal Gc6e7]}) 14. Rac1 Nbd5 {A common theme in these structures is +that Black really enjoys using the outpost in front of the IQP.} 15. Bh6 Nxc3 +$1 {It looks like Black is helping White remedy his IQP issue but actually +he's prepared a nice tactic:} 16. bxc3 Ne4 17. Qe3 Rxc3 $1 18. Rxc3 Nxc3 19. +Bc4 Nd5 20. Qd2 Qd6 21. Bxg7 Kxg7 22. Re1 {A common type of position in this +structure. Due to White's weaknesses and Black's piece activity Black wins a +pawn and technically grinds the point away:} e6 23. Ne5 Nf6 24. Qf4 Rd8 25. Rd1 +Bd5 26. Bxd5 Qxd5 27. a3 Qe4 28. Qxe4 Nxe4 29. Nc6 Rd7 30. f3 Nc3 31. Rd3 Nd5 +32. Kf2 Rc7 33. Ne5 f6 34. Ng4 Rc2+ 35. Kg3 Rxg2+ {0-1 (35) Orehek,S (2092) +-Matlakov,M (2694)/Tallinn EST 2016/ Summary: A long file but there is +actually not a lot to memorize....rather I wanted to show several very +instructive games that showcase Black's positional strategies in exploiting +the IQP as well as the light squares. The fianchetto option is very effective +because it cuts across White's standard ideas of a Kingside attack. On top of +that most players play the inspid Nf3 instead of Qb3 or cxd5. We have seen the +ideas Black should employ in the resulting IDEAL IQP: b6, Bb7, Na5/Nb4, Rc8 +and make GOOD TRADES w/PRESSURE AGAINST d4!} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Classical Caro Nc3/Nd2"] +[Black "Quick-Starter"] +[Result "*"] +[ECO "B15"] +[Annotator "Gotham"] +[PlyCount "74"] +[EventDate "2017.??.??"] + +{Time for a look at the Classical Variation. In response, we are going to play +the Tartakower Variation. In the Tartakower, we endure a slight positional +concession (doubled pawns) but in return we gain free and easy development. +Our main worry is the endgame where our double pawns will not let us make a +passed pawn. However in the middle game, these pawns provide strong cover for +our kingside and can often even be advanced forward to create an attack.} 1. e4 +c6 2. d4 d5 3. Nc3 (3. Nd2 dxe4 4. Nxe4 Nf6 {Transposition}) 3... dxe4 4. Nxe4 +Nf6 5. Nxf6+ {White really has to take} ({It's hard to come up with a move for +White that makes sense here that doesn't take f6. Maybe this is one:} 5. Ng3 h5 +$1 {Aiming to push h4 and maybe h3!} 6. h4 c5 {[%cal Gb8c6,Gc8g4,Ge7e6]}) 5... +exf6 {[%cal Gf8d6,Gc8e6,Ge8g8,Gd8c7,Gh8e8,Ga8d8,Gb8d7] This is the Tartakower. +Our pawns are doubled but our bishops have wide open diagonals. Beautiful +development is ahead! Objectively White is doing alright too as he has no +doubled pawns and simple development as well. However if White is not careful +he may succumb to a surprisingly quick kingside attack.} 6. c3 {White's +development scheme will rarely affect our main idea of: Bd6, 0-0, Qc7, Re8 and +usually Be6, Nd7, Rd8 after. As you will see from the games I attached, Black +as some other ideas that include: Nd7-Nf8-Ng6. The idea of this maneuver is to +bring the knight to the Kingside (maybe h4 or f4 next) in order to start +probing/attacking. Also, pushing the Kingside pawns with g6+h5/f5 is on the +cards. Sometimes the move b5! is good too in order to take control of the +light squares.} (6. Nf3 Bd6 7. Bd3 O-O 8. O-O Re8 9. h3 {Both sides are +developing normally and Black is putting his pieces on our designated squares.} +Nd7 10. Be3 Nf8 11. c4 Be6 12. Rc1 {So far everything is standard....but Black +comes up with an aggressive (and strong!) idea!} Qd7 $1 {[%csl Rh3][%cal Ge6h3] +There wasn't much for the queen to attack on the b8-h2 diagonal (with Qc7) so +Black takes aim at a REAL target: h3!} 13. Qc2 Bxh3 $1 14. gxh3 Qxh3 15. Qd1 { +Black has blown White's king cover and now just needs to bring pieces into the +attack.} f5 {[%cal Ge8e6,Ge6g6]} (15... Ng6 {[%cal Gg6h4]} 16. Bxg6 hxg6 { +[%cal Ge8e4,Ge4g4]}) 16. Re1 Re6 17. Ng5 Rg6 {0-1 (17) Zsigmond,K (2117)-Kral, +P (2221)/Hungary 2007/ A surprising finish! This idea is definitely not rare, +keep it in mind!}) 6... Bd6 7. Bd3 O-O {We know that Black gets easy +development in this variation, but then what? This is why I am going to +explain the 2 games below. In both games, Black got effective kingside play by +pushing his "inferior" pawn majority.} 8. Qc2 {This is considered to be the +best setup for White but depending on your level you may not really see it too +much and the Nf3 setups will be more relevant} Re8+ 9. Ne2 h6 {[%cal Gb8d7, +Gd7f8,Gc8e6,Gd8c7,Ga8d8]} (9... h5 $5 {is considered to be best nowadays but +let's see some good ideas after the old main move of 9..h6}) 10. Be3 Nd7 11. +O-O Nf8 12. Rfe1 Qc7 13. Ng3 Be6 14. c4 Rad8 {Black has reached our desired +setup. All the pieces are on their designated squares! But ok.... White is +also develping well and is controlling the center. What should Black do next?} +15. a3 Bc8 {Opening up the e and d files for the rooks.} (15... h5 $5 {Was +already possible, threatening h4.} 16. Nxh5 Bxh2+ 17. Kh1 Bg4 {is annoying for +White!}) 16. Rad1 Bg4 $5 17. Rc1 h5 $1 {Black takes the opportunity to push +the Kingside pawns and disturb White's pieces. As we saw in the game attached +above, the kingside pawn advance can be very effective in forcing (luring) +White to weaken his pawn structure} 18. Bf5 g6 19. Bd3 h4 20. Nf1 h3 $1 21. g3 +f5 $1 {[%csl Gf5,Gf7,Gg4,Gg6,Gh3] Black is establishing a very impressive and +effective light square bind. As I wrote above, the Caro is an opening founded +on building on c6-d5 (light squares) so always be on the lookout for +conquering more light squares! The h3 pawn is like a thorn here, White push be +careful of a queen on g2! Now with f5, Black wants to place something on e4 or +simply push f4.} 22. f4 {Again White stops f4 as emphatically as he can but at +the cost of a perpetual weakness on e4. Black is much better here!} Be7 $1 { +Rerouting to f6 to pressure d4 pawn as the h2-b8 diagonal is no longer +promising} 23. Nd2 Bf6 24. Nb3 b6 25. Qf2 Qd7 26. Be2 Re4 27. Bxg4 fxg4 28. +Rcd1 Qf5 29. Bc1 Rxe1+ 30. Rxe1 Qd3 31. Re3 Qxc4 32. Rc3 Qd5 33. Be3 Ne6 34. +Qc2 c5 35. dxc5 Bxc3 36. bxc3 bxc5 37. c4 Qf3 {0-1 (37) Ziaziulkina,N (2350) +-Alexandrova,O (2427)/Warsaw POL 2013/ Summary: The Tartakower is a very easy +to play opening where we get free-flowing development. However, I am also +arming you with an active and potentially very effective plan: the Kingside +expansion! After developing your pieces (don't forget the common Nd7-Nf8 +maneuver with ideas of Ne6/Ng6 but usually just to open up the rooks) look for +ways to push h5/f5 and either push your opponent's pieces back or force (light +square) weaknesses. Or both! Also keep in mind the shocking Bxh3! idea we saw +in the game above.} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Advance Caro"] +[Black "Quick-Starter"] +[Result "*"] +[ECO "B12"] +[Annotator "Gotham"] +[PlyCount "22"] +[EventDate "2017.??.??"] + +{In the Advance Variation White avoids the liquidation of the center and seeks +to establish a space advantage instead. Our goal will be to pester White's +center and maneuver into an "improved french" type of position.} 1. e4 c6 2. d4 +d5 3. e5 c5 $5 {Losing a tempo voluntarily but immediaetly challenging White's +spacial advantage.} 4. c3 $6 {This is arguably the most natural move at +White's disposal and from my experience very popular in u2200 (and certainly +lower) games. However this move already crowns our opening strategy as a +success as we will be able to develop comfortably.} (4. dxc5 $1 {This +paradoxical capture is best! White wants to cause trouble while Black is busy +getting the pawn back.} Nc6 {Our two main responses are Nc6 and e6. I think +Nc6 has the best pay off if the opponent is not prepared. The idea is to +develop and get the pawns back.} 5. Nf3 {A logical decision to develop and +defend e5} (5. Bb5 e6 {[%csl Rc5]} 6. Be3 Nge7 $1 {[%cal Ge7f5] A typical +maneuver to f5 in order to pressure the Be3} 7. c3 Bd7 8. Bxc6 Bxc6 9. Nf3 Nf5 +10. Bd4 Nxd4 11. cxd4 b6 $1 12. cxb6 Qxb6 $44 {with great compensation due to +the queenside diagonals and files}) (5. a3 {A dangerous idea} e6 6. Nf3 (6. b4 +$2 a5 $1) 6... Bxc5 {[%cal Gf7f6,Gg8e7,Ge7g6] Black can continue with f7-f6 or +Nge7-Nc6 w/0-0 and a later f6}) (5. f4 {This is either a good or bad move... +depending on White's knowledge!} Nh6 $5 {prioritizing development and light +square control. A sample idea is} 6. Nf3 Bg4 7. Be3 Nf5 8. Bf2 g5 $1 $146 9. +fxg5 e6 {[%csl Rc5,Re5,Rg5]}) 5... Bg4 6. Bb5 (6. c3 $5 {Preparing b4 and +opening up ideas of Qa4} e6 7. Be3 (7. b4 g6 $5 {going for Bg7 to attack e5}) +7... a6 $5 {stopping ideas of Bb5 in order to capture on e5}) 6... Qa5+ $1 7. +Nc3 {Now White can't play c3-b4} e6 {[%csl Gc5]} 8. Be3 Nge7 {[%cal Ge7f5]} 9. +a3 O-O-O {[%cal Gd5d4]} 10. b4 Bxf3 11. gxf3 Qc7 $13) (4. Nf3 cxd4 5. Nxd4 Nc6) +(4. c4 {This is a little sophisticated but White wants to explode the center.} +cxd4 5. Nf3 (5. Qxd4 $6 Nc6 6. Qxd5 Qc7 $5 {[%cal Gc8f5,Ga8d8] gambits a pawn +for rapid development}) 5... e6 {a solid response} (5... Bg4 {is also ok but +could get messy}) 6. Nxd4 Nc6 7. Nc3 Bb4 {[%cal Gg8e7] prioritizing development +} (7... Bc5)) 4... Nc6 5. Nf3 {White is being very accodating allowing us the +nice Bg4 pin, but this is what most of my opponents did!} (5. Be3 cxd4 6. cxd4 +Nh6 $1) 5... cxd4 6. cxd4 {Black's plan here is easy: e6, Ne7, Nf5 to pressure +the d4 pawn. Usually he also plays Qb6+Be7+0-0. The d4 pawn is a huge target +and White will struggle to defend it. Very often he just loses this pawn!} Bg4 +7. Be2 e6 8. O-O Nge7 9. Be3 Nf5 10. Nbd2 Be7 11. Nb3 O-O $15 {[%csl Rd4][%cal +Gd8b6,Ga8c8,Ga7a5] 0-1 (29) De Dompablo Fantova,J (1715)-Del Rio de Angelis,S +(2505) Tres Cantos 2013} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Other Caro Lines"] +[Black "Quick-Starter"] +[Result "*"] +[ECO "B11"] +[Annotator "Gotham"] +[PlyCount "10"] +[EventDate "2017.??.??"] + +{Time to wrap up our Simple Caro journey by looking at some "Miscellaneous" +lines. These lines are not bad, but historically have not been as common as +the Big 4. However the Two Knights has been seeing a surge of action in past +years} 1. e4 c6 2. Nc3 (2. d4 d5 3. f3 {The Fantasy Variation. White wants to +keep 2 pawns in the center.} e5 $5 {a violent response} (3... e6 {is more solid +} 4. Nc3 Qb6 {[%csl Rb2,Rd4][%cal Gc6c5] Keeping an eye on the b2 & d4 pawns +while preparing a future c6-c5, usually after Nf6 first}) 4. dxe5 (4. exd5 exd4 +5. Qxd4 cxd5 {[%cal Gg8f6,Gb8c6]}) 4... Bc5 {The point, the Ke1 can't castle +easily and Qb6 is on the agenda} 5. Nc3 Ne7 6. f4 $2 {White should focus on +developing instead of more pawn moves. His move is ambitious though as he +seeks to play Nf3} Qb6 7. Nf3 Bf2+ 8. Ke2 a5 $5 $44 {Now Na4 can be met by Qa7: +0-1 (15) Di Nicolantonio,L (2408)-Loiseau,Q (2470) Paris 2019}) (2. c4 { +This is called the "Pseudo-Panov" It can transpose into the Panov but +sometimes White changes it up.} d5 3. exd5 (3. cxd5 cxd5 4. exd5 Nf6 { +Transposes}) 3... cxd5 4. cxd5 (4. d4 {Panov}) 4... Nf6 5. Nc3 (5. Qa4+ Nbd7 { +[%cal Gg7g6,Gf8g7,Ge8g8,Gd7b6]}) (5. Bb5+ Nbd7 {Block both checks with the +knight and try to regain the d5 pawn. Develop with g6-Bg7.}) 5... Nxd5 6. Nf3 +Nxc3 $5 {a simpler solution here to cut down on theory} (6... Nc6 {Although +developing here is all good. If white doesn't do anything special we can play +g6, fianchetto, castle and pressure the IQP} 7. Bc4 (7. Bb5 e6 8. O-O Be7) (7. +d4 {Although this line could be a bit challenging} g6 $5 8. Qb3 (8. Bc4 Nb6 9. +Bb3 Bg7 {[%cal Ge8g8]}) 8... Nxc3 (8... e6) 9. Bc4 $1 Nd5 10. Bxd5 e6 11. Bxc6+ +bxc6 $13) 7... Nb6 8. Bb3 Bf5 {[%cal Ge7e6,Gf8e7]}) 7. bxc3 g6 8. d4 Bg7 { +[%cal Gb8c6,Gb8b6,Gc8b7,Gc6a5,Ga8c8] This is called the "Hanging Pawns" +structure. It's a close cousin of the IQP (the b2 pawn moved to c3). Black's +plan here is: 0-0, Nc6, b6, Bb7, Na5, Rc8 and play on the light squares.}) (2. +Nf3 d5 3. exd5 cxd5 4. d4 Nf6 {is simplest to continue with Nc6/Bg4, there is +also the option of g6-Bf5 vs Bd3}) (2. d3 d5 3. Nd2 e5 {[%cal Gg8f6,Gf8d6, +Gb8d7]} 4. Ngf3 Bd6 5. g3 Nf6 6. Bg2 O-O 7. O-O Re8 {With a board full of +pieces but extra space for Black. Further development with Nbd7 and b6 (a5) +Bb7/Ba6 is recommended.}) (2. f4 {allows us to control a lot of light squares} +d5 3. e5 Bf5 4. d4 e6 5. Nf3 h5 6. Bd3 Nh6 {planning an eventual c6-c5}) 2... +d5 3. Nf3 {Two Knights: White just gets on with development and will adjust +his plans based on our reply} (3. Qf3 dxe4 {is simplest and solid} 4. Nxe4 Nd7 +{Looking for normal development}) (3. Qe2 $5 {a rare line I've actually taught +several of my students} d4 4. Nd1 {is White's weird idea to play f4 Nf2 later} +e5 5. g3 Nf6 6. d3 Bb4+ $5 {trying to trade dark square bishops} 7. c3 Ba5 8. +Bd2 O-O $15 {0-1 (31) Efanov,N (2399)-Riazantsev,A (2646) Minsk 2015}) (3. d4 +dxe4 4. f3 {The Blackmar-Diemer gambit} exf3 (4... e5 {is a good option if you +want to decline the gambit}) 5. Nxf3 (5. Qxf3 $6 Qxd4 6. Be3 Qb4 7. O-O-O $2 +Bg4) 5... Nf6 6. Bc4 Bf5 7. O-O e6 8. Ne5 Bg6 9. Bg5 Be7 {w/Nd7 coming and +huge solidity with the extra pawn}) 3... Bg4 (3... a6 $5 4. d4 Bg4 {is a rarer +version of the Bg4 idea}) 4. h3 Bxf3 5. Qxf3 e6 {is very solid. a possible +idea is to develop with g6-Bg7 but the natural Nf6-Be7 is also reasonable} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Classical Caro"] +[Black "3..Nf6 Tartakower"] +[Result "*"] +[ECO "B15"] +[Annotator "Gotham"] +[PlyCount "94"] + +{We begin our exploration of the Tartakower variation against the Classical +Nc3/Nd2. In the Tartakower, we endure a slight positional concession (doubled +pawns) but in return we gain free and easy development. The Tartakower has +been enjoying both a spike in popularity and results due to new analysis that +supports Black's cause. In the past there was a prevalent worry that the +doubled pawns would be a long term weakness that would sink Black's chances in +the endgame. However in the middle game, these pawns provide strong cover for +our kingside and can often even be advanced forward to create an attack.} 1. e4 +c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Nf6 {Transposition} 5. Nxf6+ ({It's hard to +come up with a more logical move for White than taking on f6. Maybe this is +one:} 5. Ng3 {The knight is hopping around too much so we should seek the +intiative with} h5 $1 {Aiming to push h4 and maybe h3!} 6. h4 c5 $5 {the +computer's top recommendation is to strike the center}) (5. Ng5 Bf5 {[%cal +Ge7e6,Gh7h6] is solid and equal for Black}) 5... exf6 {[%cal Gf8d6,Gc8e6,Ge8g8] +Our plan is to play Bd6, 0-0-, Be6, Nd7 as well as Re8, Nf8, Qc7/Qd7 and +usually Rad8. We may change some of these moves up depending on White's +responses but as you can see our development will flow pretty seamlessly.} 6. +Nf3 {A logical developing move for White but actually the Nf3 is pretty +restricted} (6. Bc4 $5 {A slightly annoying move as we can't play Be6} Bd6 7. +Qe2+ $5 {A very sneaky idea to keep our king in the center} (7. Nf3 O-O 8. O-O +Bg4 $11 {Although we couldn't use the e6 square we still have the very useless +g4 square to pin the knight. Nd7/Re8/Qc7 is coming next}) 7... Qe7 {Although +the doubled pawns could be an issue in the endgame there are still many pieces +left on the board after the queen exchange.} 8. Qxe7+ Kxe7 {Here is an example +of how Black may develop:} 9. Nf3 Bf5 10. c3 Re8 11. Be3 Nd7 12. Nh4 Be6 13. +Bd3 Kf8 14. O-O Nb6 15. g3 g6 16. Ng2 Nd5 17. Bd2 b5 $11 {Black is taking +control of the center and occupying space and the light squarse. The doubled +pawns obviously aren't a problem here}) (6. Bf4 {White has tried developing +the queenside first. This has decent logic behind it since we aim to play Bd6 +and now White challenges the diagonal} Qb6 $5 {is a good try as attacking b2 +is disruptive and thematic when the Bc1 heads out early.} (6... Bd6 {is also +fine})) 6... Bd6 {This positon isn't very move order sensitive so it is more +important to learn the middlegame ideas for Black} 7. Be2 (7. Bd3 O-O 8. O-O +Re8 9. h3 {Both sides are developing normally and Black is putting his pieces +on our designated squares.} Nd7 10. Be3 Nf8 11. c4 Be6 12. Rc1 {So far +everything is standard....but Black comes up with an aggressive (and strong!) +idea!} Qd7 $1 {There wasn't much for the queen to attack on the b8-h2 diagonal +(with Qc7) so Black takes aim at a REAL target: h3!} 13. Qc2 Bxh3 $1 14. gxh3 +Qxh3 15. Qd1 {Black has blown White's king cover and now just needs to bring +pieces into the attack.} f5 {[%cal Ge8e6,Ge6g6]} (15... Ng6 {[%cal Gg6h4]} 16. +Bxg6 hxg6 {[%cal Ge8e4,Ge4g4]}) 16. Re1 Re6 17. Ng5 Rg6 {0-1 (17) Zsigmond,K +(2117)-Kral, P (2221)/Hungary 2007/ A surprising finish! This idea is +definitely not rare, keep it in mind!}) 7... O-O 8. O-O Re8 {[%cal Gc8e6,Gb8d7, +Gd7f8,Gf8g6] Here we can play our usual setup of Be6-nd7-f8-g6 and look to +sacrifice on with Bxh3 if white plays h3 or else complete development with Rd8 +and look for kingside intiative with pawn advances (f5, g5, h5)} 9. c4 (9. Re1 +Nd7 10. Bf1 Rxe1 11. Nxe1 Nf8 12. Nd3 Bf5 {Not the usual square (e6) but why +not?} 13. Be3 Qd7 14. Qd2 h5 $5 {Grabbing some space and hinting at later +aggressive possibilities (h4-h3). Black plays an absolutely beautiful game +here to display the potential of the kingside attack:} 15. Bf4 Be7 16. Re1 Ne6 +17. c3 Rd8 18. Rd1 h4 19. Be3 Qc7 20. Qe2 g5 $5 {I don't want to give the +impression that such a plan is always best or even mandatory but when it +suceeds it is a thing of beauty. Of course you cannot blindly pawn storm from +your king and need to make sure your pieces are active enough to support the +advance/cover the weaknesses} 21. Nc5 Ng7 22. h3 Bg6 23. Re1 Re8 24. Qd2 b6 25. +Nd3 Bd6 26. Be2 Be4 27. Qd1 Qe7 28. Bf3 f5 29. Ne5 Bxe5 30. dxe5 Bxf3 31. Qxf3 +f4 32. Bc1 Qc5 33. Qe4 f6 34. Rd1 Rxe5 35. Rd8+ Kf7 36. Qh7 Re1+ 37. Kh2 Qxf2 +38. Rd7+ Ke8 {0-1 (38) Wu,X (2203)-Li,C (2698) Daqing 2019}) 9... Nd7 10. Bd3 +Nf8 11. h3 Ng6 12. Qc2 Qa5 $5 {[%cal Ga5h5] The World Champion comes up with a +new take on an old plan. While Be6-Qd7 is a standard maneuver to target the h3 +pawn, Black aims for Qa5-Qh5!} (12... Be6 {[%cal Gd8d7] is "normal" and works +as well as ever} 13. Rd1 Qd7 {[%csl Rh3][%cal Ge6h3]} 14. Bf1 Bf5 15. Qc3 Rad8 +{Although being outrated by 260 points Black completely dominates the game til +the finish by using thematic kingside aggression} 16. b4 Bb8 {[%csl Rg1][%cal +Gd7c7]} 17. Be3 Qc7 18. g3 h5 19. h4 Bg4 20. Bg2 f5 $1 21. Bg5 f6 22. Bd2 f4 +23. Be1 Ne7 24. Qb3 fxg3 25. d5 cxd5 26. cxd5 Kh8 27. Nd4 gxf2+ 28. Bxf2 Qh2+ +29. Kf1 Ng6 30. Nf3 Qd6 31. Re1 Nf4 32. Bg3 Qxd5 33. Bxf4 Qb5+ 34. Kg1 Bxf4 35. +a4 Qb6+ 36. Kh1 Qf2 {0-1 (36) Nitin,S (2427)-Pranavananda,V (2163) Chennai 2017 +}) 13. c5 {Nepomniatchi rules out all possibilities of Qh5 but as we have seen +before, c4-c5 is a positionally very demanding option as the long term +weakness of d5 is troublesome.} Bb8 14. Bd2 Qd8 15. Rfe1 Be6 16. Bc4 Nf8 17. +Rad1 Bc7 {Optically it seems like White's moves have been more active than +Black's but this is just an illusion. Black's position is extremely robust and +Carlsen is preparing to unwind and take over the central outpost.} 18. Qb3 Bxc4 +19. Qxc4 Qd7 20. b4 {Nepomniatchi logically begins some kind of active play +before Carlsen consolidates. However the queenside expansion doesn't really +have any targets} Ng6 21. a4 Ne7 22. b5 Nd5 23. bxc6 bxc6 24. Qa6 g5 $1 { +If you have studied the games in this chapter carefully this move should not +be a surprise. Beautifully executed as Black fully unraveled before launching +the attack. Carlsen unsurprisingly uses his intiative with pure precision} 25. +Nh2 Bxh2+ 26. Kxh2 Kg7 27. Kg1 Rxe1+ 28. Rxe1 Rb8 29. Qd3 Rb2 30. a5 h6 31. Bc1 +Ra2 32. Bd2 Qb7 33. Re8 Qb2 34. Be1 Nf4 35. Qa6 Qxd4 36. Qc8 Ng6 37. Qxc6 Ra1 +38. Qe4 Qxc5 39. Kh2 h5 40. Qe3 Qc6 41. Bc3 Ra4 42. f3 Ra2 43. Kh1 Rc2 44. Be1 +Qb5 45. Bg3 h4 46. Bh2 Qb1+ 47. Bg1 Qf1 {0-1 (47) Nepomniachtchi,I (2767) +-Carlsen,M (2840) Doha 2016 Summary: We have mostly analyzed 6. Nf3 in this +file. If you master and understand Black's maneuvers in the example games then +you will be very happy to see Nf3, I know I am! Our usual setup is Bd6/Be6/0-0/ +Re8/Nd7-Nf8-Ng6. Some aggressive ideas include Bxh3 and h5/g5/f5 storms that +prove our pawn mass is not a weakness but a phlanax!} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Classical Caro"] +[Black "3.. Nf6 Tartakower w/ 6. c3!"] +[Result "*"] +[ECO "B15"] +[Annotator "Gotham"] +[PlyCount "44"] + +{We begin our exploration of the Tartakower variation against the Classical +Nc3/Nd2. In the Tartakower, we endure a slight positional concession (doubled +pawns) but in return we gain free and easy development. The Tartakower has +been enjoying both a spike in popularity and results due to new analysis that +supports Black's cause. In the past there was a prevalent worry that the +doubled pawns would be a long term weakness that would sink Black's chances in +the endgame. However in the middle game, these pawns provide strong cover for +our kingside and can often even be advanced forward to create an attack.} 1. e4 +c6 2. d4 d5 3. Nc3 (3. Nd2 dxe4 4. Nxe4 Nf6 {Transposition}) 3... dxe4 4. Nxe4 +Nf6 5. Nxf6+ exf6 {[%cal Gf8d6,Gc8e6,Ge8g8,Gd8c7,Gh8e8,Ga8d8,Gb8d7]} 6. c3 { +This is the most critical and best idea for White although it is mostly played +by expert level players} Bd6 7. Bd3 O-O 8. Qc2 {This is White's whole idea. +Defending h7 may lead us to making concessions} Re8+ 9. Ne2 h5 $1 {This is a +relatively very novel idea in chess theory and was first played in 2017. Since +then it has become a massive main line with 650 games played including by the +World Champion Magnus Carlsen! Black's idea is to be able to play h4 in case +White castles short (preventing Ng3 and also threatening h3). At the same time +if White castles long we will launch our open big counterattack as our +kingside pawns provide shelter} 10. Be3 {White has a major choice: Castle +short or long? After Be3 we will analyize long castle primarily while 10.0-0 +will deal with the "safer" approach} (10. Bd2 {is less popular as the Be3 is +more active than on d2. White still needs to go short or long} Nd7) (10. O-O h4 +$1 {Preventing Ng3 while menacing h3} 11. h3 {Logiacally preventing h3 but +also creating potential hook} Nd7 {Our standard development} 12. Be3 (12. Bd2 { +is similar to Be3 but also keeps the e-file open for more action} Nf8 13. Rae1 +{Both White and Black can actually set up their pieces in a number of ways. +Some ideas:} Bd7 {This move has the idea of avoiding Nf4 with tempo} (13... Bc7 +$5 {Computer recommended to open up ideas of Qd6}) 14. Kh1 Qc8 $5 15. Ng1 c5 $5 +{Unusual but successful Black decides to stike While White is reorganizing} 16. +Rxe8 Bxe8 17. Bf5 Bd7 18. Bxd7 Qxd7 19. Qe4 Qb5 $1 $15 {[%cal Gb5b2,Ga8e8, +Gb5f1]}) 12... Nf8 13. c4 {Black has a similar development choice to make here +just as in after 12. Bd2} (13. Rad1 Be6 {The natural and consistent move} ( +13... Bc7 {is perhaps simplest}) 14. c4 Rc8 $5 {[%cal Gb7b5]} 15. Qa4 g5 $5 { +A standard idea although mistimed according to the computer. OTB though Black +won a crushing game against a strong GM} (15... Ng6 $11 {[%cal Gd8d7]}) 16. d5 +cxd5 17. cxd5 Bd7 18. Qxa7 Qe7 19. Nd4 f5 20. Rfe1 Bc5 21. Qa5 b6 22. Qa6 Bxd4 +23. Bxd4 Qxe1+ 24. Rxe1 Rxe1+ 25. Bf1 Rcc1 26. Bxb6 f4 27. Bd8 Bf5 28. g4 hxg3 +29. fxg3 Bxh3 30. gxf4 gxf4 {0-1 (30) Burke,J (2562)-Liang,A (2592) Saint +Louis 2019}) 13... Bc7 {[%cal Gd8d6]} (13... Be6) (13... Bd7) 14. Rad1 Qd6 15. +Bf4 Rxe2 $1 {A very complex sacrifice but it works great for Black!} 16. Bxd6 +Rxc2 17. Ba3 $1 {Trapping the rook} Be6 $1 {The key tackle resource. White +should accept the exchange} 18. Bxc2 $146 (18. d5 Bf5 $146 19. Bxf5 Rxc4 20. d6 +Bb6 21. d7 Rf4 $1 22. Bg4 f5 {[%cal Ga8d8]} 23. Bd6 Rxf2 24. Rxf2 fxg4 $15) +18... Bxc4 19. Rfe1 Ne6 20. b3 Bd5 21. Be4 Rd8 $44 {Black's light square +blockade is formidable and d4 is weak. Black can sit tight or consider +improving with g5->Kg7->Kg6 and f5}) 10... Nd7 11. O-O-O {White throws down +the guantlet and goes for a full blooded fight. We are ready!} (11. O-O { +TR 10.0-0}) 11... Nf8 {Our typical knight maneuver except in this case it's +primarily defensive. We are ready to complete development with Be6 and attack +with b5+a5. White will often try a kingside attack with moves like h3-g4. Our +doubled pawns are very robust in taking away squares and penetrations from the +opponent} 12. Kb1 {Typical prophylactic to get the King safer while defending +a2} (12. h3 Be6 13. g4 {White tries to blow things open but} h4 {Keeps them +closed} 14. Kb1 (14. c4 Rc8 {[%cal Gb7b5]}) 14... b5 15. Rhg1 a5 (15... Bd5 { +[%cal Gd6h2]}) 16. g5 a4 17. gxf6 Qxf6 18. Bg5 Qf3 $13 {1/2-1/2 (61) Smirnov,A +(2567)-Xiong,J (2679) chess.com INT 2019}) 12... Be6 13. c4 {This has actually +been White's most common move in order to prevent b7-b5. However we will still +be able to organize this break!} (13. Nf4 $2 {is misguided since we don't care +about trading off our dark square bishop. Its all about the light squares!} +Bxf4 14. Bxf4 b5 $1 {Securing the light squares gives Black a surprisingly +strong attack} 15. Be4 Bd5 (15... Qd7 16. h3 Ng6 17. Bc1 h4 18. Rhe1 a5 $17 { +Black is playing genius chess. He dominates the light squares, blocks the +kingside, and now launches his own attack}) 16. Rhe1 Bxe4 17. Rxe4 Ne6 18. Rde1 +a5 19. Bc1 a4 {[%csl Ga4,Gb5,Gc6]} 20. f4 Qd5 $17 {This was the original game +that showed the chess world the power of 9..h5! Black went on to convert the +light square bind and surperior minor piece advantage in 0-1 (52) Abrahamyan,T +(2364)-Krush,I (2444)/Saint Louis USA 2017/}) (13. h3 Bd5 14. Rhg1 b5 15. g4 h4 +{Keeping the situation locked up} 16. g5 Bh2 $1 {A surprising defensive idea +to kick the rook off the aggressive file. If White insists on leave his rook +there then he may lose it!} 17. Rg4 Bf3 18. Rxh4 fxg5 19. Bh7+ Kh8 20. Be4+ +gxh4 21. Bxf3 Qf6 $17) 13... Rc8 {[%cal Rc8c1,Gb7b5]} 14. Nc3 Bb4 $5 {Try to +take on c3 and then play b5!} 15. Ne4 (15. a3 {helps us out a lot!} Bxc3 16. +Qxc3 b5 $1) 15... Be7 16. h3 b5 $1 {With b5 accomplished Black starts taking +over the light squares as well as opening files for his rooks} 17. g4 bxc4 18. +Bxc4 h4 $1 19. Bc1 Bd5 20. Rhe1 Ne6 21. f4 Qb6 22. Qd3 Rcd8 $15 {½- (46) ½ +(46) Mista,A (2567)-Ostrovskiy,A (2430) 2021 Summary: This chapter is a bit +more theoretical and in-depth than the previous one. 6. c3 has long been +considered the critical approach in the Tartakower since White is loading up a +powerful battery on the h7-b1 diagonal. We will respond with the key 9..h5! +Now if White castles long we play the defensive Nd7-Nf8 before launching our +counterattack with Be6 & b5. Meanwhile if White castles short we will throw in +h4 and then maybe even the aggro Bc7-Qd6} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Classical Caro"] +[Black "3.. Bf5 Capablanca Variation"] +[Result "*"] +[ECO "B19"] +[Annotator "Gotham"] +[PlyCount "32"] + +{Here we will look at a couple of additional weapons against the Classical +Caro: The true and tried 3..Bf5 Capablanca Variation. If you are like the +Tartakower Variation we examined earlier then great! Feel free to skip this +section. However if you are not satisfied or are a more experienced Caro +player check this section out. Here we will look at some more sophisticated +approaches for Black. I will warn you though, this is definitely a chapter for +regular tournament players!} 1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Bf5 5. Ng3 +Bg6 6. h4 h6 7. Nf3 e6 $5 {Historically Black always played Nd7 in order to +prevent the active Nf3-Ne5 from White. However, Black started experimenting +with the slightly provacative e6. This idea has notably been used by Magnus +Carlsen in his World Championship match against Anand. The idea is to keep the +b8 knight at home for the option of a later c5 and Nc6. By omitting Nd7 Black +hopes to develop more actively with Nc6} (7... Nd7 {The old main move isn't +bad at all} 8. h5 Bh7 9. Bd3 Bxd3 10. Qxd3 e6 11. Bd2 {The more modest bishop +development is well established as the main line. The point is to prevent Qa5+ +and prepare 0-0-0} (11. Bf4 {This move was very popular around a decade ago +but not after Black refined the aggressive approach of short castling.} Qa5+ +12. Bd2 Bb4 $1 {Luring White into weakening the queenside with pawn moves.} 13. +c3 {Although this line has been seen thousands of times it is not really tried +anymore as Black has 54% score in over 2000 databased games.} (13. Ne4 $5 { +At first Black had some trouble dealing with this move but once the shocking +solution was found all he could do is hope this line appears on the board!} +Ngf6 $1 {The Nd6+ is not so scary} 14. Nd6+ Ke7 {It turns out White can't do +anything about the lost castling rights!} 15. Nc4 (15. Nxb7 {This looks +aggressive but Black regains the pawn and will enjoy the open files} Bxd2+ 16. +Nxd2 Qb4 {[%cal Rd3a3]} 17. Qb3 Qxd4 18. O-O-O Rab8 {[%cal Gh8c8,Gc6c5,Ge7f8]} +19. Qa3+ c5 20. Na5 Rhc8) 15... Bxd2+ 16. Nfxd2 Qc7 {[%cal Gh8d8,Gc6c5] It +turns out Black is perfectly safe and will develop his rooks and retreat the +King.}) 13... Be7 14. c4 Qc7 {Black's whole idea here is to lure White to play +c4! Now we will use the strike b5 to fight for light squares.} 15. O-O-O Ngf6 { +[%cal Ge8g8,Gb7b5] Black successfully provoked c4 and will look to +counterattack with b5, even at the cost of a pawn} 16. Ne4 Nxe4 17. Qxe4 b5 $1 +{White will have to weaken the light squares, his king position, or the +integrity of his structure (get a isolated or backwards pawn).} 18. Ne5 Nxe5 +19. dxe5 bxc4 20. Qxc4 O-O 21. f4 Rad8 22. g4 Rd5 $1 23. Be3 Rfd8 24. Qe2 Qa5 { +[%cal Ra5a2]} 25. Kb1 Qa4 {[%cal Ga4d1,Ga4e4]} 26. Rxd5 Qe4+ 27. Kc1 cxd5 { +0-1 (27) Farber,N (2000)-Ostrovskiy,A (2130)/MCC FIDE Futurity 2009}) 11... +Ngf6 12. O-O-O Be7 $1 {A revolution in the Caro: Black is actually going to +play aggressively and castle on the opposite side} 13. Kb1 $1 {Prophylaxis. +White removes the king from potential harm and defends a2 A key prophylactic +move to keep a2 defended when Qd5 comes} (13. Ne4 {If White plays Ne4 without +Kb1 then Black can play Qd5 with tempo} Nxe4 14. Qxe4 Nf6 15. Qe2 (15. Qd3 $5 { +[%cal Gd3b3]} c5 $1 16. Qb5+ Qd7 17. Qxd7+ Nxd7 $11) 15... Qd5 $1 {[%cal Gd5a2, +Gd5e4] An important and common motif for Black} (15... b5 $5 {[%cal Gd8d5]}) +16. c4 (16. Kb1 b5 $5) 16... Qe4 $11) (13. Qe2 c5 (13... O-O 14. Nf1 $5 { +[%cal Gg2g4] is dangerous but Black can get counterplay that has been analyzed +to a draw after} c5 $1)) 13... O-O 14. Ne4 {Again critical. This is a common +idea for White since the Ng3 is prospectless. White also frees the g-pawn to +go down the board.} (14. Qe2 Qb6 $1 {[%cal Gc6c5] The queen gets out of the +d-file, prepares c5, and targets the White king}) 14... Nxe4 15. Qxe4 Nf6 16. +Qe2 Qd5 $1 {[%cal Gd5e4] Either the queen will be powerfully poised in the +center or we will exchange queens to negate White's kingside play.} 17. Be3 $1 +{White prevents a queen trade and wants to eventually play g4-g5 Even though +it's move 17, this position is often reached quite quickly. I've had this +position close to two dozen times with both White and Black. The idea of +White's last move was to anticipate Qe4 and to a lesser extent activate the +Rd1. If allowed, White will play g4, perhaps in conjunction with Ne5.} (17. Ne5 +Qe4 $11 {Leads to an equal endgame. White has more space but black is solid +and can prepare c5 A typical device: the endgame ensures we will not face a +vicious attack!}) 17... b5 $5 {[%cal Ga7a5,Ga5a4,Rc2c4] launches a +counterattack Black's idea is to completely prevent c4 while beginning a +queenside pawn storm} (17... Qb5 $5 {We want to provoke a familiar weakness} +18. c4 (18. Qxb5 $6 cxb5 {[%cal Gf6d5] Obviously doesn't disturb us as we get +great control of the light squares plus queenside play}) 18... Qf5+ {Black's +idea was to provoke this weakening} 19. Ka1 c5 $13 {The pendulum maneuver of +the queen has led to a profitable weakening of white's king position}) 18. Ne5 +{The move I've always faced. White aims to install a powerful central piece +while supporting g4.} Bd6 $1 {It is important to not allow White to maintain +this knight in the center.} 19. Nd3 a5 $1 {Starting our own pawn storm. It's +an opposite side castling position, so time is of essence. The game can be +decided by a single tempo!} 20. g4 a4 $132 21. f3 Qc4 $5 {[%cal Gf6d5] Having +been denied e4 the knight tries to come out via d5 to target c3.} 22. g5 Nd5 +23. gxh6 a3 $1 {[%cal Gd5c3,Gc4a2,Ga8a2] Black's kingside is collapsing but he +is able to strike first! There is no point playing defense here...only forward} +) 8. h5 {If White contains a la "Old Main Line" then Black will have an +opportunity to play with c5 and Nc6. Nevertheless this is a plausible and +common option as White often assumes that 7..e6 and Nd7 are transpositional} ( +8. Ne5 {This is the critical retort as otherwise Black doesn't experience +drawbacks of omitting Nd7.} Bh7 9. Bd3 {Most popular and obvious is to +eliminate the strong Bh7} Bxd3 10. Qxd3 Nd7 11. f4 {The main and most +aggressive move} (11. Bf4 {Logically develops to defend the knight} Nxe5 12. +Bxe5 Qa5+ {I should mention that this queen development is a common motif in +the classical caro. From a5 the queen controls the 5th rank and eyeballs the +a2 pawn which prevents long castling.} 13. c3 Nf6 14. O-O Be7 (14... Ng4 15. +Rad1 Nxe5 16. dxe5 Rd8 17. Qxd8+ Qxd8 18. Rxd8+ Kxd8 19. Rd1+ Kc8 $11 {White +is pushing but Black can defend this endgame a few careful ideas}) 15. Rfe1 O-O +$11 {[%cal Ga8d8,Gf8e8,Gc6c5] 0-1 (65) Kanmazalp,O (2477)-Socko,B (2593) Graz +2018}) (11. Qe2 Ngf6 12. Bd2 Be7 {[%cal Ge8g8] leads to a typical Classical +Caro opposite side situation: 0-1 (70) Sanal,V (2490)-Artemiev, V (2709) +Skopje 2018}) 11... Be7 (11... Bb4+ $5 {Looking to provoke weaknesses Is a +very subtle idea to provoke the potentially weakening move c2-c3} 12. c3 { +Gaining time but loosening the position slightly. Black also hopes to showcase +that the inclusion of c3 will favor him since Qa5 will be possible in future +positions} (12. Bd2 {Keeps things more solid for White} Bxd2+ 13. Qxd2 Ngf6 14. +O-O-O O-O {[%cal Gd8c7,Gc7b6,Gc6c5,Rh6h5,Gf8d8,Ga8c8] Black goes for typical +Caro counterplay with the c5 break and may use h6-h5 to lock the kingside up} +15. Qe2 {White wants to open the x-ray on d1-d8 while also preparing ideas of +Ne4} Qa5 16. Kb1 Rad8 17. Ne4 Nxe4 18. Qxe4 Nf6 19. Qe2 h5 $5 {A great +defensive move to stop g4 from overruning our position} 20. Rhg1 Qb6 {[%csl +Rd4][%cal Gc6c5]} 21. g4 $2 {White tries to go bonkers to checkmate us but the +defense is too strong:} Rxd4 22. gxh5 Rxd1+ 23. Qxd1 Rd8 24. Nd3 Nxh5 {[%csl +Rg1][%cal Gb6g1]} 25. Qg4 Qd4 26. b3 Rd5 $19 {0-1 (30) Beerdsen,T (2424)-Zeng, +C (2538) Vlissingen 2016}) 12... Be7 {With a pawn on c3 White's control of +light squares is weakened and Black may also play Qa5 even if White has a +bishop on d2 Black's idea was to provoke the weakening (or so he hopes to +prove) c2-c3. With many of White's pawns on dark squares the light squares a +are bit frail} 13. Bd2 Ngf6 14. O-O-O c5 $5 {Has led to good results for Black +and may be the most precise move order as it pressures White's center} 15. Be3 +O-O 16. Ne4 {[%cal Gg2g4,Gg4g5] White prepares the dangerous g4-g5} cxd4 17. +Bxd4 Nxe5 18. fxe5 Nxe4 19. Qxe4 Qc7 20. g4 {The position may look dangerous +for Black at first as White's pawns are storming towards the King but actually +the counterplay on the d-file prevents White from doing much. P. Elijanov won +a model here where he slowly made progress on the queenside while keeping the +whole kingside secure, not an unusual caro conversion} Rad8 21. g5 h5 22. Rhf1 +g6 23. Rf4 Rd7 24. Rdf1 Kg7 25. Qe3 b6 26. Qf2 Bc5 27. Kb1 Bxd4 28. cxd4 Qc4 +29. Rc1 Qd3+ 30. Ka1 Rc8 31. Rf1 Rcc7 32. a3 b5 $1 $19 {[%cal Ga7a5,Gb5b4] 0-1 +(63) Sutovsky,E (2642)-Eljanov,P (2732) Poikovsky 2014}) 12. Bd2 (12. h5 { +Black castles short and strikes quickly with c5.} Ngf6 {[%cal Ge8g8,Gc6c5]} 13. +Bd2 O-O 14. Qe2 c5 {0-1 (63) Plat,V (2560) -Laznicka,V (2656) Czech Republic +2018}) 12... Nxe5 $1 13. fxe5 Bxh4 14. O-O-O Bxg3 15. Qxg3 Ne7 16. Qxg7 Rg8 17. +Qxh6 (17. Qh7 $5 {White has been trying some subtle stuff here, Qh7 keeps an +eye on f7 which could it harder to play 0-0-0} Qd5 18. Rhf1 O-O-O 19. Rxf7 Qxa2 +20. c3 Qa1+ 21. Kc2 Qa4+ 22. Kc1 Qa1+ 23. Kc2 Qa4+ 24. Kc1 Qa1+ {1/2-1/2 (24) +Balogh,C (2631)-Miton,K (2605) Slovakia 2017}) 17... Qd5 {There are further +nuances in this position but often a combo of 0-0-0+nf5+rxg2 will give Black +great piece activity and light square control} 18. Kb1 O-O-O {[%cal Gg8g2, +Ge7f5]} (18... Qxg2 {is also ok:}) 19. Qf6 Rxg2 $1 {[%cal Gg2d2,Rd5h1]} 20. Bc3 +(20. Qxe7 {Leads to a equal endgame that is likely to end in perpetual} Rxd2 +21. Qxd8+ Kxd8 22. Rh8+ Ke7 23. Rxd2 c5 $1 {its important to force White to +weaken his king and pawns} 24. c3 Qe4+ 25. Kc1 cxd4 26. cxd4 f6 27. exf6+ Kxf6 +$11 {1/2 (42)-1/2 (42) Womacka,M (2436) -Ratkovic,M (2416) Germany 2019}) 20... +Nf5 21. Rh7 Ne3 22. Rc1 (22. Qxf7 Rd7 23. Qf8+ Rd8 24. Qe7 Rd7 25. Qe8+ Rd8 26. +Qe7 Rd7 27. Qe8+) 22... Nxc2 $1 23. Qxf7 Na3+ 24. Ka1 Nc2+ $11) 8... Bh7 9. Bd3 +Bxd3 10. Qxd3 Nf6 11. Bd2 {Now as long as we go for c6-c5 with the active +Nb8-Nc6 we will get great counterplay in the center} (11. Bf4 Bd6 $5 {Has been +a common way to take advantage of this move order.} 12. Bxd6 (12. Ne5 Qc7 { +[%cal Gb8d7]}) 12... Qxd6 13. O-O-O Nbd7 14. Qe2 O-O 15. Kb1 Rfd8 {Black +easily finishes development and breaks open the center with c6-c6. As more +pieces get traded off White may struggle with defending the h5 pawn} 16. Ne5 c5 +17. Nxd7 Qxd7 18. dxc5 Qc6 19. f3 Qxc5 {[%csl Rh5] 0-1 (54) Judkovsky,Y (2348) +-Dreev,A (2679) Rhodes 2013}) 11... c5 $5 {Trying for a quick c5 is another +very tempting option. Our main idea and there are 3 different ways to +implement it with varying pros and cons} (11... Be7 12. O-O-O c5 $5 {[%cal +Gb8c6] is another moment for C5:0-1 (46) Quesada Perez,Y (2568)-Rozman,L (2368) +Las Vegas 2019} (12... O-O 13. Kb1 {White can continue playing analogously to +the lines where Black has played an early Nbd7 but there is a key difference +here} c5 $1 {[%cal Gb8c6] 1/2-1/2 (42) Zierk,S (2485) -Ostrovskiy,A (2410) ICC +INT 2014})) 12. O-O-O {The most popular option with 250 games played but +scoring a paltry 35% for White} (12. Ne4 $1 {This is a typical idea for White, +swinging the errant knight back into the game.} Nc6 {Of course the idea behind +delaying Nd7.} 13. Nxc5 {It's worth asking what happens if White simply +captures the pawn} (13. Bc3 Nb4 14. Bxb4 cxb4 15. Nxf6+ gxf6 {1/2-1/2 (51) +Inarkiev,E (2680)-Artemiev,V (2701) Sharjah 2018}) 13... Bxc5 14. dxc5 Qxd3 15. +cxd3 O-O-O 16. Ke2 Rd5 {[%csl Rc5,Rd3,Rh5] The vulnerable pawns on h5/d3/c5 +give Black good compensation. Furthermore d5 (and potentially d4) are +excellent outpost squares for Black's pieces. 0-1 (38) Bjornsson,S (2323) +-Starostits,I (2480) Kallithea 2008}) 12... Nc6 13. Bc3 Qd5 $1 {[%cal Gd5a2, +Gc5c4]} 14. Kb1 (14. dxc5 {This should bail out to a balanced endgame although +Black has been outscoring White here} Qxd3 15. Rxd3 Bxc5 $11 {0-1 (62) Zierk,S +(2510)-Smirnov,A (2569) chess.com INT 2019}) 14... c4 15. Qe2 b5 {White is +risking being overrun.} 16. Nf1 {[%cal Gf1e3]} Ne7 $5 {[%cal Gd5b7,Ge7d5] A +long chapter but one that gives us several additional weapons against the +Classical Variation. The 3..Bf5 Caro is timeless but some of the ideas we look +at here are very modern. For example 7..e6 provokes White into the aggressive +Ne5. Here our idea will be either to throw in the pesky Bb4+ to provoke +weaknesses or the calmer Be7 with the surprising Bxh4!? follow up. Also if +White plays 8. h5 we can trick him with a quick c5-Nc6! Combo. We also saw +that the old line of 7..Nd7 is still totally fine. Remember to be brave and +castle short while getting counter play with either c5, b5, or on the light +squares.} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Classical Caro Sidelines"] +[Black "3..Bf5 Capablanca Variation"] +[Result "*"] +[ECO "B18"] +[Annotator "Gotham"] +[PlyCount "26"] +[EventDate "2012.12.01"] +[EventType "tourn"] +[EventRounds "9"] +[EventCategory "21"] + +{This section deals with White's sidelines in the Capablanca Variation. Some +of these are pretty tricky and involve early aggression. You only need to know +this stuff if you play 3..Bf5 instead of 3..Nf6} 1. e4 c6 2. d4 d5 3. Nd2 dxe4 +4. Nxe4 Bf5 5. Ng3 (5. Nc5 e5 $5 {This is a more aggressive option looking to +spice up the play and "punish" White. It is also principled (take the +intiative while White moves the same piece over and over in the opening) looks +to exploit White's hopping horsey} (5... b6 {This is the most popular and most +no-nonsense approach. Ignore White's flailing and just develop. Play here +tends to be quiet: is the easy and solid method} 6. Nb3 e6 $11 {[%cal Gb8d7, +Gf8d6,Gg8e7]}) 6. Nxb7 Qb6 7. Nc5 Bxc5 $5 {A rare but risky option. Going for +piece activity at the cost of the bishop pair and pawn structure.} 8. dxc5 Qxc5 +$13 {[%cal Gg8f6,Ge8g8] 0-1 (24) Godena,M (2519)-Brunello,S (2557)/Rome ITA +2016/}) 5... Bg6 6. h4 (6. Nf3 Nd7 7. Bd3 {This is a very solid and slightly +boring way for White to play} Ngf6 8. O-O e6 9. b3 (9. Re1 Be7 $11 {[%cal +Ge8g8] We will be completely fine castling quickly and bringing our rooks to +the center to prepare the thematic c6-c5 pawn break}) 9... Be7 10. Bb2 O-O 11. +Bxg6 hxg6 12. c4 a5 $1 {A standard move for this type of structure. I gain a +little bit of space and increase the pressure on the queenside. Perhaps I will +play a4 in the future. In general pushing rook pawns down the board is a +risk-free way to put some pressure on your opponent} 13. Qc2 Qb6 14. Rfd1 Rfd8 +15. a3 Rac8 16. Ne2 Qa6 $1 {[%cal Gb7b5] Going from a plan we've seen many +times in the main lines of the Capablanca! At it's core the Caro is an opening +with a foundation on the light-squares and the present plan is a perfect +example.} 17. Nf4 b5 18. Ng5 Nf8 19. Rac1 a4 $1 {White's queenside is under +heavy pressure and structural damage is unavoidable.}) (6. Bc4 e6 7. N1e2 Bd6 { +The most flexible development, keeping Qh4 options and Ne7} 8. h4 (8. Nf4 Qh4 +$5 {Stops h2-h4}) (8. O-O Nd7 9. Nf4 (9. f4 Ne7 $1 {[%cal Rf4f5]}) 9... Qh4 $5 +10. Qf3 Ngf6) 8... h6 9. Nf4 Bxf4 $5 {Expediting development at the cost of +the bishops. However White's king is lacking a good home.... kingside is +unsafe due to the h-pawn and queenside is faced with a pawn storm and the Bg6!} +10. Bxf4 Nf6 {[%cal Gg6b1] White's king will be under pressure on either side +of the board since we kept the Bg6 alive}) (6. Nh3 $1 {A flexible choice from +White as it keeps the Bf1 open. The plan is to play Nf4-Bc4 and sometimes h4... +.and in any order!} e6 {We always play e6 before Nf6 in order to keep our +flexibility} 7. Nf4 (7. Bc4 Bd6 8. Nf4 (8. O-O Nd7 9. Nf4 Qh4 $5) 8... Qh4 $5 { +The Qh4 stops h4 but also exerts strong pressure on the 4th rank.}) 7... Qh4 $5 +{Disrupting White's plans of playing h4 and pressuring the 4th rank!} 8. c3 Nd7 +{Now Black just comfortably develops as if nothing happened. A great example:} +9. Qf3 Ngf6 10. Nxg6 hxg6 11. Bd3 e5 $1 {[%cal Gh4d4] The Qh4 is actually +attacking d4 now!} 12. Be3 exd4 13. Bxd4 O-O-O 14. O-O-O Bc5 $15) (6. f4 { +is aggressive and looks strong but has significant drawbacks: The Bc1 is +restricted and the light squares are weakened.} e6 {Sometimes White tries +variations with f4 but they weaken too many light squares} 7. Nf3 Bd6 8. Bd3 +Ne7 $1 {Completely shutting out f4-f5 and securing some light squares: 0-1 (50) +Marshall,F-Capablanca,J/New York 1927/HCL (50)}) 6... h6 7. Nh3 {This is a +very respectable variation for White but is not very popular. Actually it is a +bit tricky to deal with the "Nf4 setups" for White since he can reach them in +many different orders: via e2 or h3, with h4 or without, and with Bc4 or +without!} (7. Bc4 e6 {will transpose to 7. Nh3 or 6. Bc4}) (7. N1e2 e6 { +will transpose elsewhere, likely 6. Bc4}) (7. f4 {is similar to 6. f4 but a +little better as White aims to castle queenside and weakened our kingside a +little more with 6. h4} e6 8. Nf3 Nd7 9. h5 Bh7 10. Bd3 Bxd3 11. Qxd3 Ngf6 12. +Bd2 Qc7 13. O-O-O c5 $1 {Opening the c and d files for our heavy pieces}) 7... +e6 8. Nf4 Bh7 9. Bc4 {The most aggresive approach from White! He is trying to +make sacrifice work on e6. However as long as we develop accurately we have +NOTHING TO FEAR! Be armed with the confidence that no sac on e6 will be strong +provided you safeguard your game! Otherwise our pieces will glide to natural +posts and White may regret aggressive moves like h4.} Nf6 {White can either to +aim the queen or rook at e6} 10. Qe2 {White may try to castle long here} (10. +O-O Bd6 11. Nxe6 $6 {A sacrifice made famous by the legendary Mikhail Tal. It +famously doesn't work! Famous sacrifice from the Tal Botvinnik Match but Black +can defend} (11. Re1 O-O {White has a lot of firepower aimed at e6 but there's +no fuse! Watch how black calmly develops and takes over:} 12. c3 Re8 $1 { +Nd7/Qc7 are common followups and the e5 break is on the agenda} 13. Qf3 Nbd7 { +[%cal Ge6e5]} 14. Nd3 Qc7 {White has no tactics and Black can break with e5 +soon}) 11... fxe6 12. Bxe6 Nbd7 13. Re1 Qc7 $1 $17 {No fearing any ghost +checks! There is no good discovered check} 14. Bg8+ Kf8 15. Bxh7 Rxh7 16. Nf5 +g6 $1 {Botvinnik judges his piece coordination is worth more than a pawn!} 17. +Bxh6+ Kg8 18. Nxd6 Qxd6 19. Bg5 Re7 $15 {0-1 (58) Tal,M-Botvinnik,M/Moscow +1960/}) 10... Bd6 11. Bxe6 $2 {White gets overally aggressive and falls into a +trap} O-O $1 {[%cal Gf8e8] Now the e-file will cost White a piece without any +attacking chances} 12. O-O Bxf4 13. Bxf4 Re8 $19 {White's most dangerous +alternatives to the main line from the last chapter is the combo of Nh3/ +Ne2->f4 with h4-h5. Our sneaky idea will be to cut across this plan with the +shocking Qd8-h4! Not only does the queen prevent h4 but it also can help us +exert pressure on the kingside and the center after a future e6-e5 break +(supported by Nd7+Bd6)} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Advance Caro"] +[Black "3...c5 w/ 4. c3, c4"] +[Result "*"] +[ECO "B12"] +[Annotator "Gotham"] +[PlyCount "36"] + +{This is a very important Chapter since for whatever reason most inexperienced +players love playing the inferior 4.c3?! against our setup!} 1. e4 c6 2. d4 d5 +3. e5 c5 $5 {Attacking White's center ASAP with the thematic pawn break} 4. c3 +$6 {Very natural...defending the center...like in the French....but that is +what we want! Since we have not played e6 we will strive to reach a position +with the bishop outside the pawn chain (preferably g4) to put pressure on the +d4 pawn} (4. c4 $5 {A violent central confrontation!} Nc6 $5 {Keeping things +tense but we can't go wrong with simple development} 5. Nf3 cxd4 6. Nxd4 e6 7. +Nc3 Bc5 8. Nxc6 bxc6 {Again if Black can play moves like Ne7-Ng6 0-0 he will +be fine so White tries to get aggressive} 9. cxd5 (9. Qg4 $5 Ne7 10. Qxg7 Rg8 +$5 11. Qxh7 Rb8 $44 {With a total mess on the board for the material +disadvantage}) 9... exd5 (9... cxd5 {With Ne7 next unless} 10. b4 $5 Be7 $13) +10. Bd3 Ne7 {[%cal Gc8f5,Ge8g8] is also playable}) (4. Nf3 cxd4 5. Nxd4 Nc6 6. +c4 (6. Nxc6 {Leads to French like structures} bxc6 7. Bd3 Qc7 8. Qe2 e6 9. Nd2 +c5 {[%cal Gg8e7,Ge7g6,Ge7c6]} (9... Bc5 10. Nf3 Ne7 {0-1 (61) Ten Hertog,H +(2475)-Sandipan,C (2548) Leiden 2018})) 6... e6 {See 4.. Nc6}) 4... Nc6 5. Nf3 +{White is being very accomodating allowing us the nice Bg4 pin, but this is +what most opponents do!} (5. Be3 {There is no Bg4 here but we have a very nice +idea:} cxd4 6. cxd4 Nh6 $1 {[%cal Gc8g4,Gh6f5] setting up Bg4 & Nf5 ideas. If +White takes on h6 we don't actually care about the doubled pawns since can +play a quick Qb6. Our active pieces are a problem for White!}) (5. Bb5 Qa5 $5 +6. Bxc6+ bxc6 7. dxc5 Qxc5 8. Nf3 e6 9. O-O Qb6 $11 {[%cal Gg8e7,Ge7g6]}) 5... +cxd4 6. cxd4 {A useful inclusion so White can't bail out with dxc5 in a lot of +positions.} Bg4 $1 {[%cal Ge7e6,Gg8e7,Gg8h6,Gh6f5,Ge7f5] Black's plan here is +easy: e6, Ne7, Nf5 to pressure the d4 pawn. Usually he also plays Qb6+Be7+0-0. +The d4 pawn is a huge target and White will struggle to defend it. Very often +he just loses this pawn!} 7. Be2 e6 8. O-O Nge7 (8... Qb6 9. Nbd2 Nh6 10. Nb3 +Nf5 11. Be3 Be7 {Black follows the usual development scheme} 12. Ne1 Bxe2 13. +Qxe2 O-O 14. Nf3 Rfc8 {Another important idea for Black is to attack on the +queenside and try to use the open c-file} 15. g4 $6 {White tries to go for an +aggressive kingside storm but Black is very solid as he slowly infiltrates on +the queenside} Nxe3 16. fxe3 Nb4 $1 17. Nbd2 Rc2 18. a3 Nc6 19. b4 Nd8 20. Rfc1 +Rac8 21. Rxc2 Rxc2 22. Ne1 Rc3 23. Nb1 Rc4 {The rook happily dances around all +the queenside weak squares} 24. Nd3 Rxd4 $1 $19 {0-1 (40) Shaaban,A (2131) +-Rausis,I (2466) Cairo 2002} 25. exd4 Qxd4+ {[%csl Ra1,Rg1]}) 9. Be3 Nf5 10. +Nbd2 (10. Nc3 Be7 {doesn't change our plan too much}) 10... Be7 11. Nb3 O-O 12. +h3 Bh5 (12... Bxf3 13. Bxf3 a5 $5 {is also good}) 13. g4 Nxe3 14. fxe3 Bg6 15. +Bd3 Bxd3 16. Qxd3 {White doesn't really have any attack on the Kingside so +Black focuses to our favorite playground: the queenside!} Qb6 17. a3 a5 18. +Rfc1 f6 $1 $19 {White's king is also a little tender so Black notices a way to +open things up: 0-1 (29) De Dompablo Fantova,J (1715)-Del Rio de Angelis,S +(2505) Tres Cantos 2013 The main focus here was on the dubious 4. c3?! that +allows us a great French. 4. c4!? and 4. Nf3!? are very decent moves though +that lead to a lot of central tension. Simple development will be our cure to +meet White's aggression} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Advance Caro"] +[Black "3.. c5 4. dc Nc6!?"] +[Result "*"] +[ECO "B12"] +[Annotator "Gotham"] +[PlyCount "36"] + +1. e4 c6 2. d4 d5 3. e5 c5 4. dxc5 $1 {This is actually the best response for +White: grab the pawn!} Nc6 $5 {A natural move to target e5. In this variation +we may spend a bit of time behind in material while we work on developing +quickly and having White contort to defend his weak pawns} 5. Nf3 (5. Bb5 { +Logically pins and defends e5} e6 6. Be3 (6. Nf3 Bxc5 {Poses no issue and we +develop normally. The Bb5 is misplaced} 7. O-O Nge7 $11) (6. b4 Bd7 {[%cal +Gc6e5]} 7. Bxc6 Bxc6 {[%cal Gb7b6,Ga7a5] The queenside is loose and Black has +the 2 bishops. Often in this line we will see that attempts for White to hold +onto the extra material tend to backfire since he makes so many concessions!} +8. Nf3 a5 9. c3 axb4 10. cxb4 b6 11. O-O bxc5 12. bxc5 Bxc5 $15 {[%cal Gg8e7, +Ge8g8]}) 6... Nge7 {[%cal Ge7f5] Supporting the Nc6 and preparing Nf5} 7. c3 ( +7. Nf3 $6 Nf5 {White has no good response to save his c5 pawn} 8. Bd4 Nfxd4 9. +Qxd4 (9. Nxd4 Qc7 $1 {regains the pawn with a bishop pair advantage.}) 9... +Qa5+ 10. Nc3 Qxb5 $1 {The resulting endgame is great for Black:} 11. Nxb5 Nxd4 +12. Nfxd4 Bxc5 13. Nb3 (13. Nc7+ $2 Kd7 14. Nxa8 Bxd4 {[%cal Gb7b6,Gc8b7] The +Na8 will drop}) 13... Bb6 $17 {[%cal Ge8e7,Gc8d7]}) 7... Bd7 {[%cal Gc6e5]} 8. +Bxc6 Bxc6 {We have the long term advantage of the LSB which can be activated +in the future via b5. We are likely not getting back our pawn but will make +sure White makes more concessions (such as queenside weaknesses) in order to +hold on} 9. Nf3 (9. Bd4 Nf5 10. Nf3 {TR}) 9... Nf5 10. Bd4 Nxd4 $5 {This +surprising trade is the simplest way to get great compensation for the pawn} +11. Qxd4 (11. cxd4 $6 b6 $1 12. cxb6 Qxb6 $44 {This pawn sacrifice is key for +our strategy! Now for one measly pawn we have fantastic diagonals and files +for our pieces} 13. Qc2 (13. b3 $2 Bb4+ $19) 13... Bb4+ 14. Nc3 Qa6 {[%csl Re1] +}) 11... Qc7 {[%cal Gc7c5,Gf8c5] Looking to provoke b4} 12. b4 b6 $1 13. cxb6 +axb6 $44 {White has the extra pawn but his queenside is full of targets}) (5. +f4 $5 {A very tricky idea from White as he looks to hold onto e5 with brute +force} Nh6 $5 {Developing dynamically to control the light squares} 6. c3 (6. +Nf3 Bg4 7. Be3 {This move has been played GMs but is inaccurate} (7. Bd3 $146 +e6 {may be best afterall} 8. Be3 d4 9. Bf2 Bxc5 $14) 7... Nf5 8. Bf2 g5 $1 $146 +9. fxg5 e6 {[%csl Rc5,Re5,Rg5][%cal Gg4d1] White is temporarily up two pawns +but is unlikely to hold on them in light of our activity}) 6... e6 7. Be3 (7. +b4 $6 {is too loose} a5 8. b5 Nb8 {[%cal Gb8d7]}) 7... g5 $5 {This is the idea +we really want to make work for Black and is likely the best option to get a +messy game} 8. fxg5 Nf5 9. Bf4 Bxc5 {With plenty of diagonals to work with. +For instance:} 10. Nf3 Qb6 {[%csl Re3][%cal Gc5f2]} (10... h6 $146 11. gxh6 +Nxh6 $44 {[%cal Gd8b6,Gh6g4]}) 11. Qd2 d4 $13) (5. a3 {This is a slightly +annoying move as White wants to follow the easy strategy of a3-b4-bb2} e6 6. +Nf3 (6. b4 $6 {overextends} a5 $1 7. b5 Nxe5 $17) 6... Bxc5 7. b4 Bb6 8. Bb2 +Nge7 9. Bd3 Ng6 {Completing development and plotting f6/Nf4 in the future} 10. +O-O O-O 11. Re1 (11. g3 {White looks to prevent Nf4 but creates light square +weaknesses} d4 $1 {[%csl Re5][%cal Gd8d5]} 12. Qe2 f6 13. Bxg6 hxg6 14. Qe4 $6 +{Now Black takes over the center & light squares. This led to a GM norm!} Nxe5 +15. Nxe5 fxe5 16. Qxg6 {0-1 (85) Balakrishnan,P (2410)-Ostrovskiy,A (2401) +Washington DC 2018} Qd5 $19 {[%cal Gc8d7,Gd7c6]}) 11... f6 $1 {Breaking down +White's center} 12. exf6 gxf6 {[%cal Ge6e5,Gg6f4] Black's king is a little +weak but strong ideas of Nf4/e5 are in the air} 13. c4 $1 {And here Black can +get a fair endgame with the simple} dxc4 14. Bxc4 Qxd1 15. Rxd1 Kg7 16. Nbd2 e5 +17. Bf1 Be6 18. Nc4 Rad8 19. Nxb6 axb6 $11 {0-1 (37) Nijboer,F (2488)-Timman,J +(2549) Spakenburg 2019}) 5... Bg4 6. c3 (6. Bb5 {is now known to be good for +Black:} Qa5+ $1 {preventing c3-b4 ideas} 7. Nc3 e6 8. Be3 Nge7 9. a3 Qc7 $5 { +Makes sense to escape the b4 tempo as the queen has done her job on a5} 10. +Bxc6+ Nxc6 11. Bf4 $2 Bxc5 $17 {0-1 (23) Kocheev,A (2345)-Stupak,K (2558) +Police 2016}) 6... e6 7. Be3 (7. b4 g6 $5 {is a very rare surprising option +that has been used by several GMs. The Bg7 will be perfectly placed to exert +pressure on e5 and later the c3 pawn.} 8. Bb5 Bxf3 (8... Bg7 {[%cal Gg8e7, +Ge8g8]}) 9. Qxf3 Bg7 10. Bxc6+ bxc6 11. Qe2 a5 12. a3 f6 $5 {Playing purely +for compensation, the queenside pressure will be aided by the long diagonal +strike} 13. Bf4 Nh6 14. O-O Nf7 $44 {0-1 (34) Fedoseev,V (2670)-Fridman,D +(2620)/Liepaja LAT 2016/}) 7... a6 $1 {Now we want to capture Ne5 and meet Qa4 +with Qd7.} 8. Nbd2 Nxe5 9. h3 (9. Be2 Nc6 $1 10. Qa4 Nf6 11. h3 Bxf3 12. Bxf3 +Nd7 $1 13. Nb3 Be7 $11) (9. Qa4+ Qd7) 9... Nxf3+ 10. Nxf3 Bxf3 11. Qxf3 Ne7 $5 +{Going for a very harmonious setup with a dark square fianchetto w/light +square pawn control} 12. Bd3 Nc6 13. Qg3 (13. O-O g6 $5 {[%cal Gf8g7]}) 13... +g6 14. O-O Bg7 15. Rfd1 O-O 16. Rac1 Qe7 17. b4 Rad8 18. a4 e5 $44 {½-½ (29) +Hong,A (2449)-Ostrovskiy,A (2434) Charlotte 2020 Summary: 4..Nc6 ambitiously +keeps the Bc8 open and allows us to potentially develop the bishop actively +with Bg4. We looked at 4 options: The tricky 5. f4!? where we react with Nh6!? +with future wild g5 ideas; The pinning 5. Bb5 where we will play e6+Bd7+Nge7 +and often get the two bishops for the pawn; The logical 5. Nf3 which helps us +go Bg4 and target the e5 pawn. Note the key difference on move 7 with g6! vs +b4 and a6! vs Be3. Finally special mention goes to the sneaky 5. a3 which is +favorite of "those in the know." Here we complete our development before +striking with f6 to get our fair share of counterplay} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Advance Caro"] +[Black "3.. c5 4. dc e6"] +[Result "*"] +[ECO "B12"] +[Annotator "Gotham"] +[PlyCount "30"] +[EventDate "2010.??.??"] + +1. e4 c6 2. d4 d5 3. e5 c5 $5 4. dxc5 $1 {In the French Defense this capture +is often ill advised since White surrenders his center. However in the present +case White wants us to really work to get our pawn back! Not only does he hope +to keep the pawn, but also wishes to give it back only in the best of +circumstances where we have already made some compromises to our position.} e6 +{A safe reply although it does close our Bc8} 5. Be3 {The old main line; White +holds the pawn!} (5. Qg4 {is a little annoying so let's chase this queen} h5 $5 +6. Qg3 {[%cal Rg3g7] This is most in the spirit of the opening as White +prevents Bxc5.} h4 7. Qg4 Nh6 8. Bxh6 Rxh6 {Forcing White to concede the +bishop to maintain his queen positioning.} 9. Nf3 f5 $1 $15) (5. Bd3 $5 { +This might be a sophisticated move since White keeps options open of playing +both a3-b4 and Qg4} Nd7 $5 {Trying to not commit our setup and take advantage +of the Bd3} 6. Nf3 Nxc5 7. O-O Ne7 8. Nc3 {The position is very French-like +now. A good example was} Nc6 9. Re1 Nxd3 10. Qxd3 Be7 11. Ne2 Bd7 12. Ned4 O-O +13. c3 Na5 14. Bf4 Rc8 15. Re2 a6 16. Rd1 Nc4 17. Bc1 b5 18. h3 a5 $11 { +0-1 (49) Onoprienko,V (2370)-Guliev,S (2495) Kazan 1995}) (5. a3 $1 {In the +past decade White has established this flank pawn move as the main try against +our system. The idea is to play b4-Bb2 w/Bd3 and 0-0 while enjoying control +over the center. A later c2-c4 could prove troublesome and in general we risk +of playing without an appropriate amount of space} Nc6 {This is the simplest +option as it transposes back to the 4..Nc6 chapter} 6. Nf3 Bxc5 7. b4 Bb6 8. +Bb2 Nge7 9. Bd3 Ng6 10. O-O O-O 11. Re1 f6 12. exf6 gxf6 13. c4 dxc4 $1 14. +Bxc4 Qxd1 15. Rxd1 Kg7 16. Nc3 e5 17. Nd5 Bg4 18. Nxb6 axb6 19. Bd5 Rfd8 20. +Be4 Nge7 21. Rxd8 Rxd8 22. Nh4 Be6 $11 {1/2-1/2 (39) Karjakin,S (2753)-Adhiban, +B (2683) Astana 2019}) 5... Nd7 $5 {Inviting White to contort himself to hold +his pawn} 6. Bb5 (6. Nf3 Bxc5 7. Bxc5 Nxc5 {[%cal Gc8d7,Gd8b6,Ga8c8] White +sometimes tries for this endgame but Black has good play on the c-file and +with f6} 8. Qd4 Qb6 9. Nbd2 Ne7 10. Nb3 Nxb3 11. axb3 Qxd4 12. Nxd4 Ng6 13. Nf3 +f6 14. exf6 gxf6 15. g3 e5 16. Bg2 Be6 $11 {1/2-1/2 (61) Mishra,A (2338) +-Ostrovskiy,A (2434) Charlotte 2020}) 6... Ne7 {A very common anti-Be3 +maneuever} 7. c3 (7. Nf3 Nf5 8. b4 Nxe3 9. fxe3 a5 10. c3 Be7 11. O-O O-O $44 { +[%csl Rb4,Rc3,Rc5,Re5][%cal Gd8c7] Has been played but White's structure is +really ugly}) 7... a6 8. Bxd7+ (8. Ba4 Nc6) 8... Bxd7 9. Nf3 Nf5 10. Bd4 Rc8 +11. Nbd2 Bxc5 12. Bxc5 Rxc5 13. Nb3 Rc8 14. Nbd4 $6 Nxd4 15. Nxd4 (15. cxd4 Qb6 +$15) 15... Qg5 $1 $15 {[%csl Re5,Rg2] 1-0 (48) Grigoriants,S (2542)-Ostrovskiy, +A (2425) chess.com INT 2020} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Exchange Caro"] +[Black "Weapons for Black"] +[Result "*"] +[ECO "B13"] +[Annotator "Gotham"] +[PlyCount "40"] + +{The Exchange Caro is immensely popular due to its combination of simplicity, +aggressivness and solidity. We will learn how to disrupt White's attacking +ideas with a host of various setups} 1. e4 c6 2. d4 d5 3. exd5 cxd5 4. Bd3 { +White aims for a setup with Bd3/Bf4/Nd2/Nf3 and then a later Ne5 and kingside +attack. Simple but dangerous} (4. Nf3 {An early Nf3 is innocous as it allows +us an easy pin with Bg4.} Nf6 5. Bd3 Nc6 6. c3 Bg4 {[%cal Ge7e6,Gf8e7] e6+Be7/ +Bd6 is next with castling short and queenside counterplay}) 4... Nc6 5. c3 { +Here we have three ways of proceeding} Nf6 (5... Qc7 $5 {Preventing Bf4 and +disrupting White's setup Before continuing with our own development we prevent +Bf4} 6. Ne2 {White insists on Bf4 but compromises the setup White's main line +as he tries to force thru Bf4 with tempo} (6. Nf3 Bg4 {[%cal Ge7e6,Gf8d6,Gg8f6, +Gg4h5,Gh5g6] is too easy. Next is e6-Bd6-Nf6/Ne7 and later Bh5-bg6 with +perhaps b5-b4 minority attack}) (6. h3 $5 {White copies us in the preventing +development department} Nf6 7. Nf3 g6 $5 {[%cal Gc8f5] Borrowing the idea from +the g6 variation} 8. O-O Bf5 9. Re1 Bxd3 10. Qxd3 e6 11. Nbd2 Bg7 12. Nb3 O-O +$11 {0-1 (68) Zvjaginsev,V (2660)-Aronian,L (2784) Berlin 2015}) (6. Bg5 { +White tries to impede our development...} Nf6 $1 {But we proceed without a +hitch!} 7. Nd2 (7. Bxf6 $6 gxf6 {[%cal Ge7e5,Gh8g8]}) 7... Bg4 8. Ngf3 e6 9. +Bh4 Bd6 10. Bg3 Bh5 $1 {[%cal Gh5g6] We are going to completely neutralize any +White play on the kingside after trading bishops.} 11. Bxd6 Qxd6 12. O-O O-O +13. Re1 Rab8 $1 {[%cal Gb7b5] Preparing the minority attack} 14. a4 Qc7 15. Qb1 +a6 16. Ne5 Rfe8 17. h3 Bg6 18. Bxg6 hxg6 19. Qd3 Nxe5 20. dxe5 Nd7 21. Qd4 Rec8 +22. Re3 Qb6 $1 {After the queen trade White has no kingside attack and Black +will go for a queenside pawn storm: 0-1 (40) Illescas Cordoba,M (2590)-Anand,V +(2715)/Linares 1994/}) 6... Bg4 7. O-O $5 {By far the main idea nowadays} (7. +f3 {The old main line is pretty junky since f3 weakens so many dark squares} +Bd7 8. Bf4 e5 $1 9. dxe5 Nxe5 10. O-O Bd6 {[%cal Gg8f6,Ge8g8] A comfortable +IQP structure. Simplest is Nf6/0-0 and rooks to the center} 11. Bc2 Nf6 { +is perfectly fine} (11... Ne7 {[%cal Ge7g6,Ge7c6,Ge7f5]} 12. Ba4 O-O-O { +The idea of Ne7 is to keep the kingside pawns free to move such as f6-g5. This +is a more aggressive way to play than castling short}) 12. Nd2 O-O 13. Nb3 Nc4 +$1 {[%cal Gc4b2,Gc4e3] 0-1 (23) Wong, Brandon (2034)-Ostrovskiy-A (2505)/MCC +Insanity 2015/}) (7. h3 Bxe2 (7... Bh5 {[%cal Gh5g6] sensible}) 8. Qxe2 $2 Nxd4 +$1 {[%cal Gc7c1] I've caught several players in this sneaky trap! This is just +a free pawn}) (7. Bf4 {isn't too effective now:} Qxf4 8. Nxf4 Bxd1 9. Kxd1 e6 +$11 {[%cal Gf8d6,Gg8e7] With a solid endgame ahead}) 7... e6 8. Qe1 $1 { +A weird looking idea but White is planning either f3-Qh4 or Ng3 and the Bg4 +starts feeling weird A key position for this variation. White wants the bishop +pair and Black needs to figure out which way to surrender the Bg4... or try to +save it!} g6 $5 {[%cal Gg4f5] looks a little funny but allows the Bg4 to escape +} (8... Be7 $5 {[%cal Re1h4] Preventing Qh4 and blocking the g-file. The Bg4 +can be saved creatively after} 9. Bf4 Qb6 10. Nd2 Nf6 11. Rb1 O-O 12. Ng3 g6 +13. f3 Bf5 14. Nxf5 exf5 15. Bg5 Rfe8 16. Qh4 Nd7 17. Bxe7 Rxe7 18. Rfd1 Rae8 +$15 {0-1 (39) Blomqvist,E (2488)-Andreikin,D (2725) Astana 2019}) 9. f3 Bf5 { +the point!} 10. Bxf5 gxf5 11. Bf4 Qb6 (11... Bd6) 12. Nd2 Nge7 13. a4 Ng6 14. +Kh1 a5 15. Rb1 h5 16. Bg5 Be7 17. Bxe7 Ncxe7 18. f4 Qc7 19. Nf3 f6 20. Qd2 Nc8 +$1 21. Qe3 Kf7 22. Nc1 Nd6 23. Nd3 Ne4 $15 {0-1 (45) Zeman,M (2275)-Ostrovskiy, +A (2453) Pardubice 2019}) (5... g6 {[%cal Gg8h6] Has the original idea of +going for Nh6-Nf5 or f6/Nf7 is another version of our fianchetto idea. The +early fianchetto gives Black the option of a quick Bf5 or the unusual +development Nh6!? (to support Bf5 or to continue f6-Nf7-e5!) Two examples of +original play in this line:} 6. Bf4 (6. h3 Nh6 7. Nf3 Bf5 8. O-O Bxd3 9. Qxd3 +Bg7 10. Bf4 O-O 11. Nbd2 f6 12. c4 Nf7 13. Bh2 Qd7 14. cxd5 Qxd5 15. Ne4 e5 16. +Nc3 Qd7 17. d5 Ne7 18. Rfd1 Rfd8 19. Ne1 Rac8 20. Nc2 f5 $17 {0-1 (44) +Maetzkow,M (2274)-Rozman,L (2382) Pardubice 2019}) 6... Bg7 7. h3 Nh6 $5 8. Nf3 +O-O 9. Qd2 Nf5 10. O-O f6 11. Re1 Re8 12. Na3 a6 13. Nc2 Nd6 14. Rad1 b5 15. +Na1 Nf7 16. Bh2 e5 17. dxe5 fxe5 {0-1 (35) Brikers,A (2011)-Ostrovskiy,A (2432) +Riga 2019}) 6. Bf4 Bg4 {Historically the main line and in true Caro style +getting the light square bishop out} (6... g6 {[%cal Gc8f5] Going for a +fianchetto to block the Bd3 and later play Bf5 to gain control of the center +and open the g-file} 7. Nf3 Bg7 8. O-O (8. Nbd2 O-O 9. h3 $5 {A setup +specifically aimed against Bf5!} Nh5 $5 {a surprising idea I have used with +success. We change plans and go for active piece play} 10. Bh2 (10. Be3 f5 $5 { +[%cal Rf5f4,Re7e5]}) 10... Bh6 $1 {[%cal Gh5f4]} 11. O-O Nf4 {The knight is +very bothersome and now Black will either get the 2 bishops or keep the +annoying knight hanging over White's head} 12. Bxf4 (12. Bc2 {Lets the knight +chill but White needs to watch out for sacrifices on the h3/g2 squares} f6 $5 { +Can lead to big complications} 13. Re1 e5 $1 14. dxe5 fxe5 15. Nxe5 Bxh3 $3 16. +Bxf4 Bxf4 {[%csl Rg1][%cal Gd8g5]} 17. Ndf3 Bxe5 18. Nxe5 $6 (18. Bb3 $3 Rxf3 +$5 {can continue the total insanity!}) 18... Qg5 $1 19. Qxd5+ Kg7 $15 {[%cal +Ga8d8]}) 12... Bxf4 {Bf4 is now very strong} 13. Re1 Qd6 $5 {[%cal Gf7f6,Ge7e5] +Planning to bust open the position and gain central control is one good plan +here}) 8... O-O 9. Nbd2 {White is finishing up his setup.} Bf5 $1 {Our main +idea! Now White almost always plays} 10. Bxf5 (10. Qe2 {is a very rare option +but some players may be afraid to open up the g-file and fall under attack. It +would be useful to see how Black can handle this move since we can see some +quieter plans in action.} Nh5 $5 {a familiar idea. Black actually wants the 2 +bishops here.} 11. Be3 Bxd3 12. Qxd3 Qd6 {[%cal Gh5f4]} 13. Rfe1 Rfe8 {Black +is considering future ideas of e5 here to activate the Bg7.} 14. Rad1 Rab8 $13 +{[%cal Gb7b5,Gh5f4] Now Black keeps his opponent guessing by potentially going +for a pawn minority attack}) 10... gxf5 {At first it looks like Black has used +a terrible plan: He has weakened his King's position and ruined his pawn +structure. Actually, both of these "disadvantages" are going to be Black's +advantages (or he hopes!). The King is actually not weak, but Black will try +to attack with Kh8 and Rg8! And the pawn structure is actually not damaged, +but instead Black gains more control over the center and especially the e4 +square. Let's have a quick look at how a Grandmaster used these ideas to score +an emphatic win.} 11. Ne5 (11. Qc2 {Another example from my praxis on the +effectiveness of the g-file attack:} e6 12. Ne5 Nxe5 13. Bxe5 Nd7 14. Bxg7 Kxg7 +15. Nf3 Kh8 16. Kh1 Nf6 17. h3 Ne4 18. Nd2 Nd6 19. Rg1 Rg8 20. g3 Rg7 21. Nf1 +Qf6 22. Re1 f4 23. Qd3 Ne4 24. Rg2 Rag8 25. Kh2 f3 26. Rg1 Nxf2 27. Qe3 Ng4+ +28. hxg4 f2) 11... Nxe5 12. Bxe5 e6 13. Nf3 Kh8 $1 {Getting ready to play Rg8 +and then Ne4!} 14. Qb3 Qe7 15. c4 $6 {I don't like this move for White because +now he has an isolated pawn and Black gains the d5 outpost for his pieces.} +dxc4 16. Qxc4 Rg8 17. Rac1 Nd5 18. Qc5 Qe8 19. Bxg7+ Rxg7 {I really like +Black's position and his plans are also very easy to follow! He is simply +building up on the g-file.} 20. Rc2 f6 $1 {Taking control of the e5 square and +preparing Qh5. A key rule of attacking: Bring all your pieces into the attack!! +} 21. Rfc1 Qh5 22. Qa3 Rag8 23. g3 Qh3 {Black has a lot of pressure against +White's king. How should he break through?} 24. Qd6 f4 $1 {Another key +principle of attacking: Open files so that your pieces can invade!} 25. Rc8 +fxg3 26. Rxg8+ Rxg8 27. fxg3 (27. hxg3 Ne3 $1) 27... Ne3 28. Kf2 Ng4+ 29. Kg1 +Nxh2 $3 {Open files for your pieces to invade!!} 30. Kf2 Ng4+ 31. Kg1 {0-1 (31) +Masternak,G (2320)-Malisauskas,V (2505)/Mikolajki 1991/ White resigned before +Black can put up the finishing touches with:} e5 $1) 7. Qb3 (7. Nf3 e6 $11 { +[%cal Gf8d6,Ge8g8] is playable but not theoretically challenging. We can +continue with Bd6 and prepare a queenside minority attack}) 7... Qd7 8. Nd2 e6 +9. Ngf3 Bd6 $1 {The b7 pawn is not a worry} 10. Bxd6 (10. Ne5 Qc7 $11) 10... +Qxd6 11. O-O (11. Qxb7 Rb8 12. Qa6 O-O $44 {Key ideas here are Rb6-Rxb2 and if +White is trying too hard to keep b2 and not castle then there may be an e5 +break} 13. Bb5 (13. O-O Rb6 14. Qa3 (14. Qa4 Rxb2) 14... Qxa3 15. bxa3 Bxf3 16. +Nxf3 Rc8 17. Rfc1 Na5 $44 {0-1 (47) Ritviz,P (2243)-Kathmale,S (2357) +Hyderabad 2018}) (13. Rb1 {Allows us to attack before White castles} Rb6 14. +Qa4 $2 e5 $17) 13... Rb6 14. Qa4 Ne7 $1 $44 {[%csl Rb2][%cal Gf8b8,Ge7g6]}) +11... O-O {Here are the battle lines: White wants to attack on the kingside +with moves like Re1+Ne5. Meanwhile our main counterattacking plan is to push +with b5-b4 (with Rab8 first) However we also need to take care of defending +our kingside, often with defensive ideas such as Bf5 or Bh5-g6} 12. Rae1 (12. +Rfe1 Nd7 13. h3 Bxf3 14. Nxf3 Rab8 15. Qc2 h6 (15... g6 {[%cal Gg8g7] is +reasonable to negate the light square pressure}) 16. Qe2 a6 17. a4 Rfc8 18. Ne5 +Ncxe5 19. dxe5 Qe7 20. Qg4 Qg5 21. Qxg5 hxg5 22. Kh2 b5 {Black launches a +minority attack on the queenside to create pawn weaknesses, a thematic way to +get (counter)play in the Carlsbad structure} 23. axb5 axb5 24. Ra7 Nc5 25. Bc2 +b4 $15 {0-1 (41) Sudakova,I (2288)-Girya,O (2476) Sochi 2019}) 12... Rab8 { +[%cal Gb7b5,Gb5b4,Gg4h5,Gh5g6,Gg4f5] Going for a minority attack counterplay +(b5-b4). Defensive ideas include Bh5-g6 or Bf5 to block the dangerous Bd3} ( +12... Nd7 {[%csl Re5] controls e5}) 13. Ne5 Rfc8 (13... Bh5 14. f4 b5 $13) 14. +f4 b5 15. a3 a5 16. h3 Bf5 17. Bxf5 exf5 {White has setup everything correctly +but has nothing to show for it! Our Caro-Kingside is completely secure as the +pawn storm rages onto the queenside} 18. Nxc6 Rxc6 19. Re5 g6 20. Rf3 b4 $19 { +0-1 (48) Rodi,L (2265)-Campora,D (2515) Buenos Aires 1991 Summary: In the +Exchange Caro White wants to setup with Bd3/Bf4/Nf3/Nd2 and later Re1+Ne5. We +have examined three key ideas to counter white. The approach with 5..Qc7 may +throw White off as he can't stick to his setup. Those in the know will play +Ne2+0-0 and maybe even Qe1. This is a tricky line so be prepared! 5..Nf6 is +the main line and here we have another split. Either you play the g6+bf5 +approach in order to take over the g-file for an attack or continue in typical +style with Bg4. Now in the main line we have a very typical situation of +fending off White's aggression while pursuing our queenside pawn storm. In +general remember the Nf6/Nc6/Bg4/e6/Be7 (Bh5-g6) setup combined with a +queenside pawn storm and you can look to the middlegame with confidence!} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Panov Botvinnik Attack"] +[Black "Weapons for Black"] +[Result "*"] +[ECO "B14"] +[Annotator "Gotham"] +[PlyCount "60"] + +{The Panov Botvinnik Attack (PBA) is characterized by White's early attempts +to open the game for fluid piece play. His strategy is often to get an open +position with active pieces and a Kingside attack. We are going to look at two +rarer alternatives for Black that will force White to abandon his strategy} 1. +e4 c6 2. d4 d5 3. exd5 cxd5 4. c4 {The Panov Botvinnik Attack: White is going +for an Isolated Queens Pawn (IQP) position with active piece play} Nf6 5. Nc3 +g6 $5 {If we can get away with setting up a fianchetto system, then we are +going to be doing very well. First of all, our kingside will be very secure +against White's attacking attempts (usually done with a battery Bc2-Qd3) . +Second, our Bg7 will not only be a powerful defender but also will exert great +pressure against the d4 weakness. Finally, since we have not played e6 our Bc8 +will be free to wander (although we can put it on b7 as well). Futhermore, I +am also a fan of this system since it is not well known by our opponents and +their usual plans don't work against it.} (5... Nc6 {Is my second suggestion. +Developing quickly and putting White's center under pressure. Great move!} 6. +Nf3 (6. Bg5 {Is aggressive from White to attack d5 The modern aggressive +preference where White puts our center under counterpressure!} Ne4 $5 {A rare +idea to bother White's development} 7. Nxe4 {By far the most common} (7. cxd5 +Nxc3 8. bxc3 Qxd5 9. Nf3 Bg4 10. Qb3 Bxf3 (10... e6) 11. gxf3 O-O-O 12. Rb1 Rd7 +$1 13. Qxd5 Rxd5 14. Be3 e6 $13 {[%cal Gd5h5,Gd5a5] A complex fight arises +where White has two bishops and queenside prospects but a tattered pawn +structure. 0-1 (54) Tomczak,J (2561) -Kovalenko,I (2653)/Wroclaw POL 2014/}) +7... dxe4 {[%csl Rd4] It is worthwhile to take note of the cramping effect of +the e4 pawn which stymies Whites development. Meanwhile our pieces are +surprisingly spry with ideas like Bf5 or Qb6/Qa5 and e6-Bb4 coming fast.} 8. d5 +(8. Ne2 Bg4 {[%csl Rd4]}) (8. Be3 {is a prime example of how uninspired play +can lead to supreme trouble for White's king} e5 $1 {[%cal Gf8b4]} 9. d5 Nd4 +10. Bxd4 $6 exd4 11. Qxd4 Bb4+ 12. Kd1 O-O $17 {[%csl Rd1]}) 8... Ne5 {Black's +game is shocking dynamic. Left alone we will aim for developing moves such as +Bf5 or g6-Bg7. White is well advised to act quickly and try to deal with the +annoying e4/Ne5 combo} 9. Qd4 f6 $1 {Black's play looks nonsensically but +actually White's king is in danger in several lines. We maintain our central +knight and get some tempi out of the Bg5.} 10. Qxe4 {This was White's goal all +along. It turns out we are playing a gambit. Of course if White wasn't going +to capture then we would seriously consider holding the strong pawn with Bf5} ( +10. Bf4 Ng4 $1 {[%cal Ge7e5] Threatens e5} 11. Qxe4 e5 12. dxe6 $2 (12. Bd2 Bc5 +13. Nh3 Qb6 $15 {[%csl Gb6,Gc5,Gg4] With the e5 strike all of our pieces are +quickly jumping into action}) 12... Bb4+ 13. Ke2 Qb6 {[%csl Re2] The Ke2 will +not survive once we get the rooks to the center}) 10... Qb6 11. O-O-O {In an +effort to develop and safeguard the queenside White has been lured into +castling long. However the king will now face a vicious attack!} (11. b3 e6 $44 +{[%cal Gf8b4,Gf8c5]}) 11... Qxf2 $5 $13 {[%cal Gc8f5,Ga8c8] Greedy but +preparing Bf5/Rc8 counters} 12. Bf4 g6 $1 {[%cal Gc8f5]} 13. Nh3 (13. Bxe5 $4 +Bh6+ {Forces White into a nasty pin after Kb1 Bf5}) 13... Qb6 {White's king is +still in huge danger with Bf5 coming. For example:} 14. Bxe5 Bf5 15. Qe1 $2 +fxe5 16. Bd3 (16. Qxe5 $4 Bh6+) 16... e4 $1 $19 {[%cal Gf8g7]}) 6... Be6 $5 { +A sideline to simultaneously support our center while pressuring White's} 7. c5 +{Logically releasing the tension} (7. cxd5 Bxd5 {[%cal Ge7e6,Gf8e7,Ge8g8] +Gives us a very comfortable IQP (Isolated Queen's Pawn)}) (7. Bg5 g6 $1 { +[%cal Gf8g7]} 8. Bxf6 exf6 {An unbalanced game where we have a weakened pawn +structure in return for the bishop pair. Our plan will be to combine central +pressure with a surprising kingside pawn storm} 9. c5 {White can't handle the +central tension} (9. cxd5 Bxd5 10. Bb5 Bb4 11. O-O Bxc3 12. bxc3 O-O $11 { +[%csl Rc3,Rd4][%cal Ga8c8] With a strong central blockade}) (9. Qb3 Bb4 { +[%cal Ge8g8]}) 9... a6 $5 {Preventing Bb5 which would ease the pressure on d4} +10. Be2 Bg7 11. O-O O-O 12. a3 $6 g5 $1 {[%csl Rd4][%cal Gg5g4,Gf6f5] White is +powerless to stop the incoming g4+g4 combo which would unleash decisive +pressure onto the d4 pawn!}) (7. Ng5 $6 {Looks tempting but just misplaces the +Knight} Bg4 {[%cal Ge7e6,Gh7h6]} 8. f3 Bc8 $1 {[%csl Rg5][%cal Gh7h6] A clever +switchback. White's position is ruined because of the provoked f-pawn and he +now has to worry about h6 as well as the center collapsing}) (7. Qb3 $5 { +is complicated} dxc4 8. Qxb7 Rc8 $5 $13) 7... g6 {Black's plan if allowed is: +Bg7, 0-0 and then Bg4 and Ne4/d7 to pressure d4 or push e5} 8. h3 {[%cal Re6g4] +A logical idea to prevent a future Bg4. However there are other plans to +pressure the center} (8. Bb5 Bg7 9. Ne5 Bd7 10. Qa4 {Adds pressure to the pin +but we can absorb it} (10. Nxd7 $6 {Grabbing the bishop is senseless as we +often want to play Bg4-Bxf3 to eliminate this knight controlling the center!} +Nxd7 {[%csl Rd4]} 11. Nxd5 $6 O-O {[%csl Rd4]} 12. Bxc6 bxc6 13. Nc3 e5 $13) ( +10. Bxc6 Bxc6 $1 {[%cal Gf6d7,Ge8g8,Ge7e5] Necessary to setup our resource of +Nd7 and a later e7-e5}) 10... Rc8 $5 {An interesting sacrifice} 11. Bxc6 Bxc6 +12. Qxa7 (12. Nxc6 bxc6 13. Qxa7 Nd7 {[%csl Rd4][%cal Ge7e5]}) 12... Nd7 $146 +13. Nxc6 bxc6 14. Ne2 O-O 15. O-O e5 {White's extra pawn won't help deal with +our uncoiling pieces!}) 8... Bg7 9. Be2 O-O 10. O-O Ne4 $1 {[%cal Gg7a1] A key +key key KEY idea to remember! The centralized knight is powerful on it's own +but also opens up the scope for the Bg7 as well as potential f-pawn marches.} +11. Bb5 Qc7 12. Be3 Nxc3 $1 13. bxc3 b6 $1 14. cxb6 axb6 {[%csl Ra2,Rc3][%cal +Ga8a1,Gc6a5,Ga5c4] A nice idea from Black. He has allowed White to fortify the +d4 pawn but in return gains the targets on c3 and a2 plus an outpost on c4.} +15. a4 Na5 16. Rc1 Nc4 $15 {0-1 (32) Stisis,Y (2370)-Navara,D (2725)/Tallinn +EST 2016/}) 6. Qb3 $1 {White takes quick action and targets the center before +we finish developing} (6. Nf3 $6 {This perfectly natural developing move is +already a mistake. This move looks very natural...and it is very popular! That +is great news for us. The problem is that White isn't putting any pressure on +our position as we get developed and target the isolated d4 pawn} Bg7 {[%cal +Gb8c6,Ge8g8,Gb7b6,Gd5c4] is easy for us after 0-0 Nc6. Then we will usually +throw in dxc4 once the Bf1 moves. Bg4 is often an option but I prefer b6-bb7 w/ +Rc8 and Na5 or Nb4 White usually tries to develop his pieces normally here} 7. +Be2 O-O 8. O-O Nc6 9. h3 {White's most popular option to prevent Bg4. +Otherwise we can play some kind of combo of Bg4 or dxc4 w/b6} (9. c5 Ne4 $1 { +Unleashing the Bg7!} 10. Be3 Nxc3 $1 {A great move with the idea:} 11. bxc3 b6 +$1 12. cxb6 axb6 {White no longer has an IQP but his c3 and a2 pawns are weak +which is also a big problem. On top of that, Black also has great control over +the light squares (such as c4).} 13. Qd2 Ba6 $1 $15) 9... dxc4 $1 10. Bxc4 { +We have reached an IQP position..... the type of pawn structure White is going +for in the PBA. Except...this is the best possible version for Black! All our +pieces will soon find good squares and White will lack active play in return +for his structural concession (pawn on d4 is isolated). Black's main plans +here a mix: pressure the d4 pawn and play for the light squares on d5/c4. The +games below are important to study because they show how Black can slowly take +over the game and put White on the defensive. Here is Black's usual winning +strategy: develop pieces on influential squares (that control light squares) +by playing b6-Bb7-Na5-Rc8-Nc4 (Nd5) (usually), followed by some combo of +Qd6+Rd8 (pressure d4) pawn....followed by favorable trades and winning the d4 +pawn and then winning the endgame!} b6 $1 $11 {I like this plan the best. +Black is going to place both bishops on the long diagonals, very influential} +11. Be3 Bb7 12. Qd2 Rc8 13. Be2 Nb4 $5 {[%cal Gb4d5]} (13... Na5 $5 {[%cal +Ga5c4]}) (13... e6 $5 {[%cal Gc6e7,Ge7f5,Ge7d5]}) 14. Rac1 Nbd5 {A common +theme in these structures is that Black really enjoys using the outpost in +front of the IQP.} 15. Bh6 Nxc3 $1 {It looks like Black is helping White +remedy his IQP issue but actually he's prepared a nice tactic:} 16. bxc3 Ne4 +17. Qe3 Rxc3 $1 18. Rxc3 Nxc3 $19 {0-1 (35) Orehek,S (2092)-Matlakov,M (2694)/ +Tallinn EST 2016/}) (6. cxd5 Nxd5 {White tries to get an intiative against the +Nd5 but we have sufficient play for example} 7. Bc4 (7. Qb3 {A common idea for +White is some Bc4/Qb3 tempo gainer but here we will see that the intiative can +be defused} Nb6 8. Bb5+ (8. Nf3 $6 {Too slow} Be6 9. Bb5+ Nc6 10. Qd1 Bg7 $15 { +0-1 (44) Kosintseva,N (2483)-Rambaldi,F (2557) Dallas 2015}) 8... Bd7 9. Nf3 +Bg7 10. Ne5 {White's most common try otherwise there is no compensation for +the d4 pawn} O-O 11. Nxd7 N6xd7 $5 12. O-O Nc6) 7... Nb6 8. Bb3 Bg7 {[%cal +Gb8c6,Gc6a5]} 9. Nf3 (9. d5 {Grabs space at the cost of dark square control} +O-O 10. Nf3 Bg4 11. h3 Bxf3 12. Qxf3 N8d7 $13 {[%cal Gd7c5,Ga8c8]}) 9... O-O +10. O-O Nc6 {[%csl Rd4][%cal Gc6d4,Gc6a5]} 11. d5 Na5 $11 {[%csl Rd5][%cal +Gc8g4,Ga5b3,Gb6c4,Ga8c8] Strong queenside counterplay is coming with Nc4. +White also needs to watch out for Nxb3 and Bxc3 to pick up the d5 pawn}) 6... +Bg7 7. cxd5 O-O {[%csl Rd5] A big battle will rage around the d5 pawn. Our +usual idea will be Nd7-Nb6, Na6-Nc7, or even a radical sacrifice with e6! The +fight will revolve around the d5 pawn.} 8. Be2 {[%cal Ge2f3] White's main try +to solidify d5.} (8. g3 $5 {Looks like a logical counterpart to 8. Be2 but +actually has a downside: White is weakening some light squares!} e6 $1 9. dxe6 +Bxe6 10. Qxb7 Re8 11. Nge2 Nbd7 12. Bg2 Rb8 13. Qxa7 Bc4 $44 {With massive +compensation for the pawns. White can hardly move!}) (8. Nge2 {[%cal Ge2f4, +Gg2g3] is flexible. White may play Nf4-Be2 or g3-Bg2. However we have a +powerful idea in any case:} a5 $1 {[%cal Ga5a4]} 9. Nf4 (9. a4 $6 Na6 {[%csl +Rd5][%cal Ga6b4]}) 9... g5 10. Nfe2 a4 11. Nxa4 Nxd5 {[%cal Gc8e6,Gb8c6,Gd8a5, +Ga8a1] With massive activity. White is in trouble!}) (8. Bc4 Nbd7 {[%cal Gd7b6] +}) 8... Nbd7 9. Bf3 Nb6 10. Nge2 {[%cal Ge2f4] The main idea by far} (10. Bg5 { +Aims to eleminate the Nf6 to ease pressure off d5.} Bf5 {[%cal Gf5d3,Gd3c4]} +11. Rd1 a5 12. Nge2 (12. a4 $2 Qd6 {[%cal Gd6b4]}) 12... a4 13. Qb5 h6 14. Bxf6 +exf6 15. O-O Re8 $44 {[%cal Gg7f8]}) (10. Bf4 e6 $5 {A borrowed idea from the +g3 variation} 11. dxe6 (11. d6 Nfd5 12. Be5 Bxe5 13. dxe5 Qg5 {[%csl Re5][%cal +Gg5e5]}) 11... Bxe6 12. Qd1 Nfd5 $44) 10... Bg4 $1 {My favorite idea, +eliminating the troublesome Bf3} 11. Bxg4 Nxg4 12. a4 $1 (12. O-O Nf6 13. Nf4 +Qd7 $11 {[%csl Rd5][%cal Gf8d8] Will win back the pawn shortly}) 12... Nf6 $1 { +Not fearing a5} 13. Nf4 (13. a5 $6 Nbxd5 14. Qxb7 {White can grab the +queenside pawn but as is often the case in this variation, Black's development +and White's structure give Black the better game!} Qd6 15. Qb3 Rab8 16. Qd1 +Rfc8 17. O-O Qa6 $1 {[%cal Gc8c1,Gb8b1,Gd5b4,Gg7a1] 0-1 (64) Sanal,V (2487) +-Tomashevsky,E (2744)/Doha QAT 2015/}) 13... a5 14. O-O {A key position for +the line. White is doing his best to save d5 but we have two interesting and +rarer options A critical position and the ultimate main line of our variation. +I realized there is a problem with the "established main line"} g5 $5 (14... +Rc8 $5 {[%cal Gc8c4,Gc4b4] Aiming for Rc4-Rb4 I had analyzed this very rare +continuation first in 2016. It has only been tested twice since. The idea is +to go for the active Rc4-Rb4 idea}) 15. Nd3 h6 {[%csl Rd5] Picking up d5 next. +The weaknesses of the kingside seems to be managable} 16. Nc5 Nbxd5 17. Nxb7 +Rb8 18. Nxd5 Nxd5 19. Qb5 Qc7 20. Qxd5 Rxb7 21. Bd2 Rxb2 22. Bxa5 Qa7 23. Bc3 +Rc2 24. Qb3 Rxc3 25. Qxc3 Bxd4 26. Qc6 Bxa1 27. Rxa1 Qd4 28. Rb1 Rd8 29. h3 Rd6 +30. Qe8+ Kg7 $11 {½-½ (36) Stany,G (2494)-Macovei,A (2394) Arad 2018 The PBA +is an older but still respectable system. My favorite way to meet it is with +the solid fianchetto 5...g6!? If White isn't aggressive enough we will finish +our development easily before pressuring the weak pawn. If White plays the +critical 6. Qb3 then we will have a tug of war regarding the d5 pawn. It is +also worth mentioning the ideas after 5..Nc6 such as 6..Be6!? or 6..Ne4!? +which give White very unusual problems to deal with!} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Pseudo-Panov"] +[Black "Pseudo-Exchange"] +[Result "*"] +[ECO "B11"] +[Annotator "Gotham"] +[PlyCount "24"] + +1. e4 c6 2. c4 {This is called the "Pseudo-Panov" It can transpose into the +Panov but usually White will want to throw in a disruptive check} (2. Nf3 d5 3. +exd5 cxd5 {I decided to name this variation as the "Pseudo-Exchange" since +White wants to go for similar structures as in the Exchange Variation. The +difference here is that White develops with Nf3 first in order to play a quick +Ne5. Sometimes inexpierenced players will play Nf3 without the proper follow +up and this gives us the opportunity with quick and active development with Bg4 +} 4. d4 (4. Ne5 $5 {The immediate knight jump is also possible but perhaps +premature} Nc6 5. Bb5 Bd7 6. Nxd7 {White's idea was to grab the bishop pair} ( +6. Bxc6 Bxc6 7. d4 e6 8. O-O Bd6 $5 {[%cal Gg8e7] Keep options open of both +Ne7 and Nf6}) 6... Qxd7 7. d4 a6 8. Be2 {White wants this bishop on d3 so he +is investing several tempi into this whole two bishops idea} e6 9. O-O Bd6 10. +c3 Nf6 (10... f5 $5 {[%cal Gg8f6] Going for an aggressive stonewall setup}) 11. +Nd2 O-O 12. a4 e5 $5 $13 {Black accepts an IQP structure for more active play: +½-½ (55) So,W (2780)-Vidit,S (2718) chess.com INT 2018}) 4... Nc6 5. Ne5 (5. +Bb5 Qa5+ $1 {A key idea to force Nc3. The Nc3 is a bit misplaced as it +prevents c3/c4} 6. Nc3 Bg4 7. Bd2 Rc8 8. a4 Qd8 $11 {[%cal Ge7e6,Gg8f6,Gf8e7, +Ge7d6]}) (5. Bd3 Bg4 $11 {[%cal Ge7e6,Gg8f6,Gf8e7,Ge8g8] With a very easy +Exchange Caro style development incoming}) (5. Nc3 $6 Bg4 $11 {[%cal Ge7e6, +Gg8f6,Gf8e7] The Nc3 is a bit misplaced for White and we can easily finish our +development with e6/Nf6/Be7 (or Bd6) 0-0 with an eventual Rc8 and even a6-b5 +pawn storm.}) 5... Nf6 {The simplest move although it does allow White to +proceed with his main idea} 6. Bb5 Bd7 7. Nxd7 Qxd7 8. c3 {White is excited to +get the bishops but its no big deal} e6 9. O-O Bd6 10. Nd2 Qc7 11. Nf3 O-O 12. +Re1 Ne4 $1 {An important idea to avoid giving White a free hand with a +kingside attack} 13. Bd3 f5 $1 {This stonewall style setup works well to get +active play and restrict the Bd3} 14. g3 Rae8 $13 {Black has a great attacking +position and may even consider the aggressive e5 or f4 pawn pushes soon}) 2... +d5 3. cxd5 (3. exd5 {a little inaccurate} Nf6 $1 4. dxc6 $2 (4. Nc3 cxd5 { +This will lead to transpositions seen below} 5. d4 (5. cxd5 Nxd5)) 4... Nxc6 { +[%cal Ge7e5] Our development and center more than compensate for the pawn! For +example:} 5. Nf3 e5 6. d3 e4 $1 7. dxe4 Qxd1+ 8. Kxd1 Nxe4 {[%cal Gc8f5,Ge8c8, +Gf8c5,Gc6b4] Even though the queens are off our intiative is raging!}) 3... +cxd5 4. exd5 Nf6 5. Qa4+ {Being disruptive is White's idea} (5. Bb5+ Nbd7 6. +Nc3 a6 7. Qa4 {consistent. Otherwise come moves like b5-Bb7 and d5 falls.} Rb8 +$1 8. Bxd7+ Bxd7 $44 {[%cal Gb7b5,Gb5b4]}) (5. Nc3 Nxd5 6. Nf3 g6 $5 {is +simplest to keep theme with our Panov lines.} 7. Qb3 (7. Bc4 Nb6 8. Bb3 Bg7 9. +d4 {TR to 6. cxd5 Panov}) 7... Nb6 8. Bb5+ $5 {White is trying his best to +create conflict before Black castles} Bd7 9. Ne5 {White's threats look scary +but we can absorb the pressure and counter the isolani} e6 {[%cal Gb8c6]} 10. +Ne4 Be7 11. O-O O-O 12. d3 Bxb5 13. Qxb5 Qd5 $15 {0-1 (58) Itkin, David (2243) +-Ostrovskiy, Aleksandr (2401) Chicago Open 2018}) 5... Nbd7 6. Nc3 g6 7. Nf3 ( +7. Bc4 a6) 7... Bg7 8. Bc4 (8. Qb3 {White wants to be able to meet a6 with a4 +and not lose time with Qa3 like in the main line} O-O 9. Bc4 a6 10. a4 Qa5 $5 { +[%csl Ra1][%cal Gb7b5]} 11. Ra3 {A weird way to stop b5} Nb6 12. O-O Nxc4 13. +Qxc4 Bf5 $13 {White's extra pawn has been worth a lot of trouble. His pieces +are scrambled and the pawns aren't too pretty}) 8... O-O 9. d3 a6 {[%cal Gb7b5] +} 10. Qa3 (10. O-O $4 b5 11. Bxb5 Nb6 {[%cal Gb6a8]}) 10... b6 {Preparing the +simple Bb7 and then b5 after} 11. O-O Bb7 12. Re1 Re8 {[%cal Gb6b5,Gd7b6] +White doesn't have anything special to meet the obvious b5+Nb6} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Two Knights Caro"] +[Black "Weapons for Black"] +[Result "*"] +[ECO "B11"] +[Annotator "Gotham"] +[PlyCount "106"] + +{The Two Knights Caro is a very solid way for White to play. He prioritizes +development and doesn't offer us many targets to attack. However we will also +be able to get our development underway quite easily. Lets learn some setups +to meet White head on.} 1. e4 c6 2. Nc3 d5 3. Nf3 Bg4 {[%cal Ge7e6,Gg8f6] A +very classical Caro idea: Bring the bishop outside the pawn chain} (3... a6 $5 +{A rare idea that I also like and use often: We are building a light square +pawn chain and just waiting to see what White is up to before developing.} 4. +d4 (4. h3 {cutting out Bg4} d4 $1 {The inclusion of a6 and h3 is in Black's +favor here.} 5. Ne2 c5 {Our a6 pawn prevents any future Bb5 (in case of Nc6) +and we can also play b5 later ourselves}) 4... Bg4 5. Be2 (5. h3 Bxf3 6. Qxf3 +e6 $14 {[%cal Gg8f6,Gf8e7] White has good central control but we are super +solid on the light squares and will develop with Nf6+Be7 next:} 7. Be3 Nf6 8. +e5 {We love to see this move since now we can easily play c5/b5 on the +queenside} Nfd7 9. Qg3 c5) 5... e6 {Solidly applying our light square strategy +without locking in the bishop} 6. O-O Nf6 7. e5 (7. exd5 cxd5 {[%cal Gb8c6, +Ga8c8] This structure is harmless for Black. Our plan will be to play on the +queenside and utilize the semi-open c-file while preparing a minority attack}) +7... Nfd7 {In general this type of French position with an active bishop is +exactly our wish in the a6 variation. The plan is to continue with moves like +c5/nc6 (b5) and of course developing with Be7 and 0-0.}) (3... dxe4 {If you +play the Tartakower against the Classical then this can be an easy solution +for you} 4. Nxe4 Nf6 5. Nxf6+ (5. Qe2 $5 {is a tricky move since White might +checkmate us with Nd6!} Nxe4 (5... Bg4) (5... Bf5) 6. Qxe4 Qa5 $5 {[%cal Gc8f5, +Ga5f5] Prepares Bf5 while preventing d4} 7. Bc4 Bf5 8. Qe2 Nd7 9. O-O e6 10. d4 +Be7 11. Bf4 O-O 12. c3 Rfe8 13. Rfe1 Rad8 14. a4 Bg4 15. Bg3 Qh5 $11 {1/2-1/2 +(40) Sammed Jaykumar,S (2381)-Gholami,A (2541) Mumbai 2020}) 5... exf6 { +[%cal Gf8d6,Ge8g8] Will transpose to the Tartakower variation of the Classical: +0-1 (69) Karjakin,S (2785)-Nakamura,H (2779) Doha 2016}) 4. h3 {By far White's +main idea which strives for the bishop pair} (4. Be2 {If White tries to +develop normally we can continue development with Nf6/e6 and enjoy a very +solid light square structure with the bishop secure outside the pawn chain. +For example:} e6 5. d4 Be7 6. h3 Bh5 7. Be3 Nf6 8. Nd2 Bg6 9. e5 Nfd7 {A very +comfortable structure for Black and after c6-c5 we will have our usual +queenside play following Nc6/Rc8 ideas}) 4... Bxf3 5. Qxf3 e6 {We aren't too +upset about losing our bishop since our pawns do an excellent job dominating +the light squares} 6. Be2 (6. d3 g6 $5 {[%cal Gf8g7,Gg8e7] same as main line} +7. Bd2 Bg7 8. g4 Nd7 9. h4 h5 10. g5 Ne7 11. Bh3 b5 $15 {0-1 (36) Tomb,M (2182) +-Nyzhnyk,I (2599) chess.com INT 2018}) (6. d4 $5 {is ambitious and could be a +sacrfice} Nf6 7. Bd3 (7. e5 Nfd7 $11 {[%cal Gc6c5] with c5 coming next we have +no complaints in this French like structure}) 7... Be7 {declines the gambit to +complete development} (7... dxe4 {accepting the pawn! We do need to be careful +though} 8. Nxe4 Qxd4 $44 {[%cal Gb8d7,Gd7e5]} 9. Be3 {most common and best +scoring} (9. O-O Nbd7 {[%cal Gd7e5]}) 9... Bb4+ $5 {develops and prevents +White from castling but also helps his rooks get in the game} 10. Ke2 Qe5 $5 +$146 {a computer novelty to keep the queen active} (10... Qd8 $44 {[%cal Gb8d7] +}) 11. Bf4 Qd5 {[%cal Gb8d7]} 12. Nxf6+ gxf6 13. Be4 Qc4+ 14. Bd3 Qd5 $11)) (6. +g3 g6 $5 {My proposed setup for Black!} 7. d4 {makes sense to take the center +before Bg7} (7. Bg2 Bg7 8. O-O Ne7 9. d3 O-O 10. Bg5 Nd7 11. Rae1 {We will see +this flexible setup from Black in the main line too. Here the idea can be to +expand on the center/queenside}) 7... Bg7 8. Be3 Nf6 9. Bg2 (9. e5 Nfd7 { +We will be able to play c6-c5 here}) 9... Nxe4 10. Nxe4 dxe4 11. Qxe4 Nd7 $14 { +A common structure that White aims for in the two knights. He has the bishop +pair and more space but Black is solid.} 12. O-O Nf6 13. Qd3 Nd5 14. Bd2 O-O +15. Rfe1 Re8 16. c4 $2 {an instructive mistake that leaves d4 too weak.} Ne7 +17. Bc3 Qb6 18. Rad1 Red8 19. Re2 Rd7 20. Red2 Rad8 21. g4 {White tries to +stop Nf5 but allows} Bxd4 22. Bxd4 Rxd4 23. Qxd4 Rxd4 24. Rxd4 {and now Black +plays a key move to gain a large advantage and juicy outposts for the knight} +g5 $1 $19 {0-1 (59) Kurmann,O (2481)-Macovei,A (2328) Heraklion 2017}) 6... g6 +$5 {[%cal Gf8g7,Gg8e7,Gb8d7] Setting up a super light square blockade and +aiming for Bg7/Ne7/Nd7 and later queenside play with b5 and/or d4} 7. O-O Bg7 +8. Rd1 d4 {This position has been reached 6 times so far with Black crushing +with 5.5/6! Let's see how one of the world's best handles this structure with +Black} 9. Nb1 Ne7 10. d3 c5 11. a4 Nbc6 12. Na3 O-O 13. Qg3 {Black will aim to +expand on the queenside and White pins his hopes on some kingside intiative} a6 +14. Bf4 e5 15. Bd2 Rb8 16. Rf1 b5 17. axb5 axb5 18. f4 Bh6 (18... f5 $5) 19. +Qh4 Bxf4 20. Bxf4 exf4 21. Rxf4 Ne5 $17 22. Raf1 N7c6 23. Qf2 b4 24. Nb1 b3 25. +c4 Nb4 26. Qg3 f6 27. Kh2 Qd6 28. Na3 Nc2 29. Nb5 Qe7 30. R4f2 Ra8 31. Rb1 Ne3 +32. Na3 Rf7 33. Re1 Kh8 34. Bf1 Re8 35. Nb1 f5 36. Nd2 Qc7 37. Kg1 f4 {A +beautiful case of dark square domination} 38. Qh4 Ref8 39. Be2 Qa5 40. Qg5 Qxd2 +41. Qxe5+ Kg8 42. Rb1 Qc2 43. Rbf1 Nxf1 44. Bxf1 Qc1 45. Qxc5 f3 46. g3 Qe3 47. +Qd5 h5 48. h4 Kh7 49. Qg5 Ra7 50. Qc5 Ra1 51. Qe7+ Kg8 52. Qe6+ Kg7 53. Qe7+ +Rf7 {0-1 (53) Perez Ponsa,F (2553)-Nakamura,H (2781) Caleta 2018 Summary: The +Two Knights is a solid system but since White isn't threatening anything we +have a lot of freedom for our setups: 3..dxe4 is a good move if you're +comfortable transposing to the Classical Tartakower (watch out for 5. Qe2!? +though!), 3..a6!? is a rarer option that may through your opponent off and 3.. +Bg4! is the main line. Here we have an interesting twist: The light square +strategy combined with the fianchetto! I really like this setup aesthetically +as our pawns take over the light squares while our bishop crushes the dark +squares} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Fantasy Caro"] +[Black "3..e6 & 3..e5!?"] +[Result "*"] +[ECO "B11"] +[Annotator "Gotham"] +[PlyCount "30"] + +{In our odds and ends section we will now tackle the Fantasy Variation. This +is actually a pretty decent and aggressive weapon for White as he tries to +maintain a perfect center} 1. e4 c6 2. d4 d5 3. f3 e6 $5 {We won't take on e4! +Now f3 looks out of place since it blocks White's natural development. This +option keeps the game more stable and potentially denies White the attacking +positions he desires.} (3... e5 $5 {This is a violent reaction that takes the +fight straight to White's face! The point of this sacrifice is to gain rapid +development and access to the dark sqaures weakened by the f2-f3 push.} 4. dxe5 +{The acid test} (4. exd5 {This leads to a good IQP situation for Black} exd4 5. +Qxd4 cxd5 {[%cal Gb8c6,Gg8f6] The f3 pawn is in the way of White's development +(not to mention the dark square tenderness) and the Qd4 is going to be hit}) +4... Bc5 {White will not castle for the foreseeable future} 5. Nc3 (5. Bd3 Qb6 +6. Ne2 Nd7 7. f4 dxe4 8. Bxe4 f6 $1 $44) 5... Ne7 6. f4 {This is very +ambitious, White wants to hold the material and develop with Nf3} (6. Bd3 O-O +7. f4 {is the computer approved response. While I do not dispute that White +may weather the intiative it is also clear that practically speaking the Ke1 +will give Black long term compensation. Here is a sample game between 2 GMs +that ended in a rout} Na6 8. Qf3 Qb6 9. Nge2 Nb4 10. g4 $2 Be6 11. Kf1 Nxd3 12. +cxd3 Rad8 13. Na4 Qa5 14. Nxc5 Qxc5 15. Nc3 b5 (15... dxe4 $1 $17 {open up +some files or diagonals}) 16. Qf2 Qb4 17. f5 dxe4 18. a3 Qb3 19. dxe4 Rd3 20. +Bg5 Bc4 21. Kg2 Ng6 $3 22. Ne2 Qxb2 23. Nc1 Nh4+ $1 {0-1 (23) Mitkov,N (2470) +-Kallai,G (2490) France 1994} 24. Bxh4 Rd2) (6. exd5 $6 {is White's most +popular move here but I don't understand the point of opening the position and +helping us develop with Nc6} cxd5 $44) 6... Qb6 7. Nf3 Bf2+ 8. Ke2 a5 $1 { +A clever idea, opening the a7 square for the queen in case of Na4} 9. exd5 $2 { +As I mentioned before I'm not sure why White players make this trade as it +just helps us develop} cxd5 10. Qd3 Nbc6 11. Nd1 Bc5 12. Qb3 Nb4 13. a4 d4 14. +Ke1 Bf5 15. Bb5+ Nec6 {Incredibly White simply resigned in 0-1 (15) Di +Nicolantonio,L (2408)-Loiseau,Q (2470) Paris 2019 as the computer rates the +position as -5 for Black!}) 4. Nc3 (4. Be3 {White can play this option to +avoid Bb4 after Nc3, but this leaves b2 weak.} Qb6 $1 {[%cal Gb6b2,Gb6d4]} 5. +Nd2 $5 {White tries to play a gambit since protecting b2 would lose time and +allow black a quick center strike.} (5. b3 c5 {[%cal Gb8c6]}) (5. Qc1 c5 { +[%cal Gb8c6]}) 5... Qxb2 6. Bd3 Qa3 7. Ne2 {White has a nice lead in +development but the closed nature of the position allows Black to develop +soundly. For example:} b6 $5 {[%cal Gc8a6]} (7... c5 $5 {[%cal Gb8c6]})) 4... +Qb6 $5 {[%cal Gb6b2,Gb6d4] This rarer move makes it hard for White to develop.} +5. a3 {White most popular choice here, the idea is to make b2 poisoned.} (5. +Nge2 {is clumsy development. Simple play is good:} Nd7 6. a3 dxe4 7. fxe4 e5 8. +dxe5 $2 Bc5 9. Ng3 Bf2+ 10. Ke2 Nxe5 $19 {0-1 (29) Soto Vega,J (2363) +-Ostrovskiy,A (2425) chess.com INT 2020}) 5... Nd7 {[%cal Ge6e5,Gc6c5]} 6. Be3 +Ngf6 {Black is planning a timely e5 or c5 break here. Example game:} (6... Qxb2 +$4 7. Na4 {Don't fall for this!}) 7. Rb1 dxe4 8. fxe4 e5 9. Nf3 Bd6 10. Qd2 Qc7 +11. Bc4 O-O 12. O-O exd4 (12... Ng4 $5) 13. Bxd4 Ne5 14. Nxe5 Bxe5 15. Bxe5 +Qxe5 $15 {[%cal Gc8e6] White is simply saddled with an isolated central pawn +and Black has powerful control of the dark squares (especially e5) Summary: +The Fantasy variation is White's attempt for an aggressive game. However we +have two very different counters: 3..e5!? is extremely aggressive and +sacrifices a pawn to keep White's king in the center. Meanwhile 3..e6 is more +solid and can be really frustrating for White after a quick Qb6. Then White +will need to constantly watch out for e5/c5 central breaks. Either way White's +attacking chances will be exactly as his opening: a fantasy!} * + +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "Caro Minor Lines"] +[Black "?"] +[Result "*"] +[ECO "B11"] +[Annotator "Gotham"] +[PlyCount "48"] + +{Let's tie up the loose ends by checking out side options for White} 1. e4 c6 +2. d3 {It may seem strange to only push the d-pawn one square but there are +some players who love to setup a Kings Indian structure no matter what. Of +course here we can take over the center} (2. Nc3 d5 {Aside from transposing to +main lines White can try two tricky queen moves} 3. Qf3 $5 (3. Qe2 {Has a +peculiar idea} d4 4. Nd1 {White wants to play f4 later and then Nd1-Nf2 to +attack on the kingside} e5 5. g3 c5 {Grabbing the available space} 6. d3 Nc6 7. +Bg2 Bd6 8. f4 exf4 9. gxf4 f6 10. Nf3 Nge7 11. O-O Qc7 12. Nh4 Be6 13. e5 fxe5 +14. f5 Bf7 15. Nf2 O-O-O $17 {0-1 (71) Pridorozhni,A (2565)-Moskalenko,A (2531) +Sochi 2017}) 3... dxe4 {A simple solution} 4. Nxe4 Nd7 {Black gets a very +solid caro style structure here.} 5. d4 (5. Bc4 $2 Ne5) 5... Ndf6 {[%cal Gd8d4] +Hits the d pawn} 6. c3 Nxe4 7. Qxe4 Nf6 8. Qc2 Qd5 {[%cal Gc8f5]}) (2. Bc4 { +Giving us a free tempo} d5 3. Bb3 $5 {White gambits the pawn for basically +scholar's mate} (3. exd5 cxd5 {I see this mistake a lot in inexperienced +players games, obviously we are very happy to get the free tempi to take the +center!}) 3... dxe4 4. Qh5 e6 5. Nc3 Nf6 6. Qh4 Nbd7 {[%cal Gd7c5]} 7. Nxe4 (7. +f3 Nc5 $5 8. fxe4 Nfxe4 $15) 7... Nxe4 8. Qxe4 Nc5 $15 {[%csl Rb3]}) (2. b3 { +Trying to establish a strong fianchettoed bishop and taking the game down +original paths} d5 3. Bb2 $5 {White's goal is some kind of aggressive setup +with opposite side castling but we have no complains as the fianchetto +structure will allow us to play for a5-a4} (3. exd5 cxd5 $11 {[%cal Gb8c6, +Gg8f6]}) 3... dxe4 4. Nc3 Nf6 5. Nge2 (5. Qe2 Bf5) 5... Bf5 6. Ng3 e6 7. Qe2 +Nbd7 8. Ngxe4 Be7 9. O-O-O a5 $1 {0-1 (48) Reprintsev,A (2428)-Dreev,A (2690) +Dos Hermanas 2003}) (2. d4 d5 3. Nc3 dxe4 4. f3 {A transposition to the +Blackmar Diemer gambit.} exf3 5. Nxf3 Nf6 6. Bc4 Bf5 7. O-O e6 8. Ne5 Bg6 $1 { +[%csl Ge6,Gf7] An important defensive idea to protect f7 and specifically +avoid Rxf5/Nxf7} 9. Bg5 Nbd7 $17 {An extra pawn and an extremely solid game +for Black}) (2. f4 {Relatively frequent compared to sidelines but not +dangerous at all} d5 3. e5 {The f4-e5 duo look impressive but give up a lot of +light squares} Bf5 4. Nf3 e6 5. d4 h5 $5 {Immediaetly securing the light +squares. Black will continue development with Nh6 and organize a timely c6-c5}) +(2. Nf3 d5 3. d3 $5 {This unassuming setup has been recently tested +extensively by several strong players.} g6 $5 {Not a typical idea in the Caro +but it makes sense to occupy the open diagonal} 4. Nbd2 Bg7 5. g3 e5 6. Bg2 Ne7 +7. O-O O-O 8. Re1 d4 $1 {[%cal Gc6c5,Gb8c6] Claiming space in a reverse Kings +Indian style position}) (2. Ne2 $5 {A surprise weapon that has been used by +many strong players. This leads to original positions} d5 3. e5 d4 $5 {Most +ambitious to grab space} 4. c3 {Logically countering the space} (4. b4 { +Creatively preventing c5} Nh6 $5 {[%cal Gh6f5]}) (4. Ng3 Qd5 5. f4 g5 $5 6. d3 +gxf4 7. Bxf4 Bh6 8. Qd2 Bxf4 9. Qxf4 Nd7 10. Nd2 Nxe5 $15 {1/2-1/2 (25) Farran +Martos,F (2287)-Narciso Dublan,M (2553) El Sauzal 2010}) 4... c5 5. b4 $5 { +Leads to absolutely bizarre play!} Nc6 6. bxc5 d3 7. Nf4 Nxe5 8. Qa4+ Bd7 9. +Qe4 {White is trying to remove the thorny d3 pawn} Nc6 10. Bxd3 Nf6 11. Qe3 e5 +$15 {0-1 (27) Luft,D (2190)-Hausrath,D (2487) Vlissingen 2016}) 2... d5 3. Nd2 +e5 $1 4. Ngf3 Bd6 5. g3 (5. d4 {I've never faced this move but it has been +tried quite a bit. Simplest is to allow an active IQP position:} exd4 6. exd5 +cxd5 7. Nxd4 Nc6 8. N2f3 Nf6 9. Be2 O-O {Black's isolater is not in any danger +but does control key central squares.} 10. O-O h6 11. Re1 Re8 12. c3 a6 13. h3 +Bd7 14. Be3 Na5 15. Bf1 Nc4 $15 {0-1 (36) Lobron,E (2480)-Seirawan,Y (2605)/ +Indonesia 1983/}) 5... Nf6 6. Bg2 O-O 7. O-O Nbd7 8. Re1 Re8 {Our strong +center gives us a very comfortable game.} 9. b3 {I've faced this move the most} +(9. c3 {[%cal Rb2b4]} a5 {[%cal Gd8c7,Gb7b6,Yc8b7,Yc8a6] Grabbing space on the +queenside and intending to calmly develop while pressuring the center}) 9... a5 +{[%cal Ga5a4]} 10. a3 d4 $1 11. Nh4 Bf8 12. Nf1 a4 13. b4 c5 $1 {Black +mercilessly attacks the queenside and suceeds with one of the most beautiful +batteries in chess history!!} 14. bxc5 Ra5 $1 15. Nf5 Rxc5 16. g4 Re6 $1 { +[%csl Rc2][%cal Ge6c6]} 17. h3 Rec6 18. c4 dxc3 19. Qxa4 c2 20. Be3 Rc3 21. d4 +Qc7 22. g5 Ne8 23. d5 R6c4 24. Qb5 c1=Q {[%csl Yc1,Yc3,Yc4,Yc7] 0-1 (24) +Malmdin,N (2175)-Salem,A (2564)/Caleta ENG 2014/ Summary: Our last section +delt with many unusual options from White. Some I think are not good at all +(B3, Bc4, Blackmar-Diemer) but others require some knowledge (Nf3+d3, Qe2/Qf3 +& Ne2!?). In my experience 2. d3 is the most popular of the bunch but allows +us to take over the center. 2. Ne2!? is probably the trickiest as the +resulting positions are very confusing.} * + diff --git a/BChess/Openings.pgn b/BChess/Openings.pgn index 92ce0f3..75d6afa 100644 --- a/BChess/Openings.pgn +++ b/BChess/Openings.pgn @@ -3,11 +3,11 @@ [Name "Sicilian defense"] [Score "54"] -1. e4 c5 +1. e4 c5 * [Score "56"] -1. d4 +1. d4 * [Score "58"] [Name "Ruy López Opening: Morphy Defense, Columbus Variation, 4...Nf6"] diff --git a/BChess/e4NYStyle.pgn b/BChess/e4NYStyle.pgn new file mode 100644 index 0000000..7007714 --- /dev/null +++ b/BChess/e4NYStyle.pgn @@ -0,0 +1,628 @@ +[Event "?"] +[Site "?"] +[Date "2019.11.28"] +[Round "?"] +[White "Chapter 1"] +[Black "1. e4 e5, Vienna Gambit"] +[Result "*"] +[ECO "C29"] +[Annotator "Gotham"] +[PlyCount "31"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 e5 2. Nc3 Nf6 3. f4 d5 4. fxe5 Nxe4 5. Qf3 Nxc3 {We want them to take +this knight so we will recapture with the b2 pawn and go for d2-d4, with a +large center, and Bd3/Ne2 setup.} (5... Nc6 {A tricky and challenging move. We +must prevent Nxe5.} 6. Bb5 Nxc3 (6... f5 {Combining Nc6 with f5 makes no sense. +} 7. d3 Nxc3 8. bxc3 Be6 9. Ne2) 7. dxc3 Qh4+ (7... a6 8. Bxc6+ bxc6 9. Ne2 { +And we prepare castling with Nd4 coming. Natural development here can quickly +backfire for Black.} Bc5 10. Qg3 Rg8 11. Bg5 Be7 12. Bxe7 Qxe7 13. O-O) (7... +Be7 8. Ne2) 8. g3 Qe4+ 9. Be3 {Don't rush to trade queens. We prefer if Black +will take our queen first, and if Black gets greedy with Qxe5...} Qxe5 (9... +Qxf3 10. Nxf3 {[%cal Ge1c1]}) (9... Qxc2 10. Ne2 {and now Black has to come +back and offer the trade again, as taking on b2 leads to us castling with a +huge attack.} Qe4 11. Qxe4 dxe4 12. Nd4 Bd7 13. Nxc6 bxc6 14. Ba4 {Down a pawn +for the moment but with the amount of weaknesses (c6, c7, e4, f7) we'll +continue pressure throughout the middlegame.}) 10. O-O-O Be6 11. Ne2 {We've +sacrificed a pawn for an initiative. Our ideas include Nd4/f4, or Bf4, and +moving the Rh1 to f1 or e1.}) (5... f5 {I'll be very clear: this is the best +move in my experience, but we will try to mix things up here regardless.} 6. d3 +(6. Nh3 {You can also try this tricky line, and I actually recommend it over +the standard d3 line.} Nc6 7. d3 Nxc3 8. bxc3 {Gambiting e5.} Nxe5 9. Qe2 { +[%cal Gd3d4]} Qe7 (9... Qh4+ 10. g3 Qe7 11. Bg2 Ng6 12. Be3) 10. Bg5) 6... Nxc3 +7. bxc3 {Now if Black doesn't play the critical d5-d4, we will get a very easy +game.} d4 (7... Be7 8. Ne2 {[%csl Rd4]} O-O 9. g3) 8. Qg3 {Remember this move! +You're freeing up f3 for the knight and preventing the Bf8 from moving.} Nc6 9. +Be2 {Another important moment -- we must develop Be2 before moving our knight, +as we threaten Bh5+ here.} Be6 10. Bf3 Qd7 11. Ne2 dxc3 12. Be3 Nb4 13. Rc1 Nd5 +14. Bxd5) 6. bxc3 Be7 (6... Qh4+ 7. g3 Qe4+ 8. Qxe4 dxe4 9. Bg2 (9. d4 exd3 10. +cxd3 Nc6 11. d4) 9... Nc6 10. Bxe4 Nxe5 11. Rb1 c6 12. d4 Nc4 13. Nf3 Bd6 14. +Kf2 O-O 15. Bd3 Nb6 16. c4) (6... c5 7. Qg3 {A good way to put Black's +development on hold as usual.} Nc6 8. Nf3 Bf5 9. Bd3 Bxd3 10. cxd3 g6 11. O-O +Bg7 12. d4 cxd4 13. Nxd4 Nxd4 14. cxd4 O-O 15. Ba3 Re8 16. Qb3) (6... Be6 7. +Nh3) 7. d4 c5 8. Bd3 cxd4 (8... Nc6 9. Ne2 Be6 10. O-O Qd7 11. Qg3 O-O-O 12. +Bb5 a6 13. Bxc6 Qxc6 14. Bg5 Bxg5 15. Qxg5 cxd4 16. cxd4 Kb8 17. c3) 9. cxd4 +Qa5+ 10. Bd2 Bb4 11. Rd1 Bxd2+ 12. Rxd2 Nc6 13. Ne2 Nb4 14. O-O O-O 15. Ng3 Qb6 +{Perelshteyn-Gledura (2018) and now an improvement is} 16. Bf5 {With ideas of +c2-c3, Qg4 and a kingside attack.} * + +[Event "?"] +[Site "?"] +[Date "2019.11.28"] +[Round "?"] +[White "Chapter 2"] +[Black "1. e4 e5 2. Nc3, f4/Bc4 lines"] +[Result "*"] +[ECO "C25"] +[Annotator "Gotham"] +[PlyCount "25"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 e5 2. Nc3 Nc6 {So here's the deal. I would recommend 3. Bc4 here, but +the problem is that after Nf6 d3, Na5 is just a perfectly reasonable move. I'm +going to show you both options, and ultimately allow you to choose.} 3. f4 { +This is a delayed King's Gambit, and unless Black is booked to the teeth, you +can get a very comfortable position very quickly. The ultra-theory goes:} (3. +Bc4 {In a perfect world, we'll play d3, f4, Nf3, and castle. Unfortunately, +Black can just play Nf6 and Na5.} Nf6 (3... Bc5 {Symmetry is a mistake!} 4. Qg4 +Qf6 (4... g6 5. Qf3 Nf6 6. Nge2 d6 7. d3 Bg4 8. Qg3 {[%cal Rc1g5]}) 5. Nd5 +Qxf2+ 6. Kd1 Kf8 7. Nh3 Qd4 8. d3 d6 9. Qf3 Bxh3 10. Rf1 Be6 11. c3) 4. d3 Na5 +{Against this I'll recommend...} (4... Bb4 {A smart player will pin this +knight in order to push d7-d5 instantly given the pin. I'll show you what to +do in case d5 happens or doesn't.} 5. Nge2 d5 (5... O-O 6. O-O d6 (6... h6 7. +a3 Be7 8. f4) 7. Bg5 {Now Nd5 simply comes. Also, f2-f4.}) 6. exd5 Nxd5 7. O-O +Be6 8. a3 Bxc3 9. bxc3 O-O 10. a4 {We have two bishops and an open b-file so +we try to use it. Objectively still equal though.}) (4... Bc5 {While Bc5 is +natural it kind of gives us the perfect set-up.} 5. f4 d6 6. Nf3 Ng4 (6... Bg4 +7. Na4 {Keep this in mind!} O-O 8. Nxc5 dxc5 9. O-O Nd4 10. c3 Nxf3+ 11. gxf3 +Bh3 12. Rf2 exf4 13. Bxf4) (6... O-O 7. Na4 Bg4 8. Nxc5 dxc5 9. O-O Qd6 10. Qd2 +Bxf3 11. gxf3 Rad8 12. Kh1 Nh5 13. fxe5 Nxe5 14. Qg5 Nxc4 15. Qxh5 Ne5 16. f4) +7. Ng5 O-O 8. f5 {A nice trick to close the diagonal and the center.} Nf2 9. +Qh5) 5. Qf3 Nxc4 6. dxc4 Bc5 (6... d6 7. h3 Be6 8. b3 Be7 9. Nge2 O-O 10. O-O) +7. Be3 Bxe3 8. Qxe3 O-O 9. h3 d6 10. b3 Be6 11. Nge2) 3... exf4 {Accepting the +gambit is no joke. This leads to crazy variations and you have to remember +your lines.} (3... d6 {The declining of the gambit just leads to a supremely +easy position for White, with Nf3, Bb5, and a quick castle.} 4. Nf3 Bg4 5. Bb5 +a6 6. Bxc6+ bxc6 7. h3 Bxf3 8. Qxf3) (3... Nf6 4. fxe5 Nxe5 5. d4) (3... Bc5 4. +Nf3 d6 5. Bb5 Nge7 6. Na4 {We can also hunt the bishop!}) 4. Nf3 g5 (4... d6 5. +d4 g5 6. d5 Ne5 7. Bb5+ Bd7 8. Bxd7+ Nxd7 9. h4 g4 10. Nd4 Qf6 11. Ncb5) 5. h4 +{From a logical standpoint this move seems to be the only one. There are +others however.} (5. d4 g4 6. Bc4 {I dare you - prove your point!} gxf3 7. O-O +{This looks incredibly tempting for a second but it kind of sucks - again, if +Black is prepared.} (7. Qxf3 Qh4+ 8. g3 Nxd4 9. Qf2 Qf6 10. Bxf4 Bb4 11. e5 Qc6 +12. O-O-O Bxc3 13. Bxf7+ Kxf7 14. bxc3 Nf3 15. Rhf1 {OK, we're at the end of +the chaos. White wants to push e6+, play Rd3 or Qe3, and take the knight with +the f1-rook. Black's got a wide-open king on f7 despite his material advantage. +Disregard the computer for a second and try to visualize how on earth Black is +going to consolidate.}) 7... fxg2 (7... Nxd4 8. Bxf4 Bc5 9. Kh1 d6 10. b4 Bb6 +11. Nd5 fxg2+ 12. Kxg2 {If this looks suspicious it's because it is. But again, +Black needs to avoid a lot of traps.} Ne6 13. Qf3) 8. Rxf4) (5. g3 {This one +baits g4 but has a twist.} g4 6. Nh4 f3 7. d4 {Now Black isn't breaking in.} d6 +8. Be3 Be7 9. Qd2 Bxh4 10. gxh4 Qxh4+ 11. Bf2 {White's actually doing fine +here.} Qh6 12. Qxh6 Nxh6 13. Nd5 Kd7 14. Kd2) 5... g4 6. Ng5 h6 7. Nxf7 Kxf7 8. +d4 d5 (8... f3 9. Bc4+ Kg7 10. gxf3 Be7 11. Be3 {And... total insanity.}) 9. +Bxf4 {White needs to keep developing and pressuring the center with his +remaining pieces. Letting the computer run at a high depth here is, again, an +option...but our opponents do not have computers or infinite time. It's +incredibly tough to deal with White's incoming assault.} Nf6 10. Nxd5 (10. exd5 +Nxd5 (10... Bd6 11. Bxd6 Qxd6 12. dxc6) 11. Bc4 Be6 12. O-O {And Black's +already dead.}) 10... Nxd5 11. Bc4 Be6 12. exd5 Bxd5 13. O-O * + +[Event "?"] +[Site "?"] +[Date "2019.11.30"] +[Round "?"] +[White "Chapter 3"] +[Black "1. e4 c5 2. a3 Nc6: all lines"] +[Result "*"] +[ECO "B20"] +[Annotator "Gotham"] +[PlyCount "29"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 c5 2. a3 Nc6 3. b4 cxb4 (3... e5 {Not taking the pawn at all is the +least fun, of course, but we'll still get a completely fine dynamic position.} +4. b5 Nd4 5. c3 Ne6 6. Bc4 Nf6 7. d3 Be7 8. Nf3 d6 9. O-O) (3... Nf6 4. b5 Nd4 +5. c3 Ne6 6. e5 Nd5 7. Qb3 Nb6 8. Nf3 d5 9. d4) (3... d6 4. b5 Nd4 5. c3 Ne6 6. +Bc4) 4. axb4 Nxb4 {Challenging the entire authority of our gambit. Now we +actually have some choices which I outline in the video.} (4... e5 {Sometimes +people take the first pawn but not the second.} 5. b5 Nd4 6. c3 Ne6 7. Nf3 d6 ( +7... Nf6 8. Nxe5 Nxe4 9. d4 d6 10. Nf3) 8. Bc4) 5. c3 {I prefer to attack the +knight immediately.} (5. Ra4 {A supremely tricky move which you can reserve +for blitz. It's best for Black to defend by moving the e-pawn.} e5 (5... Nc6 6. +d4 d5 {...d5 is a horrible mistake!} (6... e6 7. d5) (6... d6 7. d5 Ne5 8. f4 +Ng6 9. Nf3 Bd7 10. Qd4) 7. exd5 Qxd5 8. Nc3 Qe6+ 9. Be3 {And white has a +decisive lead in development, with threats like d5, Nb5, Bc4, etc.}) 6. Nf3 Nc6 +7. d4 exd4 8. Nxd4 Bc5 9. Be3) 5... Nc6 (5... Na6 {This is just a stupid move.} +6. d4) 6. d4 {Black has a wide range of options but you are, without question, +going to face d7-d5 the most.} d5 (6... e6 7. Nf3 {Nf3 is simple and strong. +Black now basically must play d5, entering a French where there is no longer a +c7-c5 break, so we have a massive center and can expand.} d5 8. Nbd2 Nf6 9. Bd3 +Be7 10. O-O Qc7 11. Re1 dxe4 12. Nxe4 Nxe4 13. Bxe4 O-O {This was actually a +game between a 2170 and Surya Ganguly (2630 GM) and here rather than Ba3, +White can take a serious initiative with...} 14. g3 {and Bf4 ideas.}) (6... d6 +7. d5 Ne5 8. f4 Ng6 9. Nf3 Nf6 10. e5) (6... e5 7. d5 Na5 8. d6 a6 9. c4 Nf6 +10. Nf3) 7. exd5 Qxd5 8. Na3 {Now Black can play a few things} Nf6 {Natural +but losing.} (8... a6 9. Nc4 {Now we threaten Nb6.} Qd8 10. d5 b5 11. Be3 bxc4 +12. dxc6 Qxd1+ 13. Rxd1 Be6 14. Ne2) (8... e6 9. Nb5 Qd8 10. Bf4) (8... Qa5 { +Considered the best move.} 9. Nf3 {Sneaky!} Bg4 (9... Nf6 10. Bf4 Qd8 11. Bc4) +10. Nc2 Qxc3+ 11. Bd2 Qb3 12. Rb1 Qe6+ 13. Ne3 Bxf3 14. Qxf3) (8... Bf5 9. Nb5 +(9. Nc4 {[%csl Rb6,Re3]} e6 10. Ne3 Qd7 11. Nxf5 exf5 12. Nf3) 9... Rc8 10. +Nxa7 Nxa7 11. Rxa7 e5 12. Nf3 exd4 {and now we will improve on Magnus's play +with} 13. Qxd4 (13. Nxd4 Bd7 14. Nb5 Nf6) 13... Nf6 14. Qxd5 Nxd5 15. Bb5+ Kd8 +16. Rxb7 Nxc3 17. O-O Nxb5 18. Rxb5 Be6 19. Ng5 Be7 20. Nxe6+ fxe6 21. Bb2 Rg8 +22. Rb6 Ke8 23. Rxe6 Kf7) 9. Nb5 Qd8 10. d5 Ne5 11. Bf4 Nfd7 12. Nf3 f6 13. +Nfd4 Nb6 14. Bxe5 Nxd5 15. Bc4 {And White is obviously winning.} * + +[Event "?"] +[Site "?"] +[Date "2019.11.30"] +[Round "?"] +[White "Chapter 4"] +[Black "1. e4 c5 2. a3 e6/e5"] +[Result "*"] +[ECO "B20"] +[Annotator "Gotham"] +[PlyCount "37"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 c5 2. a3 e6 (2... e5 {2. ...e5 is actually too weakening and we no +longer have to gambit at all!} 3. Bc4 Nc6 4. d3 Nf6 5. Nc3 Be7 6. f4) 3. b4 +cxb4 (3... d5 4. e5 {Personally I'm a fan of closing the position, since a +Sicilian player is not experienced in these structures. Play can develop in a +handful of ways...} (4. exd5 exd5 5. Nf3 Nf6 6. d4 cxb4 7. Bb5+ Nc6 8. O-O Be7 +9. axb4 O-O 10. c3) 4... Nc6 (4... Ne7 5. Nf3 Ng6 6. h4 h5 7. d4) 5. Nf3 Qc7 6. +Bb2 cxb4 7. d4) 4. axb4 Bxb4 (4... d5 5. e5 Bxb4 6. c3 Be7 7. d4 {A familiar +structure.}) 5. c3 (5. Bb2 Nf6 6. e5 Nd5 7. c4 Nc7 (7... Ne7 8. Qg4 Ng6 9. Nc3) +(7... Nb6 8. Ra3 Nc6 9. Rg3 g6 10. Nc3) (7... Nf4 8. Nf3 O-O 9. g3 Ng6 10. Bg2 +d6 11. exd6 Qxd6 12. O-O e5 13. Nc3 Nc6 14. Nd5 Bc5 15. d4 Nxd4 16. Nxd4 exd4 +17. Bxd4 Bxd4 18. Qxd4) 8. Ra3 O-O 9. Rg3) 5... Be7 6. d4 {The same Advance +French structure we have seen in the Nc6 chapter.} d6 (6... d5 7. e5 {We've +seen this before.} Nc6 8. Bd3) 7. Bd3 Nf6 8. f4 O-O 9. Nf3 Qc7 10. Qc2 h6 11. +O-O Nbd7 12. e5 Nd5 13. Qe2 Re8 14. Bd2 N5b6 {Zherebukh-Vasquez 2013, and +White could have gotten a crushing attack after} 15. exd6 Bxd6 16. c4 Be7 17. +Na3 Nf6 18. Nb5 Qb8 19. Ne5 * + +[Event "?"] +[Site "?"] +[Date "2019.11.30"] +[Round "?"] +[White "Chapter 5"] +[Black "1. e4 c5 2. a3 + the rest"] +[Result "*"] +[ECO "B20"] +[Annotator "Gotham"] +[PlyCount "17"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 c5 2. a3 {This chapter is all about the non-confrontational/worse +systems. We will look at g6, Nf6, d6/d5, and b6/a5.} g6 {Against this, I +recommend the set-up: Nc3, Bc4, d3, preparing a push of h4.} (2... Nf6 3. e5 +Nd5 4. c4 Nc7 5. b4 d6 6. exd6 Qxd6 7. Nf3 {Relatively unexplored territory.} +Nc6) (2... d6 3. b4 Nf6 4. Nc3 Nc6 5. bxc5 dxc5 6. Bc4 {I like this structure +-- the open b-file and the questionable placement of Black's c8 bishop for the +rest of the game makes the prospects nice.}) (2... b6 {We don't really have to +go b4 now.} 3. d4 cxd4 4. Qxd4 Nc6 {Wasting this tempo is not the end of the +world, since Black has committed to b7 with the bishop, which is a bad square.} +5. Qd3 Nf6 6. Nc3 Bb7 7. Nf3 d6 8. Bg5 {With easy development and Rd1/0-0-0 to +follow.}) (2... d5 3. exd5 Qxd5 {The Scandinavian with a3 + c5 included... +probably roughly equal, and the position is only slightly affected.} 4. Nf3 Nc6 +5. Nc3 Qd8 {There's options here, like Bb5/Bc4/Be2; also b4, and in general +various flexibility.}) (2... a5 {This... is garbage.} 3. Nf3 {All Sicilians +will now be worse for Black no matter what happens -- we can play d4 +immediately or just delay and develop normally. a3/a5 as an inclusion here +drastically weakens b5 for Black.}) 3. Nc3 Bg7 4. Bc4 Nc6 5. d3 e6 (5... d6 6. +f4 Nf6 7. Nf3 O-O 8. O-O {There are kingside attacking possibilities here -- +pushing f5, playing Qe1/Qh4, etc. Always remember that sliding the Bc4 back to +a2 is a good prophylactic move.}) (5... Nf6 6. f4 d6 7. Nf3 O-O 8. O-O) 6. Ba2 +Nge7 7. h4 h5 (7... h6 8. h5 g5 9. f4 gxf4 10. Bxf4 d6 11. Qd2) 8. Bg5 d6 9. +Qd2 * + +[Event "?"] +[Site "?"] +[Date "2019.11.30"] +[Round "?"] +[White "Chapter 6"] +[Black "1. e4 c5 2. b3 Nc6 all lines"] +[Result "*"] +[ECO "B20"] +[Annotator "Gotham"] +[PlyCount "33"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 c5 2. b3 {My alternative repertoire in the Sicilian - a bit more +positional and slightly less crazy.} Nc6 3. Bb2 e5 {Against Nc6/e5, we'll take +a light-square complex.} (3... e6 {Nc6+e6 is flexible. I personally am a fan of +} 4. Bb5 {A sneaky idea with the same intentions as before: trade the bishop, +play d3-f4 etc.} Nd4 (4... Nge7 5. Nf3 a6 6. Bxc6 Nxc6 7. O-O d5 8. exd5 exd5 +9. Re1+ Be6 10. d4 Be7 11. dxc5 O-O 12. Qd3 Bxc5 13. Qc3) 5. Bd3 {I know, it's +weird -- but Black can't take advantage of it.} d5 6. Nc3 Nf6 7. Nf3 dxe4 8. +Nxe4 Be7 9. Nxd4 cxd4 10. Qf3) (3... d6 {We'll go Bb5 and set up a d3/f4 pawn +structure.} 4. Bb5 Nf6 (4... Bd7 5. f4 {Nc3+Qe2+0-0-0.}) (4... e5 5. Ne2 Nf6 6. +d3 Be7 7. Bxc6+ bxc6 8. O-O O-O) 5. Nc3 Bd7 6. f4 a6 7. Bxc6 Bxc6 8. Qe2 e6 9. +Nf3 Be7 10. O-O-O O-O 11. d4 cxd4 12. Nxd4 Qc7 13. g4 Rfe8 14. g5 Nd7 15. h4 b5 +16. g6 hxg6 17. h5 {Carlsen-Ehlvest 2018}) (3... Nf6 4. e5 (4. Nc3) 4... Nd5 5. +Nf3 d6 (5... e6 6. g3) 6. Bb5 Bd7 7. exd6 exd6 8. O-O Be7 9. d4 cxd4 10. Nxd4 +O-O 11. c4 Nc7 12. Bxc6 bxc6 13. Nc3) 4. Bc4 d6 5. f4 (5. Ne2 Nf6 6. Nbc3 a6 7. +a4 Be7 8. O-O O-O 9. f4) 5... Nf6 (5... exf4 6. Qf3 Nf6 7. Qxf4 Be7 8. Nf3 O-O +9. Nc3 Be6 10. O-O-O) 6. Nf3 Bg4 (6... Be7 7. fxe5) (6... Nxe4 7. O-O d5 8. Bb5 +exf4 9. Qe2 Be6 10. c4 Be7 11. Bxg7 Rg8 12. Bb2) 7. fxe5 dxe5 8. h3 Bh5 9. g4 +Bg6 10. d3 Bd6 11. Nc3 a6 12. a4 Rb8 13. O-O O-O 14. Qd2 Ne8 15. h4 h5 16. gxh5 +Bxh5 17. Ng5 * + +[Event "?"] +[Site "?"] +[Date "2019.11.30"] +[Round "?"] +[White "Chapter 7"] +[Black "1. e4 c5 2. b3 e/d pawns "] +[Result "*"] +[ECO "B20"] +[Annotator "Gotham"] +[PlyCount "35"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 c5 2. b3 d6 {Often times 2. ...d6 transposes back to other structures +because Black doesn't really have any other options.} (2... d5 {I've gotten +this before, but it's just a weird Scandinavian.} 3. exd5 Qxd5 4. Nc3 Qe5+ ( +4... Qd8 5. Bb2 Nf6 6. Nf3 e6 7. Qe2 Nc6) 5. Be2 Bg4 6. f4 Qe6 7. Bb2 Nc6 8. d3 +O-O-O 9. Ne4 Bxe2 10. Qxe2) (2... e5 {This again will transpose back to many +of the Nc6/e5 positions in the earlier chapter.} 3. Bb2 d6) (2... e6 3. Bb2 d5 +4. exd5 exd5 5. Nf3 Nf6 6. Bb5+ Bd7 7. Bxd7+ Nbxd7 8. O-O Be7 9. d4 O-O 10. Re1 +Re8 11. Nc3) 3. Bb2 Nf6 (3... e5 {Transposes}) 4. Bb5+ {We're going for a +positional game with attacking possibilities. The key is trading off the +bishop before we play d2-d3.} Bd7 (4... Nbd7 5. d3 a6 6. Bxd7+ Bxd7 7. f4 g6 8. +Nf3 Bg7 9. O-O O-O 10. Qe2) (4... Nc6 5. Bxc6+ bxc6 6. d3 e5 7. Ne2 g6 8. O-O +Bg7 9. Nd2 O-O 10. Qe1 Be6 11. f4 exf4) 5. Bxd7+ Qxd7 (5... Nbxd7 6. d3 e5 7. +Ne2 {[%cal Gf2f4]}) 6. d3 (6. Bxf6 gxf6 7. Qh5 Nc6 8. Nc3 e6 9. Nge2 O-O-O 10. +O-O-O Rg8 11. g3 d5) 6... Nc6 7. f4 e6 (7... d5 8. Nd2 O-O-O 9. Qe2 dxe4 10. +dxe4 Nd4 11. Bxd4 Qxd4 12. Rd1 Qc3 13. Ngf3 Ng4 14. Ng5 Ne3 15. Nxf7 Nxd1 16. +Nxd8) (7... g6 8. Nf3 Bg7 9. O-O O-O 10. c4 a6 11. Nc3 Rab8 12. Qd2 b5 13. Rae1 +Ng4 14. h3 Nh6 15. Nd5 f6 16. g4 Nf7 17. f5 {Gelashvili-Pambalos 2006}) 8. Nf3 +Be7 9. O-O d5 10. Ne5 Qc7 11. Nxc6 Qxc6 12. e5 Nd7 13. c4 dxc4 14. dxc4 O-O-O +15. Qe2 f5 16. exf6 gxf6 17. Nc3 Rhg8 18. Rae1 {Gelashvili-Amanov, 2006} * + +[Event "?"] +[Site "?"] +[Date "2019.11.30"] +[Round "?"] +[White "Chapter 8"] +[Black "1. e4 c5 2. b3 Nf6/g6"] +[Result "*"] +[ECO "B20"] +[Annotator "Gotham"] +[PlyCount "21"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 c5 2. b3 g6 {This might not look normal considering we are first to the +diagonal, but it actually scores the best for Black -- so let's not +understimate it.} (2... Nf6 {An expedited move-order.} 3. e5 Nd5 4. Nf3 g6 ( +4... Nc6 {Transposes to last chapter.}) 5. Nc3 Nxc3 6. dxc3 Bg7 7. Bc4 Nc6) 3. +Bb2 Nf6 4. Qf3 d6 5. Bb5+ Nbd7 (5... Bd7 6. Bxf6 exf6 7. Bxd7+ Nxd7 8. Nc3 Bg7 +9. h4) (5... Nc6 6. e5 dxe5 7. Bxc6+ bxc6 8. Bxe5 Bd7 9. Nc3 Bg7 10. Nge2) 6. +Bxf6 (6. g4) 6... exf6 7. Qg3 (7. Nc3 Bg7 8. h4 O-O 9. h5 Ne5 10. Qg3 Be6 11. +f4) 7... a6 8. Bxd7+ Bxd7 9. Nc3 Be7 10. Nf3 O-O 11. O-O {This position +requires practical tests. Black has a fight of bishops vs. knights, but is +held back by a passive position, closed by the pawns. White operates with the +d4/d5/d6 squares as a focus, with outposts and potential pawn break (d2-d4) in +the future.} * + +[Event "?"] +[Site "?"] +[Date "2019.11.30"] +[Round "?"] +[White "Chapter 8"] +[Black "1. e4 e6 2. b3 d5 with dxe4"] +[Result "*"] +[ECO "C00"] +[Annotator "Gotham"] +[PlyCount "37"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 e6 {French players are well-prepared in a lot of the main lines -- when +we play b3 and gambit the center, we hope for: (1) They think we're terrible +and take the pawn/hope for the best or (2) They get too scared of our gambit +and play too passively.} 2. b3 d5 3. Bb2 dxe4 {Our plan is Nc3/Qe2/0-0-0/g4/ +Bg2, in various orders. Black's main source of counterplay is Nc6/d4, and +a7-a5. If neither of these things happen, we'll have a very easy life.} 4. Nc3 +Nf6 (4... f5 {...f5 is not that bad, but it looks extremely risky to open the +king like that.} 5. d3 exd3 (5... Nf6 6. Nh3 exd3 7. Bxd3 Bd6 8. Qe2 O-O 9. +O-O-O Nc6 10. Nb5) 6. Bxd3 Nf6 7. Qe2 Be7 8. O-O-O Bd7 9. Bc4) 5. Qe2 (5. Nge2 +Be7 6. Ng3 O-O 7. Ncxe4 Nxe4 8. Nxe4 Nc6 9. Bc4) (5. g4 Nc6 6. g5 Nd5 7. Nxe4 +h6 8. g6 f5 9. Ng3 Qd6 10. Nf3 Bd7 11. d4 O-O-O 12. c4 Qb4+ 13. Qd2 Qxd2+ 14. +Kxd2 Nde7 15. Rg1 Nxg6 16. Nxf5 exf5 17. Rxg6) 5... Be7 (5... Nc6 {Early Nc6 +fights for d4, so we should castle quickly.} 6. O-O-O Nd4 7. Qe1 a5 8. a4 Bd7 +9. Nxe4 Bc6 10. f3 Be7 11. Ne2 Nf5 12. N2g3) (5... Nbd7 6. g4 h6 7. Bg2 Be7 8. +h4) (5... Bd7 6. O-O-O Bc6 7. g4 h6 8. Bg2 Be7 9. h4) 6. O-O-O O-O (6... a5 7. +a4) 7. g4 (7. Nxe4 Nxe4 8. Qxe4 Qd5 9. Qe3 a5 10. Qg3 f6 11. Bc4 Qd6 12. Nf3) +7... c5 (7... Nc6 8. Nxe4 Nd4 9. Qe3 e5 10. Nxf6+ Bxf6 11. f3) 8. g5 Nd5 9. h4 +Nc6 10. Qxe4 f5 11. gxf6 Nxf6 12. Qg2 a6 13. Nf3 Qc7 14. Rg1 Ne8 15. Nd5 exd5 +16. Qxg7+ Nxg7 17. Rxg7+ Kh8 18. Rxe7+ d4 19. Rxc7 {Gelashvili-Deniz} * + +[Event "?"] +[Site "?"] +[Date "2019.11.30"] +[Round "?"] +[White "Chapter 9"] +[Black "1. e4 e6 2. b3 d5, no dxe4"] +[Result "*"] +[ECO "C00"] +[Annotator "Gotham"] +[PlyCount "31"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 e6 2. b3 d5 3. Bb2 Nf6 {Essentially the only way to not take the gambit.} +(3... c5 {This transposes to the Sicilian.}) (3... d4 {Not a good move. Attack +the pawn!} 4. Nf3 c5 5. c3 Nc6 6. Bb5 Bd7 7. O-O Nf6 8. Qe2 Be7 9. cxd4 Nxd4 +10. Nxd4 cxd4 11. Bd3 {[%csl Rd4]} Bc5 12. Na3) 4. e5 Nfd7 5. Qg4 {We put the +Queen on g4 to play g6-Bg7 and isolate the bishop without much movement. Then +we will get the Queen out of the way and advance the g/h pawns.} (5. f4 { +You can also play this without Qg4.} c5 6. Nf3 Nc6 7. Bb5 Qb6 8. c4 a6 9. Bxc6 +Qxc6 10. cxd5 Qxd5 11. O-O b5 12. Nc3 Qc6 13. d3 {This is fine but I don't +like the light-squared diagonal for Black.}) 5... c5 6. f4 Nc6 7. Nf3 g6 8. Be2 +(8. Na3 a6 9. c3 Bg7 10. Nc2 b5 11. d4 c4 (11... Bb7 12. Be2) 12. Be2 Nb6 13. +Ba3 {Gelashvili-Papamichael, 2009}) 8... Bg7 9. Nc3 a6 10. a4 b6 11. Nd1 Bb7 +12. O-O O-O 13. Ne3 Rc8 14. Qg3 Qc7 15. h4 h5 16. Qf2 {Of course, quite +hypothetical, but from the position can go forward with White advancing on the +kingside.} * + +[Event "?"] +[Site "?"] +[Date "2019.11.30"] +[Round "?"] +[White "Chapter 10"] +[Black "1. e4 e6 -- 2 Knights System"] +[Result "*"] +[ECO "C11"] +[Annotator "Gotham"] +[PlyCount "29"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 e6 2. Nf3 {I also would like to recommend 2. Nf3, but you must remember +that d7-d5 is not guaranteed. For instance, Black can play c7-c5, and now your +way of getting back to our repertoire would be b3, but you take away f2-f4.} d5 +3. Nc3 {Most folks here play Nf6, but there are more choices.} Nf6 (3... dxe4) +(3... d4 4. Ne2 c5 5. c3 (5. Ng3 Nc6 6. Bc4 Nf6 7. d3 Bd6 8. Qe2 e5 9. Bg5) +5... Nc6 (5... Nf6 6. e5 Nfd7 7. cxd4 cxd4 8. Nexd4 Nxe5 9. Bb5+ Nec6 10. O-O +Be7 11. Nc2 O-O 12. d4 a6 13. Bd3 Nd7 14. Qe2 Nf6 15. Bf4) 6. cxd4 cxd4 7. Qa4 +Bc5 (7... Bd7 8. Nexd4 a6 9. Qb3 Nxd4 10. Nxd4 Bc5 11. Nf3 Nf6 12. d3) 8. b4 +Bxb4 (8... Bb6 9. b5) 9. Nexd4 Nge7 (9... Qa5 10. Qxa5 Bxa5 11. Nxc6 bxc6 12. +Ba3 Ne7 13. Ne5 Bc7 14. Nc4)) (3... c5 4. exd5 exd5 5. Bb5+ Nc6 6. O-O Nf6 7. +d4 Be7 8. dxc5 O-O 9. Bg5 Bg4 10. h3 Bh5 11. Bxf6 Bxf6 12. Qxd5 Qxd5 13. Nxd5 +Bxb2 14. Rab1 Ba3 15. g4 Bg6 16. Bxc6 bxc6 17. Ne7+ Kh8 18. Nxg6+ fxg6 19. Ne5) +4. e5 Nfd7 (4... Ne4 5. Ne2 {Retreating and trapping the Ne4.} Bc5 6. d4 Be7 7. +Ng3 c5 8. Bd3) 5. d4 (5. Ne2 c5 6. c3 Nc6 7. d4 Qb6 (7... Be7 8. a3 Qb6 9. b4) +(7... cxd4 8. cxd4 Bb4+ 9. Nc3) 8. a3 Be7 9. g3) 5... c5 6. dxc5 Bxc5 (6... Nc6 +7. Bf4 Nxc5 8. h4 a6 9. a3 b5 10. h5 h6 11. Rh3 Bb7 12. b4 Ne4 13. Nxe4 dxe4 +14. Nd2 Qd4 15. c3 Qd5 16. c4 bxc4 17. Nxc4 Rd8 18. Nb6 Qxd1+ 19. Rxd1 Be7 20. +Rg3) 7. Bd3 Nc6 8. Bf4 h6 (8... a6 9. Qe2) (8... O-O 9. Bxh7+) 9. h4 a6 10. Qe2 +b5 11. h5 Nb6 12. Rh3 Bd7 13. Rg3 Bf8 14. Kf1 Qc7 15. Kg1 * + +[Event "?"] +[Site "?"] +[Date "2019.11.30"] +[Round "?"] +[White "Chapter 12"] +[Black "1. e4 c6 Advance w/ Bf5"] +[Result "*"] +[ECO "B12"] +[Annotator "Gotham"] +[PlyCount "31"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 c6 2. d4 d5 3. e5 Bf5 {The main line. I am going to recommend h2-h4, +which in my opinion is the most critical and challenging option of Black's +setup. There is also the Short System of Nf3/Be2, but there is a ton of +flexibility for both sides and the move-orders are quite murky.} 4. h4 { +The 'anti-e6' move. Your idea is to go g4-h5. Black can play h5, h6, and a few +other random moves.} h5 (4... h6 5. g4 Bd7 {This is the main move, but not +everybody might know that. Black accepts a passive position and tries to fight +the massive pawn expansion.} (5... Be4 {Sometimes Black plays this to induce +f3 before going back to h7.} 6. f3 Bh7 7. e6 {A smart positional sacrifice.} +Qd6 (7... fxe6 8. Bd3 Bxd3 9. Qxd3) 8. exf7+ Kxf7 9. f4 Nf6 10. Nf3 Nxg4 11. h5 +Ke8 12. Ne5 Nxe5 13. fxe5 Qe6 14. Nc3 Na6 {Grasso-Khamrakulov, 2019} 15. Bh3) ( +5... Bh7 6. e6 Qd6 7. exf7+ Kxf7 8. g5 Bf5 9. Bh3 Bxh3 10. Qf3+ Ke8 11. Nxh3) +6. Nc3 {A flexible and smart move. Again, Black has options.} e6 (6... Qc8 7. +Be2 e6 8. Be3 c5 9. Nf3 cxd4 10. Nxd4 Nc6 11. f4) 7. Be3 Qb6 8. Na4 Qa5+ 9. c3 +b5 10. Nc5 Bxc5 11. dxc5) (4... Qb6 5. Nc3 h5 6. Nge2 e6 7. Ng3 Bg6 8. Be2) 5. +Bd3 (5. Bg5 {Very tricky alternative. I cannot quite recommend it due to +Black's ability to get out unharmed, but still worth a shot.} Qb6 6. Bd3 Qxd4 ( +6... Bxd3 7. Qxd3 Qxb2 8. e6 Qxa1 9. Qb3 Qxd4 10. Qxb7 fxe6 11. Qxa8 Qb6 12. +Nd2 Nf6 13. Ngf3 Qc7 14. Be3) 7. Nf3 Qg4) 5... Bxd3 6. Qxd3 e6 (6... Qa5+ 7. +Nd2 {[%cal Re5e6]} e6 8. Ne2 Qa6 9. c4 c5 10. dxc5 Nc6 11. Qc3 dxc4 12. b4 cxb3 +13. axb3 Qb5 14. Ba3 Nge7 15. Nc4 Nd5 16. Qg3 g6 {Nakamura - Svane 2019} 17. +O-O) 7. Bg5 Qb6 (7... Be7 8. Nf3 Nh6 9. c4 dxc4 10. Qxc4 Nd7 11. Nc3 Nf5 12. +Rd1 Nb6 13. Qb3 Qc7 14. O-O Rd8 15. Bxe7 Qxe7 16. g3 O-O 17. Ne4 Rd5 18. Rd3 +Rfd8 19. Rfd1) 8. Nd2 c5 (8... Nd7 9. Ngf3 Ne7 10. O-O Nf5 11. c4) 9. c4 Qxb2 +10. Rd1 Qxd4 11. Qb3 Qxe5+ 12. Ne2 Qc7 13. cxd5 exd5 14. O-O {And White's +attacking possibilities are tremendous.} d4 15. Rfe1 Be7 16. Nc4 * + +[Event "?"] +[Site "?"] +[Date "2019.11.30"] +[Round "?"] +[White "Chapter 13"] +[Black "1. e4 g6, with Nf3"] +[Result "*"] +[ECO "B04"] +[Annotator "Gotham"] +[PlyCount "26"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 g6 2. d4 Bg7 3. Nf3 {The Modern. Black can now play d7-d6, c7-c6, or +c7-c5 (The Sniper). There are some small other various alternatives (a6, b6, +etc).} d6 (3... c6 4. Nc3 d5 5. h3 {Best way to play this position, +restricting the c8-bishop.} Nf6 6. e5 Ne4 7. Nxe4 dxe4 8. Ng5 c5 9. dxc5 Qxd1+ +10. Kxd1 Bxe5 11. Nxe4 Bf5 12. Bd3 Nd7 13. Re1) (3... c5 {The "Sniper", trying +to activate the g7 bishop. Actually this isn't particularly good at all.} 4. +dxc5 Qa5+ 5. c3 Qxc5 6. Na3 {A creative move, aiming for Nb5 and Be3.} Nf6 7. +e5 Ng4 8. Qd4 Qxd4 9. cxd4 {On the surface this position doesn't look that +dangerous for Black. White wants to play Nb5, of course, and h3 to force the +Knight back. From there, we will target Black's weaknesses.}) 4. Bc4 {This +idea is creative - basically we want 0-0, Qe2, Rd1, and a moment to go e4-e5.} +Nf6 5. Qe2 O-O 6. e5 dxe5 7. dxe5 Nd5 8. h3 c6 9. O-O Be6 (9... Nd7 10. Re1 +N7b6 11. Bb3 Bf5 12. Nd4) (9... Qc7 10. Re1 Bf5 11. Nc3 Nxc3 12. bxc3) (9... +Bf5 10. Rd1 Qc7 11. Nc3 Nxc3 12. bxc3 Nd7 13. e6 Nb6) 10. Bd2 Nd7 11. Nc3 N7b6 +12. Bb3 a5 13. a4 Qc7 {A relatively balanced position. White will continue +with Rfe1/Rad1 and proceed to maneuver with the knights to e4/d4 to pressure +Black's position. Also, a5 will be liable.} * + +[Event "?"] +[Site "?"] +[Date "2019.12.05"] +[Round "?"] +[White "Chapter 11"] +[Black "1. e4 c6 Advance w/ c5"] +[Result "*"] +[ECO "B12"] +[Annotator "Gotham"] +[PlyCount "33"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 c6 {This was a bittersweet chapter for me since I love the Caro so much. +However, I'm going to provide two distinct weapons to challenge it.} 2. d4 d5 ( +2... g6 3. c4 Bg7 4. Nc3 d5 5. e5) 3. e5 {The Advance caro. In this chapter +we'll cover c6-c5, wasting a tempo but hoping for c2-c3 and to achieve a +French structure with the LSB out on f5/g4. Alternatives to c5/Bf5 will also +be covered. Bf5 is covered in the next chapter.} c5 (3... g6 {Entering this +c6-g6 setup after d5 is fine. I prefer to play:} 4. c4 Bg7 5. Nc3 Nh6 6. h3 O-O +7. Nf3 f6 8. Bf4 fxe5 9. Bxe5 Bxe5 10. dxe5 Be6 11. Qd2 Nf7 12. Nd4 Qd7 13. f4) +4. dxc5 {Now Black chooses between Nc6 and e6.} Nc6 {There is a LOT of theory +here. White can play Bb5, Nf3, a3, Bf4... but I choose a very unexplored +option with simple development and spatial advantage.} (4... e6 5. a3 {A +strange-looking move, but basically we want to play b4!} Bxc5 (5... Nc6 { +Some people throw in Nc6 before they take on e5.} 6. Nf3 Bxc5 7. b4) 6. Nf3 { +Delaying b4 for now, and our development plan is: 0-0, b4, Bb2, only then +deciding what to do with the b1-knight, and likely pushing c4. A sample game... +} Ne7 (6... Nc6 7. b4 Bb6 8. Bb2 Nge7 9. Bd3 O-O 10. b5 Na5 11. Bxh7+ Kxh7 12. +Ng5+ Kh6 13. Bc1) 7. Bd3 Ng6 (7... O-O 8. b4 Bb6 9. Bxh7+) 8. O-O Nc6 (8... O-O +9. Ng5 Be7 10. Qh5 Bxg5 11. Bxg5 Qb6 12. Nd2 Qxb2 13. Nf3 Nc6 14. Bd2) 9. b4 +Bb6 10. Bb2 Nf4 11. c4 Nxd3 12. Qxd3 dxc4 13. Qxc4 Ne7 14. Nc3 Bd7 15. Qg4 Bc6 +16. Rad1 Qc7 17. Ng5 {Karjakin-Topalov, 2017}) 5. f4 {The best move after f4 +is actually the slightly counterintuitive e7-e6. If Black doesn't play e6 or +Nh6, he can get in trouble quickly.} e6 (5... Nh6 6. c3 e6 7. Be3 Nf5 (7... b6) +8. Bf2 g5 9. Bd3 gxf4 10. Bxf5 exf5 11. Nh3) (5... Bf5 6. Nf3 e6 7. Be3 Qa5+ 8. +c3) 6. Be3 d4 (6... Nh6 7. c3) 7. Bf2 Bxc5 8. Nd2 Nge7 9. a3 (9. Bd3 Nd5 10. +Ne2 Ne3 11. Bxe3 dxe3 12. Ne4 Be7 13. c3) 9... Nd5 10. Ne4 Qa5+ 11. b4 Ncxb4 +12. axb4 Qxb4+ 13. Qd2 Qb2 14. Qc1 Qb4+ 15. Kd1 Nc3+ 16. Nxc3 dxc3 17. Rb1 { +Dominguez Perez - Navara, STL Blitz 2017} * + +[Event "?"] +[Site "?"] +[Date "2019.12.05"] +[Round "?"] +[White "Chapter 14"] +[Black "1. e4 d6, Pirc/Philidor "] +[Result "*"] +[ECO "B07"] +[Annotator "Gotham"] +[PlyCount "43"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 d6 2. d4 Nf6 {This move-order allows the Pirc (g6), the Pribyl/Pirc (c6/ +g6), and the Phillidor (early e5, with Nbd7). I'll give you antidotes to them +all.} 3. Nc3 g6 (3... c6 4. h3 Qa5 {Now we can't get g4.} 5. Bd3 e5 6. Nf3 Nbd7 +7. O-O Be7 8. Be3 O-O 9. a4 exd4 10. Nxd4 Nc5 11. f4 Nxd3 12. cxd3) (3... e5 { +Against the Phillidor, I also recommend Nge2, h3, g4.} 4. Nge2 Be7 (4... Nbd7 +5. h3 c6 6. g4 Be7 7. Bg2 O-O 8. O-O b5 9. a3 Bb7 10. Ng3 exd4 11. Qxd4 c5 12. +Qe3) 5. h3 O-O 6. g4 exd4 7. Qxd4 {Allowing Nc6 isn't an issue. We had to stop +d5.} Nc6 8. Qd2 Be6 9. Bg2 {[%cal Gf2f5,Ge1g1] with f4 and castling to come.}) +4. h3 {h3 is quite cryptic, but the idea is quite a nice one.} Bg7 5. g4 O-O 6. +Bg2 e5 (6... c5 7. dxc5 Qa5 8. cxd6 Nxe4 9. Bxe4 Bxc3+ 10. bxc3 Qxc3+ 11. Bd2 +Qe5 12. f3 f5 13. gxf5 gxf5 14. Ne2 fxe4 15. Rg1+ Kf7 16. Bf4) 7. Nge2 Nc6 8. +Be3 exd4 9. Nxd4 Re8 10. O-O Bd7 11. Nde2 {I like this retreating idea. Black +doesn't have much control over the center, and we will go f2-f4, Ng3, and +advance on the kingside.} a6 12. f4 b5 13. Ng3 b4 14. Nce2 {We've escaped the +queenside initiative and now will launch a strike on the enemy king. If Black +does nothing, our pawns fly forward, so the critical reply would be to +sacrifice on g4 or lash out with h5.} Bxg4 (14... h5 15. gxh5 gxh5 (15... Nxh5 +16. Nxh5 gxh5 17. Ng3 Qh4 18. Rf3 {With Bf2 coming, kicking the queen out.}) +16. Nd4 Nxd4 17. Bxd4 c5 18. e5) 15. hxg4 Nxg4 16. Qd3 Qh4 17. Rf3 {And +there's no mate.} Nh2 18. Rf2 Ng4 19. e5 {Crashing through the center, not +repeating!} Ncxe5 20. fxe5 Rxe5 21. Bd4 Nxf2 22. Bxf2 {Of course, we have ran +down the engine line very deeply (with some possible deviations on both sides), +but this will likely not ever happen in an actual game. The point is, White's +massive structure on the kingside is very promising in the early stages of the +game, and can lead very quickly to some very strong attacks.} * + +[Event "?"] +[Site "?"] +[Date "2019.12.05"] +[Round "?"] +[White "Chapter 15"] +[Black "1. e4 d5 - Scandinavian"] +[Result "*"] +[ECO "B01"] +[Annotator "Gotham"] +[PlyCount "19"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 d5 2. exd5 Qxd5 {The Scandinavian! Preparing against this opening is not +trivial. I'm going to recommend the flexible Nf3 system, where we hope to +develop with Be2, 0-0, d4/c4, and so on.} (2... Nf6 3. Nf3 Nxd5 4. d4 Bg4 5. +Be2 e6 6. O-O) 3. Nf3 {The Scandi has various set-ups for Black and general +ideas to follow. A lot depends which way castling occurs and how the LSB +develops, but overall White's ideas are the same.} Bg4 (3... Nf6 4. d4 Bg4 5. +Be2 Nc6 (5... e6 6. O-O Be7 7. h3 Bh5 8. c4 Qd8 9. Qb3) 6. O-O O-O-O 7. Be3 e5 +(7... Qf5) (7... e6 8. c4 Qh5 (8... Qd7 9. Qb3) 9. Nbd2 Bd6 10. h3 Bxh3 11. Ne5 +{Not taking on h3!} Qh4 12. g3 {Still not taking!}) 8. c4 Qa5 9. d5) 4. Be2 Nc6 +{In this set-up, it's clear that Black is about to castle queenside, so there +is no point in us going d4 to give them a target. Let's just castle and go +from there.} 5. O-O O-O-O 6. h3 Bh5 7. Nc3 Qa5 (7... Qd7 8. b4 {A stunning +idea.} Nxb4 (8... e6 9. b5 Bxf3 10. Bxf3 Nd4 11. Rb1 Nf6 12. d3 Kb8 13. a4 Rg8 +14. Be3 Be7 15. a5 {Ponomariov-Fressinet, 2016}) 9. Ne5 Bxe2 10. Qxe2 Qe6) 8. +a3 Nf6 9. d3 e5 10. Be3 {With ideas of b2-b4.} * + +[Event "?"] +[Site "?"] +[Date "2019.12.05"] +[Round "?"] +[White "Chapter 16"] +[Black "1. e4 b6/Nf6/Nc6 "] +[Result "*"] +[ECO "C10"] +[Annotator "levyo"] +[PlyCount "21"] +[EventDate "2010.10.20"] +[SourceDate "2019.11.28"] + +1. e4 {This chapter is for all the rest - the knight moves and b6/a6/etc. +Since there isn't a massive amount of theory anywhere in these lines, basic +opening principles apply (taking the center, development, and so on...) and +you can try to implement various ideas from other parts of the course.} Nc6 { +With this move, Black hopes that you will play d4, get met with d7-d5, and an +immediate fight will ensue. I recommend we proceed with} (1... Nf6 {Alekhine +is a tricky one. On the one hand, we can play Nc3 and hope for a transposition, +but then Black can simply play d5 and get a position they are used to. On the +other hand, entering the wild territory of the Alekhine can be dangerous if +unprepared. I will show you a few options.} 2. e5 (2. Nc3 d5 3. exd5 Nxd5 4. +Bc4 Nb6 5. Bb3 Nc6 6. Qf3 e6 7. Nge2 Be7 8. d3 O-O 9. O-O) 2... Nd5 3. c4 Nb6 +4. a4 (4. c5 Nd5 5. Nc3 Nxc3 (5... e6 6. d4 d6 7. cxd6 cxd6 8. Nf3 Nxc3 9. bxc3 +Qc7 10. Bd2 Nc6 11. exd6 Bxd6 12. Bd3) 6. dxc3 e6) 4... a5 (4... d5 5. c5 N6d7 +6. d4 b6 7. b4 a5 8. e6 fxe6) (4... d6 5. exd6 cxd6 6. a5 N6d7 7. d4) 5. Ra3 { +Inspired by Jeroen Bosch's article in SOS/New in Chess, I'm sharing this idea +with you.} e6 6. Rg3 {This will both insult your opponent and give you strong +attacking chances.}) (1... b6 {Owen's defense. Simplest set-up is} 2. d4 Bb7 3. +Bd3 e6 4. Nf3 c5 (4... Nf6 5. e5 Ne4 6. O-O) (4... d5 5. exd5 Qxd5 6. c4 Qd8 7. +Nc3) 5. c3 Nf6 6. Qe2 d5 7. e5 Nfd7 8. Ng5 Be7 9. f4 Nc6 10. Be3 h6 11. Nxe6 +fxe6 12. Qh5+ Kf8 13. O-O) 2. Nc3 e6 (2... d6 3. d4 {And we can set-up with +Nge2, h3, g4.}) 3. Nf3 d5 4. d4 Nf6 5. Bd3 Bb4 6. O-O Bxc3 7. exd5 Nxd5 (7... +Bxd4 8. dxc6 Bb6 9. Ne5 bxc6 10. a4 a5 11. Qf3 Qd5 12. Qg3) 8. bxc3 Nxc3 9. Qd2 +Nd5 10. c4 Nde7 11. Bb2 * + diff --git a/BChessTests/PGNTests.cpp b/BChessTests/PGNTests.cpp index d29a038..912c398 100644 --- a/BChessTests/PGNTests.cpp +++ b/BChessTests/PGNTests.cpp @@ -23,7 +23,7 @@ static void assertPGNGame(const char *pgnGame, std::string expectedFEN) { // Assert the FEN for the end position std::string actualFEN = FFEN::getFEN(game.board); - EXPECT_STREQ(actualFEN.c_str(), expectedFEN.c_str()); + EXPECT_STREQ(expectedFEN.c_str(), actualFEN.c_str()); } static void assertOutputPGN(const char *pgnGame, std::string expectedFEN, std::string outputPGN) { @@ -44,14 +44,14 @@ static void assertOutputPGN(const char *pgnGame, std::string expectedFEN, std::s } static void assertMovetextSingle(std::string pgn, std::string expectedMove) { - unsigned cursor = 0; - ChessGame game; - bool end = false; Move move; - FPGN::parseMove(pgn, cursor, game, move, end); + + auto fpgn = FPGN(pgn); + if (expectedMove.size() == 0) { - EXPECT_FALSE(MOVE_ISVALID(move)); + EXPECT_FALSE(fpgn.parseMove(move)); } else { + EXPECT_TRUE(fpgn.parseMove(move)); auto moveDescription = FPGN::to_string(move); EXPECT_STREQ(expectedMove.c_str(), moveDescription.c_str()); } @@ -65,31 +65,19 @@ class PGN : public testing::Test { }; TEST_F(PGN, SingleMove) { - ChessGame game; - unsigned cursor = 0; - bool end = false; - bool result = FPGN::parseMoveText("1. e4 e5", cursor, game, end); - EXPECT_TRUE(result); - EXPECT_TRUE(end); + auto fpgn = FPGN("1. e4 e5"); + EXPECT_TRUE(fpgn.parseMoveText()); } TEST_F(PGN, SingleMoveWithComments) { - ChessGame game; - unsigned cursor = 0; - bool end = false; - bool result = FPGN::parseMoveText("1. e4 {hello} e5 {world}", cursor, game, end); - EXPECT_TRUE(result); - EXPECT_TRUE(end); + auto fpgn = FPGN("1. e4 {hello} e5 {world}"); + EXPECT_TRUE(fpgn.parseMoveText()); } TEST_F(PGN, SingleMoveForBlack) { - ChessGame game; - EXPECT_TRUE(FFEN::setFEN("rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq - 0 1", game.board)); - unsigned cursor = 0; - bool end = false; - bool result = FPGN::parseMoveText("1...e5", cursor, game, end); - EXPECT_TRUE(result); - EXPECT_TRUE(end); + auto fpgn = FPGN("[FEN \"rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq - 0 1\"] 1... e5]"); + EXPECT_TRUE(fpgn.parseTag()); + EXPECT_TRUE(fpgn.parseMoveText()); } TEST_F(PGN, Moves) { @@ -103,6 +91,50 @@ TEST_F(PGN, Moves) { assertMovetextSingle("f3", "f2f3"); } +TEST_F(PGN, ParseMoveNumber) { + unsigned moveNumber = 0; + bool isMoveForBlack = false; + + ASSERT_TRUE(FPGN("1.").parseMoveNumber(moveNumber, isMoveForBlack)); + ASSERT_EQ(1, moveNumber); + ASSERT_FALSE(isMoveForBlack); + + ASSERT_TRUE(FPGN("1. ").parseMoveNumber(moveNumber, isMoveForBlack)); + ASSERT_EQ(1, moveNumber); + ASSERT_FALSE(isMoveForBlack); + + ASSERT_TRUE(FPGN("1. e4").parseMoveNumber(moveNumber, isMoveForBlack)); + ASSERT_EQ(1, moveNumber); + ASSERT_FALSE(isMoveForBlack); + + ASSERT_TRUE(FPGN("24...").parseMoveNumber(moveNumber, isMoveForBlack)); + ASSERT_EQ(24, moveNumber); + ASSERT_TRUE(isMoveForBlack); + + ASSERT_FALSE(FPGN("").parseMoveNumber(moveNumber, isMoveForBlack)); + ASSERT_FALSE(FPGN(".1").parseMoveNumber(moveNumber, isMoveForBlack)); + ASSERT_FALSE(FPGN("1a.").parseMoveNumber(moveNumber, isMoveForBlack)); + ASSERT_FALSE(FPGN("112..").parseMoveNumber(moveNumber, isMoveForBlack)); +} + +TEST_F(PGN, ParseMove) { + Move move; + + ASSERT_TRUE(FPGN("e4").parseMove(move)); + ASSERT_EQ(squareForName("e2"), MOVE_FROM(move)); + ASSERT_EQ(squareForName("e4"), MOVE_TO(move)); + ASSERT_EQ(PAWN, MOVE_PIECE(move)); + + auto fpgn = FPGN("e4 e5"); + ASSERT_TRUE(fpgn.parseMove(move)); + fpgn.getGame().move(move, false); + ASSERT_TRUE(fpgn.parseMove(move)); + ASSERT_EQ(squareForName("e7"), MOVE_FROM(move)); + ASSERT_EQ(squareForName("e5"), MOVE_TO(move)); + ASSERT_EQ(PAWN, MOVE_PIECE(move)); + ASSERT_FALSE(fpgn.parseMove(move)); +} + constexpr const static char * move1to3 = "1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 {This opening is called the Ruy Lopez.}\n" ; @@ -134,11 +166,11 @@ constexpr const static char *allMoves = TEST_F(PGN, GameInput) { assertPGNGame(move1to3, "r1bqkbnr/1ppp1ppp/p1n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 4"); - + assertPGNGame(move1to10, "r1bq1rk1/2pnbppp/p2p1n2/1p2p3/3PP3/1BP2N1P/PP3PP1/RNBQR1K1 w - - 1 11"); - + assertPGNGame(move1to34, "8/6p1/3k4/R2n1bp1/1p6/1P3P1P/5KP1/8 w - - 3 35"); - + assertPGNGame(allMoves, "8/8/4R1p1/2k3p1/1p4P1/1P1b1P2/3K1n2/8 b - - 2 43"); } @@ -146,9 +178,9 @@ TEST_F(PGN, GameOutput) { assertOutputPGN(move1to3, "r1bqkbnr/1ppp1ppp/p1n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 4", "1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 *"); assertOutputPGN(move1to10, "r1bq1rk1/2pnbppp/p2p1n2/1p2p3/3PP3/1BP2N1P/PP3PP1/RNBQR1K1 w - - 1 11", "1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3 O-O 9. h3 Nb8 10. d4 Nbd7 *"); - + assertOutputPGN(move1to34, "8/6p1/3k4/R2n1bp1/1p6/1P3P1P/5KP1/8 w - - 3 35", "1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3 O-O 9. h3 Nb8 10. d4 Nbd7 11. c4 c6 12. cxb5 axb5 13. Nc3 Bb7 14. Bg5 b4 15. Nb1 h6 16. Bh4 c5 17. dxe5 Nxe4 18. Bxe7 Qxe7 19. exd6 Qf6 20. Nbd2 Nxd6 21. Nc4 Nxc4 22. Bxc4 Nb6 23. Ne5 Rae8 24. Bxf7+ Rxf7 25. Nxf7 Rxe1+ 26. Qxe1 Kxf7 27. Qe3 Qg5 28. Qxg5 hxg5 29. b3 Ke6 30. a3 Kd6 31. axb4 cxb4 32. Ra5 Nd5 33. f3 Bc8 34. Kf2 Bf5 *"); - + assertOutputPGN(allMoves, "8/8/4R1p1/2k3p1/1p4P1/1P1b1P2/3K1n2/8 b - - 2 43", "1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3 O-O 9. h3 Nb8 10. d4 Nbd7 11. c4 c6 12. cxb5 axb5 13. Nc3 Bb7 14. Bg5 b4 15. Nb1 h6 16. Bh4 c5 17. dxe5 Nxe4 18. Bxe7 Qxe7 19. exd6 Qf6 20. Nbd2 Nxd6 21. Nc4 Nxc4 22. Bxc4 Nb6 23. Ne5 Rae8 24. Bxf7+ Rxf7 25. Nxf7 Rxe1+ 26. Qxe1 Kxf7 27. Qe3 Qg5 28. Qxg5 hxg5 29. b3 Ke6 30. a3 Kd6 31. axb4 cxb4 32. Ra5 Nd5 33. f3 Bc8 34. Kf2 Bf5 35. Ra7 g6 36. Ra6+ Kc5 37. Ke1 Nf4 38. g3 Nxh3 39. Kd2 Kb5 40. Rd6 Kc5 41. Ra6 Nf2 42. g4 Bd3 43. Re6 1/2-1/2"); } @@ -163,7 +195,7 @@ TEST_F(PGN, GameWithBlackFromFEN) { TEST_F(PGN, GameWithBlackPromotion) { ChessGame game; - ASSERT_TRUE(FPGN::setGame("1.e4 Nf6 2.Nc3 Nxe4 3.Nxe4 d5 4.Nc3 Qd6 5.Nf3 h5 6.d4 Qd8 7.Bb5+ c6 8.Ba4 b5 9.Bb3 a5 10.a4 b4 11.Na2 Bg4 12.Qd3 Bxf3 13.Qxf3 h4 14.h3 Qd6 15.Bf4 Qe6+ 16.Be3 Qd6 17.O-O g6 18.c4 bxc3 19.bxc3 Nd7 20.c4 dxc4 21.Bxc4 Qf6 22.Qg4 e5 23.Rfe1 Qg7 24.dxe5 Nc5 25.Bxc5 Bxc5 26.e6 Bd4 27.exf7+ Kf8 28.Qe6 Qf6 29.Rad1 Qxe6 30.Bxe6 c5 31.Bd5 Rb8 32.Nc1 Rh5 33.Bc4 Rf5 34.Re2 Rf4 35.Rde1 Bxf2+ 36.Rxf2 Rxc4 37.Nd3 Kg7 38.Re7 Kf8 39.Re6 Rxa4 40.Nxc5 Ra1+ 41.Kh2 Rd1 42.Ne4 Kg7 43.Ng5 Rf8 44.Rfe2 Rxf7 45.Nxf7 Kxf7 46.R6e4 Ra1 47.Rxh4 Kg8 48.Rf2 Kg7 49.Rhf4 a4 50.Rf7+ Kh6 51.R2f4 a3 52.Rg4 a2 53.Rf6 Rh1+ 54.Kxh1", game)); + ASSERT_TRUE(FPGN::setGame("1.e4 Nf6 2.Nc3 Nxe4 3.Nxe4 d5 4.Nc3 Qd6 5.Nf3 h5 6.d4 Qd8 7.Bb5+ c6 8.Ba4 b5 9.Bb3 a5 10.a4 b4 11.Na2 Bg4 12.Qd3 Bxf3 13.Qxf3 h4 14.h3 Qd6 15.Bf4 Qe6+ 16.Be3 Qd6 17.O-O g6 18.c4 bxc3 19.bxc3 Nd7 20.c4 dxc4 21.Bxc4 Qf6 22.Qg4 e5 23.Rfe1 Qg7 24.dxe5 Nc5 25.Bxc5 Bxc5 26.e6 Bd4 27.exf7+ Kf8 28.Qe6 Qf6 29.Rad1 Qxe6 30.Bxe6 c5 31.Bd5 Rb8 32.Nc1 Rh5 33.Bc4 Rf5 34.Re2 Rf4 35.Rde1 Bxf2+ 36.Rxf2 Rxc4 37.Nd3 Kg7 38.Re7 Kf8 39.Re6 Rxa4 40.Nxc5 Ra1+ 41.Kh2 Rd1 42.Ne4 Kg7 43.Ng5 Rf8 44.Rfe2 Rxf7 45.Nxf7 Kxf7 46.R6e4 Ra1 47.Rxh4 Kg8 48.Rf2 Kg7 49.Rhf4 a4 50.Rf7+ Kh6 51.R2f4 a3 52.Rg4 a2 53.Rf6 Rh1+ 54.Kxh1 *", game)); auto move = createPromotion(squareForName("a2"), squareForName("a1"), BLACK, PAWN, QUEEN); game.move(move, false); @@ -205,12 +237,11 @@ TEST_F(PGN, OutputFromPosition) { } TEST_F(PGN, InputFromPosition) { - ChessGame game; - FPGN::setGame("[FEN \"r1bqkbnr/ppp1pppp/2n5/3p4/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3\"]\n*", game); + auto fpgn = FPGN("[FEN \"r1bqkbnr/ppp1pppp/2n5/3p4/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3\"]\n*"); + EXPECT_TRUE(fpgn.parseTag()); - ASSERT_EQ("r1bqkbnr/ppp1pppp/2n5/3p4/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3", game.initialFEN); - - ASSERT_EQ(0, game.getNumberOfMoves()); + ASSERT_EQ("r1bqkbnr/ppp1pppp/2n5/3p4/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3", fpgn.getGame().initialFEN); + ASSERT_EQ(0, fpgn.getGame().getNumberOfMoves()); } TEST_F(PGN, InputMultipleGames) { @@ -221,7 +252,7 @@ TEST_F(PGN, InputMultipleGames) { } TEST_F(PGN, PGNWithSimpleWhiteVariation) { - std::string pgn = "1. e4 (1. d4)"; + std::string pgn = "1. e4 (1. d4) *"; ChessGame game; ASSERT_TRUE(FPGN::setGame(pgn, game)); @@ -248,10 +279,6 @@ TEST_F(PGN, PGNWithSimpleBlackVariation) { } TEST_F(PGN, PGNWithVariation1) { -// std::string pgn = "1. e4 e5 2. Nc3 Nf6 3. f4 d5 4. fxe5 Nxe4 5. Qf3 Nxc3 {We want them to take\ -// this knight so we will recapture with the b2 pawn and go for d2-d4, with a\ -// large center, and Bd3/Ne2 setup.} (5... Nc6 {A tricky and challenging move. We\ -// must prevent Nxe5.}) 6. bxc3 Be7"; std::string pgn = "1. e4 e5 2. Nc3 Nf6 3. f4 d5 4. fxe5 Nxe4 5. Qf3 Nxc3 (5... Nc6) 6. bxc3 Be7"; ChessGame game; @@ -263,6 +290,18 @@ TEST_F(PGN, PGNWithVariation1) { ASSERT_EQ("1. e4 e5 2. Nc3 Nf6 3. f4 d5 4. fxe5 Nxe4 5. Qf3 Nxc3 (5... Nc6) 6. bxc3 Be7 *", pgnAgain); } +TEST_F(PGN, PGNWithVariation2) { + std::string pgn = "1.e4 e5 { Normal opening } 2.Nc3 ( 2.Nf3 Nc6 3.Nc3 Nf6 ) *"; + + ChessGame game; + ASSERT_TRUE(FPGN::setGame(pgn, game)); + + ASSERT_EQ(12, game.getNumberOfMoves()); + + auto pgnAgain = FPGN::getGame(game); + ASSERT_EQ("1. e4 e5 2. Nc3 (2. Nf3 Nc6 3. Nc3 Nf6) *", pgnAgain); +} + TEST_F(PGN, LineFromCursor) { ChessGame game; ASSERT_TRUE(FPGN::setGame(move1to3, game)); diff --git a/Shared/Engine/Engine/ChessGame.hpp b/Shared/Engine/Engine/ChessGame.hpp index fa91ae1..a1e3065 100644 --- a/Shared/Engine/Engine/ChessGame.hpp +++ b/Shared/Engine/Engine/ChessGame.hpp @@ -61,6 +61,7 @@ class ChessGame { callback(*this); } else if (cursor < indexes.moveCursor) { int varIndex = indexes.moves[cursor]; + assert(varIndex < variations.size()); variations[varIndex].lookupNode(cursor+1, atIndex, indexes, callback); } } diff --git a/Shared/Engine/Engine/ChessOpenings.cpp b/Shared/Engine/Engine/ChessOpenings.cpp index d911aec..83e6fd1 100644 --- a/Shared/Engine/Engine/ChessOpenings.cpp +++ b/Shared/Engine/Engine/ChessOpenings.cpp @@ -14,6 +14,7 @@ ChessOpenings::ChessOpenings() { } bool ChessOpenings::load(std::string pgn) { + games.clear(); return FPGN::setGames(pgn, games); } diff --git a/Shared/Engine/Helpers/FPGN.cpp b/Shared/Engine/Helpers/FPGN.cpp index c7fe468..091756d 100644 --- a/Shared/Engine/Helpers/FPGN.cpp +++ b/Shared/Engine/Helpers/FPGN.cpp @@ -36,6 +36,13 @@ Nf2 42. g4 Bd3 43. Re6 1/2-1/2 */ +#define REMEMBER unsigned savedCursor = cursor; + +#define RETURN_FAILURE(error) { \ + cursor = savedCursor; \ + std::cout << error << " around '" << character(-2) << character(-1) << character() << character(1) << character(2) << "' at " << __FUNCTION__ << ":" << __LINE__ << std::endl; \ + return false; } + static bool isFile(char c) { return c >= 'a' && c <= 'h'; } @@ -56,42 +63,18 @@ static bool isPromotion(char c) { return c == '='; } -static bool parseUntil(std::string pgn, unsigned &cursor, std::string &comment, char endCharacter) { - while (cursor < pgn.length() && pgn[cursor] != endCharacter) { - comment += pgn[cursor]; - cursor++; - } - cursor++; // go after the endCharacter - return true; +static bool isDigit(char c) { + return c >= '0' && c <= '9'; } +static File getFile(char c) { + assert(isFile(c)); + return (File)(c - 'a'); +} -// For example: -// "12. " -// "1..." - to indicate a move for black -static bool parseMoveNumber(std::string pgn, unsigned &cursor, bool &isMoveForBlack) { - // Parse the number portion of the move - while (cursor < pgn.length() && pgn[cursor] != '.') { - cursor++; - } - - // Parse the number of dots, to determine if it is a white or black move - unsigned numberOfDots = 0; - while (cursor < pgn.length() && pgn[cursor] == '.') { - cursor++; - numberOfDots++; - } - - if (numberOfDots == 1) { - isMoveForBlack = false; - } else if (numberOfDots == 3) { - isMoveForBlack = true; - } else { - // Invalid number of dots - return false; - } - - return true; +static Rank getRank(char c) { + assert(isRank(c)); + return (Rank)(c - '1'); } static bool parseString(std::string pgn, unsigned &cursor, std::string & string) { @@ -120,22 +103,32 @@ static bool parseQuotedString(std::string pgn, unsigned &cursor, std::string &st return true; } -static void eatWhiteSpace(std::string pgn, unsigned &cursor) { - while (cursor < pgn.length() && isSpaceOrNewLine(pgn[cursor])) { +static bool parseUntil(std::string pgn, unsigned &cursor, std::string &comment, char endCharacter) { + while (cursor < pgn.length() && pgn[cursor] != endCharacter) { + comment += pgn[cursor]; cursor++; } + cursor++; // go after the endCharacter + return true; } -// Parse comments in the form: { this is a comment }. -// Don't do anything with the comment itself for now. -static void parseComment(std::string pgn, unsigned &cursor) { - eatWhiteSpace(pgn, cursor); +static bool IsCastlingKingSide(Move move) { + if (!MOVE_IS_CASTLING(move)) return false; - if (pgn[cursor] == '{') { - cursor++; - std::string comment = ""; - auto result = parseUntil(pgn, cursor, comment, '}'); - assert(result); + if (MOVE_COLOR(move) == WHITE) { + return MOVE_FROM(move) == e1 && MOVE_TO(move) == g1; + } else { + return MOVE_FROM(move) == e8 && MOVE_TO(move) == g8; + } +} + +static bool IsCastlingQueenSide(Move move) { + if (!MOVE_IS_CASTLING(move)) return false; + + if (MOVE_COLOR(move) == WHITE) { + return MOVE_FROM(move) == e1 && MOVE_TO(move) == c1; + } else { + return MOVE_FROM(move) == e8 && MOVE_TO(move) == c8; } } @@ -164,110 +157,6 @@ static std::string pgnPiece(Piece piece) { } } -static Piece parsePiece(std::string pgn, unsigned &cursor) { - auto c = pgn[cursor]; - Piece piece; - switch (c) { - case 'N': - piece = KNIGHT; - cursor++; - break; - - case 'K': - piece = KING; - cursor++; - break; - - case 'Q': - piece = QUEEN; - cursor++; - break; - - case 'B': - piece = BISHOP; - cursor++; - break; - - case 'R': - piece = ROOK; - cursor++; - break; - - case 'P': - piece = PAWN; - cursor++; - break; - - default: - // Pawn is usually omitted, so don't move the cursor - piece = PAWN; - break; - } - return piece; -} - -static File getFile(char c) { - assert(isFile(c)); - return (File)(c - 'a'); -} - -static Rank getRank(char c) { - assert(isRank(c)); - return (Rank)(c - '1'); -} - -static std::vector getMatchingMoves(ChessBoard board, Square to, Piece movingPiece, Piece promotedPiece, File fromFile, Rank fromRank) { - ChessMoveGenerator generator; - auto moveList = generator.generateMoves(board); - std::vector matchingMoves; - for (int index=0; index getMatchingMoves(ChessBoard board, Square to, Piece movingPiece, Piece promotedPiece, File fromFile, Rank fromRank) { + ChessMoveGenerator generator; + auto moveList = generator.generateMoves(board); + std::vector matchingMoves; + for (int index=0; index= pgn.length()) { + RETURN_FAILURE("Unexpected end of PGN") + } + + if (character() == '.') { + // A dot means we are done with the number portion + // Make sure the number string is not empty! + if (moveNumberString.empty()) { + RETURN_FAILURE("Unexpected empty moveNumber") + } + moveNumber = integer(moveNumberString); + break; + } else if (isDigit(character())) { + moveNumberString += character(); + cursor++; + } else { + RETURN_FAILURE("Unexpected character") + } + } + + // Parse the number of dots, to determine if it is a white or black move + unsigned numberOfDots = 0; + while (hasMoreCharacters() && character() == '.') { + cursor++; + numberOfDots++; + } + + if (numberOfDots == 1) { + isMoveForBlack = false; + return true; + } else if (numberOfDots == 3) { + isMoveForBlack = true; + return true; + } else { + // Invalid number of dots + RETURN_FAILURE("Invalid number of dots in move number") + } +} + +void FPGN::eatWhiteSpaces() { + while (cursor < pgn.length() && isSpaceOrNewLine(pgn[cursor])) { + cursor++; + } +} + +bool FPGN::parsePiece(Piece &piece) { + auto c = pgn[cursor]; + switch (c) { + case 'N': + piece = KNIGHT; + cursor++; + break; + + case 'K': + piece = KING; + cursor++; + break; + + case 'Q': + piece = QUEEN; + cursor++; + break; + + case 'B': + piece = BISHOP; + cursor++; + break; + + case 'R': + piece = ROOK; + cursor++; + break; + + case 'P': + piece = PAWN; + cursor++; + break; + + default: + // Pawn is usually omitted, so don't move the cursor + piece = PAWN; + break; + } + + return true; +} + +bool FPGN::parseTerminationMarker() { + REMEMBER + eatWhiteSpaces(); + + if (pgn[cursor] == '1' && pgn[cursor+1] == '-' && pgn[cursor+2] == '0') { + // Termination marker: white wins + cursor+=3; + game.outcome = ChessGame::Outcome::white_wins; + return true; + } else if (pgn[cursor] == '0' && pgn[cursor+1] == '-' && pgn[cursor+2] == '1') { + // Termination marker: black wins + cursor+=3; + game.outcome = ChessGame::Outcome::black_wins; + return true; + } else if (pgn[cursor] == '1' && pgn[cursor+1] == '/' && pgn[cursor+2] == '2' && pgn[cursor+3] == '-' && pgn[cursor+4] == '1' && pgn[cursor+5] == '/' && pgn[cursor+6] == '2') { + // Termination marker: draw + cursor+=7; + game.outcome = ChessGame::Outcome::draw; + return true; + } else if (pgn[cursor] == '*') { + // Termination marker: game in progress or result unknown + cursor++; + game.outcome = ChessGame::Outcome::in_progress; + return true; + } else { + RETURN_FAILURE("Unexpected termination marker") + } +} + +bool FPGN::parseMove(Move &move) { + REMEMBER + + eatWhiteSpaces(); + + Piece movingPiece; + if (!parsePiece(movingPiece)) { + RETURN_FAILURE("Unable to parse piece") + } File fromFile = FileUndefined; Rank fromRank = RankUndefined; @@ -418,37 +467,12 @@ bool FPGN::parseMove(std::string pgn, unsigned &cursor, ChessGame &game, Move &m toRank = getRank('8'); } cursor+=3; - } else if (pgn[cursor] == '1' && pgn[cursor+1] == '-' && pgn[cursor+2] == '0') { - // Termination marker: white wins - cursor+=3; - game.outcome = ChessGame::Outcome::white_wins; - end = true; - } else if (pgn[cursor] == '0' && pgn[cursor+1] == '-' && pgn[cursor+2] == '1') { - // Termination marker: black wins - cursor+=3; - game.outcome = ChessGame::Outcome::black_wins; - end = true; - } else if (pgn[cursor] == '1' && pgn[cursor+1] == '/' && pgn[cursor+2] == '2' && pgn[cursor+3] == '-' && pgn[cursor+4] == '1' && pgn[cursor+5] == '/' && pgn[cursor+6] == '2') { - // Termination marker: draw - cursor+=7; - game.outcome = ChessGame::Outcome::draw; - end = true; - } else if (pgn[cursor] == '*') { - // Termination marker: game in progress or result unknown - cursor++; - game.outcome = ChessGame::Outcome::in_progress; - end = true; } else { // Invalid SAN representation move = 0; - return false; + RETURN_FAILURE("Invalid SAN representation of the move") } - if (end) { - move = 0; - return false; - } - // 8.2.3.5: Check and checkmate indication characters if (isCheckOrMate(pgn[cursor])) { cursor++; @@ -458,7 +482,7 @@ bool FPGN::parseMove(std::string pgn, unsigned &cursor, ChessGame &game, Move &m Piece promotedPiece = (Piece)0; if (isPromotion(pgn[cursor])) { cursor++; - promotedPiece = parsePiece(pgn, cursor); + parsePiece(promotedPiece); } // The target square must be fully defined at this point @@ -473,27 +497,30 @@ bool FPGN::parseMove(std::string pgn, unsigned &cursor, ChessGame &game, Move &m // After matching, one and only one move should be found if (matchingMoves.size() == 1) { move = matchingMoves.front(); - return true; + if (MOVE_ISVALID(move)) { + return true; + } else { + RETURN_FAILURE("Invalid matched move") + } } else { move = 0; - return false; + RETURN_FAILURE("No matching moves found") } } // A variation is simply an alternative line to the move that has just been played -bool FPGN::parseVariation(std::string pgn, unsigned &cursor, ChessGame &game, bool &end) { - eatWhiteSpace(pgn, cursor); - - if (cursor >= pgn.length()) { - end = true; - return false; - } +bool FPGN::parseVariation() { + REMEMBER - if (pgn[cursor] != '(') { - return false; + eatWhiteSpaces(); // TODO: should we do this at a high level? + + if (character() != '(') { + RETURN_FAILURE("Unexpected start of variation") + } else { + cursor++; } -// std::cout << "Before variation begins " << game.getMoveIndexes().moveCursor << std::endl; +// std::cout << "Start variation at " << game.getMoveIndexes().moveCursor << std::endl; // game.board.print(); // Remember the move indexes so we can restore it once @@ -509,24 +536,35 @@ bool FPGN::parseVariation(std::string pgn, unsigned &cursor, ChessGame &game, bo // std::cout << "Backtracking one move for the variation " << game.getMoveIndexes().moveCursor << std::endl; // game.board.print(); - // Parse the variation (potentially recursively) - parseMoveText(pgn, cursor, game, end); + // Parse the variation, which consist of one or more moveText. + // (moveText1 [moveText2]...) + while (parseMoveText()) { + if (!hasMoreCharacters()) { + RETURN_FAILURE("Unexpected end of PGN while parsing a variation") + } + if (character() == ')') { + break;; + } + } + + eatWhiteSpaces(); + + // Check we have reached the end of the variation + if (character() != ')') { + RETURN_FAILURE("Unexpected end of variation") + } + + cursor++; // Restore the move indexes as it was before the variation // so the internal game state is properly restored and // ready to consume the next moves. game.setMoveIndexes(moveIndexes); -// std::cout << "After variation is explored " << game.getMoveIndexes().moveCursor << std::endl; +// std::cout << "End variation at " << game.getMoveIndexes().moveCursor << std::endl; // game.board.print(); - eatWhiteSpace(pgn, cursor); - if (cursor < pgn.length() && pgn[cursor] == ')') { - cursor++; - return true; - } else { - return false; - } + return true; } /** @@ -538,93 +576,81 @@ bool FPGN::parseVariation(std::string pgn, unsigned &cursor, ChessGame &game, bo 2...d6 1. e4 { comment } */ -bool FPGN::parseMoveText(std::string pgn, unsigned &cursor, ChessGame &game, bool &end) { +bool FPGN::parseMoveText() { + REMEMBER + bool isMoveForBlack = false; - auto result = parseMoveNumber(pgn, cursor, isMoveForBlack); - if (!result) { - return false; + unsigned moveNumber; + if (!parseMoveNumber(moveNumber, isMoveForBlack)) { + RETURN_FAILURE("Invalid move number") } Move whiteMove = 0; - if (!parseMove(pgn, cursor, game, whiteMove, end)) { - return false; + if (!parseMove(whiteMove)) { + RETURN_FAILURE("Invalid move") } - if (end) { - return true; - } - if (!MOVE_ISVALID(whiteMove)) { - return false; - } - game.move(whiteMove, false); -// std::cout << to_string(whiteMove, SANType::full) << std::endl; +// if (isMoveForBlack) { +// std::cout << "Parse black move: " << to_string(whiteMove, SANType::full) << std::endl; +// } else { +// std::cout << "Parse white move: " << to_string(whiteMove, SANType::full) << std::endl; +// } // game.board.print(); - parseComment(pgn, cursor); - - parseVariation(pgn, cursor, game, end); - if (end) { - return true; - } - - // Did we reach the end now? - if (cursor >= pgn.length()) { - end = true; - return true; - } + parseComment(); // optional + parseVariation(); // optional - eatWhiteSpace(pgn, cursor); - - // Did we reach the end now? - if (cursor >= pgn.length()) { - end = true; + // Return now if the moveText was actually only for black + if (isMoveForBlack) { return true; } - if (pgn[cursor] == '[') { - // Start of a new game - end = true; + // Return now if a termination marker is detected + if (parseTerminationMarker()) { return true; } - - if (pgn[cursor] == ')') { - // End of a variation after white move, - // so return early to avoid parsing - // the non-existent black move + + // Return now if the end of a variation is detected + eatWhiteSpaces(); + if (character() == ')') { return true; } - + Move blackMove = 0; - if (!parseMove(pgn, cursor, game, blackMove, end)) { - return true; - } - if (end) { - return true; - } - if (!MOVE_ISVALID(blackMove)) { - return false; + if (!parseMove(blackMove)) { + RETURN_FAILURE("Invalid black move") } - // std::cout << MOVE_DESCRIPTION(blackMove) << std::endl; +// std::cout << "Parse black move: " << to_string(blackMove, SANType::full) << std::endl; // game.board.print(); game.move(blackMove, false); - parseComment(pgn, cursor); - - parseVariation(pgn, cursor, game, end); - if (end) { - return true; - } + parseComment(); // optional + parseVariation(); // optional - // Did we reach the end now? - if (cursor >= pgn.length()) { - end = true; + return true; +} + +// Parse comments in the form: { this is a comment }. +// Don't do anything with the comment itself for now. +bool FPGN::parseComment() { + REMEMBER + + eatWhiteSpaces(); + + if (character() == '{') { + cursor++; + std::string comment = ""; + if (!parseUntil(pgn, cursor, comment, '}')) { + RETURN_FAILURE("Unable to parse until a specific character") + } + return true; + } else { + RETURN_FAILURE("Unexpected comment starting character") } - - return true; } bool FPGN::setGame(std::string pgn, ChessGame &game) { @@ -632,53 +658,90 @@ bool FPGN::setGame(std::string pgn, ChessGame &game) { return setGame(pgn, game, cursor); } +bool FPGN::parseTag(bool lookahead) { + REMEMBER + eatWhiteSpaces(); + + // Expecting a tag opening bracket + if (character() != '[') { + RETURN_FAILURE("Unexpected start TAG character") + } + + if (lookahead) { + cursor = savedCursor; + return true; + } + + cursor++; // go after the [ + + std::string tagName; + std::string tagValue; + auto result = parseString(pgn, cursor, tagName); + assert(result); + + eatWhiteSpaces(); + result = parseQuotedString(pgn, cursor, tagValue); + assert(result); + + eatWhiteSpaces(); + if (character() != ']') { + RETURN_FAILURE("Unexpected end TAG character") + } + + cursor++; + + game.tags[tagName] = tagValue; + + if (tagName == "FEN" && !game.setFEN(tagValue)) { + RETURN_FAILURE("Failed to set FEN to the game") + } + + return true; +} + bool FPGN::setGame(std::string pgn, ChessGame &game, unsigned & cursor) { game.reset(); - bool end = false; + auto fpgn = FPGN(pgn); + fpgn.cursor = cursor; bool parsedMoveText = false; - while (cursor < pgn.length() && !end) { - auto c = pgn[cursor]; - if (c == '[') { - // If we already parsed the moveText section, it means - // we are hitting another game. - if (parsedMoveText) { - return true; - } - - cursor++; // go after the [ - - std::string tagName; - std::string tagValue; - auto result = parseString(pgn, cursor, tagName); - assert(result); - eatWhiteSpace(pgn, cursor); - result = parseQuotedString(pgn, cursor, tagValue); - assert(result); - eatWhiteSpace(pgn, cursor); - assert(pgn[cursor] == ']'); - cursor++; - - game.tags[tagName] = tagValue; - - if (tagName == "FEN") { - result = game.setFEN(tagValue); - assert(result); - } - } else if (c >= '0' && c <= '9') { - if (!parseMoveText(pgn, cursor, game, end)) { - return false; - } - parsedMoveText = true; // we are done parsing the move text section - } else if (c == '*') { - // The game continues (but the PGN representation stops here for that game) - cursor++; + while (fpgn.hasMoreCharacters()) { + // Check if there is tag ahead and if we have already + // parsed at least one moveText section. If that is the case, + // it means we are now parsing the tag section of another game. + if (fpgn.parseTag(true) && parsedMoveText) { + game = fpgn.game; + cursor = fpgn.cursor; return true; + } + + while (fpgn.parseTag()) { + // no-op + } + + if (fpgn.parseMoveText()) { + parsedMoveText = true; // remember that we parsed at least one move text section } else { - eatWhiteSpace(pgn, cursor); + return false; } + + fpgn.eatWhiteSpaces(); + + if (fpgn.character() == '*') { + // We have reached the end of this game + fpgn.cursor++; + fpgn.eatWhiteSpaces(); + + game = fpgn.game; + cursor = fpgn.cursor; + return true; + } + + fpgn.eatWhiteSpaces(); } + game = fpgn.game; + cursor = fpgn.cursor; return true; } diff --git a/Shared/Engine/Helpers/FPGN.hpp b/Shared/Engine/Helpers/FPGN.hpp index 9cf86a4..c5fb239 100644 --- a/Shared/Engine/Helpers/FPGN.hpp +++ b/Shared/Engine/Helpers/FPGN.hpp @@ -18,6 +18,43 @@ class FPGN { public: + FPGN(std::string pgn = "") { + FPGN::pgn = pgn; + } + + ChessGame & getGame() { + return game; + } + + const char character(int offset = 0) { + int desiredCursor = cursor + offset; + if (desiredCursor >= 0 && desiredCursor < pgn.length()) { + return pgn[desiredCursor]; + } else { + return 0; + } + } + + bool hasMoreCharacters() { + return cursor < pgn.length(); + } + + bool parseTag(bool lookahead = false); + bool parseMoveText(); + + bool parseVariation(); + + bool parseMoveNumber(unsigned &moveNumber, bool &isMoveForBlack); + bool parsePiece(Piece &p); + bool parseMove(Move &move); + + bool parseTerminationMarker(); + bool parseComment(); + + void eatWhiteSpaces(); + + // Utilities + enum class SANType { tight, // Ne6 medium, // Nde6 @@ -27,14 +64,7 @@ class FPGN { static std::string to_string(Move move, SANType sanType = SANType::full); - static bool parseVariation(std::string pgn, unsigned &cursor, ChessGame &game, bool &end); - - static bool parseMove(std::string pgn, unsigned &cursor, ChessGame &game, Move &move, bool &end); - static bool parseMoveText(std::string pgn, unsigned &cursor, ChessGame &game, bool &end); - static bool setGame(std::string pgn, ChessGame &game); - - static bool setGame(std::string pgn, ChessGame &game, unsigned & cursor); static bool setGames(std::string pgn, std::vector & games); @@ -48,4 +78,12 @@ class FPGN { // which means we only want to display the game after the current move (to show the thinking of the computer). // This parameter takes effect only if the Formatting is set to line static std::string getGame(ChessGame game, Formatting formatting = FPGN::Formatting::storage, int fromIndex = 0); + +private: + std::string pgn = ""; + unsigned cursor = 0; + ChessGame game; + + static bool setGame(std::string pgn, ChessGame &game, unsigned & cursor); + };