void PgntestTest::GameResult_checkAllPossiblesResults() { GameResult whiteWin("1-0"); QVERIFY(whiteWin.isWhiteWin()); GameResult blackWin("0-1"); QVERIFY(blackWin.isBlackWin()); GameResult drawn("1/2-1/2"); QVERIFY(drawn.isDrawn()); GameResult unknown("*"); QVERIFY(unknown.isUnknown()); }
void GameMap::draw() { std::vector<bool> drawn(between.size(), false); std::vector<Point> oldPos(between.size()); int start = 0; std::sort(between.begin(), between.end(), SortBetween()); for (unsigned int i = 0; i < between.size(); ++i) { oldPos[i].x = between[i]->getX(); oldPos[i].y = between[i]->getY(); between[i]->setPos(getX() + oldPos[i].x, getY() + oldPos[i].y); } for (unsigned int i = 0; i < tiles.size(); ++i) { /* Don't waste time, don't draw unvisible tiles. ( It's also possible that the size of the map is inferior to the screen size ) */ if (visible(tiles[i])) { for (unsigned int j = start; j < between.size(); ++j) { if (!drawn[j]) { if (between[j]->getY() < (getY() + tiles[i].y)) { DrawableRect rect; rect.setPos(tiles[i].x + getX(), tiles[i].y + getY()); rect.resize(tileWidth, tileHeight); if (between[j]->collide(rect)) { between[j]->draw(); drawn[j] = true; start = j; } } } } Sprite &tile = tilesets[tiles[i].tileset]; tile.setTile(tiles[i].tileX, tiles[i].tileY, tileWidth, tileHeight); tile.setPos(getX() + tiles[i].x, getY() + tiles[i].y); tile.draw(); } } for (unsigned int i = 0; i < between.size(); ++i) { if (!drawn[i]) between[i]->draw(); between[i]->setPos(oldPos[i]); between[i]->clearMove(); } }