Go to the documentation of this file.00001
00002
00003 #include "osl/state/numEffectState.h"
00004 #include "osl/move_generator/legalMoves.h"
00005 #include "osl/container/moveVector.h"
00006 #include "osl/record/csaRecord.h"
00007 #include "osl/record/ki2.h"
00008 #include "osl/record/kakinoki.h"
00009 #include "osl/record/kisen.h"
00010 #include <boost/algorithm/string/predicate.hpp>
00011 #include <iostream>
00012 using namespace osl;
00013 using namespace std;
00014 namespace csa=osl::record::csa;
00015 void run(const osl::vector<Move>& moves) {
00016 NumEffectState state;
00017 for (size_t i=0; i<moves.size(); ++i) {
00018 const Move selected = moves[i];
00019 MoveVector all;
00020 LegalMoves::generate(state, all);
00021
00022 cout << "selected " << csa::show(selected) << " others";
00023 for (size_t j=0; j<all.size(); ++j) {
00024 if (all[j] != selected)
00025 cout << " " << csa::show(all[j]);
00026 }
00027 cout << endl;
00028
00029 state.makeMove(selected);
00030 }
00031 }
00032 int main(int argc, char **argv) {
00033 for (int i=1; i<argc; ++i) {
00034 const char *filename = argv[i];
00035 if (boost::algorithm::iends_with(filename, ".csa")) {
00036 const CsaFile csa(filename);
00037 run(csa.getRecord().getMoves());
00038 }
00039 else if (boost::algorithm::iends_with(filename, ".ki2")) {
00040 const Ki2File ki2(filename);
00041 run(ki2.getRecord().getMoves());
00042 }
00043 else if (boost::algorithm::iends_with(filename, ".kif")
00044 && KakinokiFile::isKakinokiFile(filename)) {
00045 const KakinokiFile kif(filename);
00046 run(kif.getRecord().getMoves());
00047 }
00048 else if (boost::algorithm::iends_with(filename, ".kif")) {
00049 KisenFile kisen(filename);
00050 for (size_t j=0; j<kisen.size(); ++j)
00051 run(kisen.getMoves(j));
00052 }
00053 else {
00054 cerr << "Unknown file type: " << filename << "\n";
00055 continue;
00056 }
00057 }
00058 }
00059
00060
00061
00062
00063