This is a very basic example on how to deal with single moves: we simply read each move, one by one, and print them on stdout.
#include <PGNGameCollection.h>
#include <fstream>
int main(int argc, char *argv[])
{
try
{
// ok, getting the games, iterate, the same stuff we already know.
ifstream pgnfile("./sample.pgn");
pgn::GameCollection games;
pgnfile >> games;
for (pgn::GameCollection::iterator itr = games.begin(); itr != games.end(); itr++)
{
pgn::Game game = *itr;
// from the game object we now get the list of the moves
pgn::MoveList movelist = game.moves();
std::cout << "---- new game ----" << endl;
// MoveList class defines his own iterator
for (pgn::MoveList::iterator itr2 = movelist.begin(); itr2 != movelist.end(); itr2++)
{
// itr2 points to a single move, let's print it out.
std::cout << "move: ." << *itr2 << "." << std::endl;
}
}
}
catch (pgn::Exception &e)
{
cerr << "exception: " << e.what() << endl;
return -1;
}
return 0;
}
|
We can run it and get this rather pointless (to be honest) output stream
---- new game ---- move: .1. e4 e5. move: .2. Nf3 Nc6. move: .3. Nc3 Nf6. move: .4. d4 exd4. ...
and move on to the next example, when we'll try to get something out of the moves.
| [4. Processing games] | [home page] | [6. Moves and Pieces] |
|
|
|