Player * Rules::loadPlayerRandom(GameObserver* observer, int isAI, int mode) { int color1 = 1 + observer->getRandomGenerator()->random() % 5; int color2 = 1 + observer->getRandomGenerator()->random() % 5; int color0 = Constants::MTG_COLOR_ARTIFACT; if (mode == GAME_TYPE_RANDOM1) color2 = color1; int colors[] = { color1, color2, color0 }; int nbcolors = 3; string lands[] = { "forest", "forest", "island", "mountain", "swamp", "plains", "forest" }; MTGDeck * tempDeck = NEW MTGDeck(MTGCollection()); tempDeck->addRandomCards(9, 0, 0, -1, lands[color1].c_str()); tempDeck->addRandomCards(9, 0, 0, -1, lands[color2].c_str()); tempDeck->addRandomCards(1, 0, 0, 'U', "land"); tempDeck->addRandomCards(1, 0, 0, 'R', "land"); tempDeck->addRandomCards(12, 0, 0, -1, "creature", colors, nbcolors); tempDeck->addRandomCards(2, 0, 0, -1, "sorcery", colors, nbcolors); tempDeck->addRandomCards(2, 0, 0, -1, "enchantment", colors, nbcolors); tempDeck->addRandomCards(2, 0, 0, -1, "instant", colors, nbcolors); tempDeck->addRandomCards(2, 0, 0, -1, "artifact", colors, nbcolors); string deckFile = "random"; string deckFileSmall = "random"; Player *player = NULL; if (!isAI) // Human Player player = NEW HumanPlayer(observer, deckFile, deckFileSmall, false, tempDeck); else player = NEW AIPlayerBaka(observer, deckFile, deckFileSmall, "", tempDeck); return player; }
MainForm::MainForm() { SuspendLayout(); _humanBoard = gcnew Board(); _computerBoard = gcnew Board(false); _humanPlayer = gcnew HumanPlayer("Þaidëjas", _computerBoard); _computerPlayer = gcnew ComputerPlayer("Kompiuteris"); _scoreboard = gcnew ScoreBoard(_humanPlayer, _computerPlayer, 10, 100); _controller = gcnew GameController(_humanPlayer, _computerPlayer, _humanBoard, _computerBoard, _scoreboard); _shuffleButton = CreateButton(ShuffleCharacter.ToString(), ButtonBackColor); _newGameButton = CreateButton(NewGameCharacter.ToString(), ButtonBackColor); _startGameButton = CreateButton(StartGameCharacter.ToString(), ButtonBackColor); SetupWindow(); LayoutControls(); _scoreboard->GameEnded += gcnew EventHandler(this, &MainForm::OnGameEnded); _shuffleButton->Click += gcnew System::EventHandler(this, &MainForm::OnShuffleButtonClick); _startGameButton->Click += gcnew System::EventHandler(this, &MainForm::OnStartGameButtonClick); _newGameButton->Click += gcnew System::EventHandler(this, &MainForm::OnNewGameButtonClick); ResumeLayout(); StartNewGame(); };
Game::Game(const vector<string> names) { vector<string>::const_iterator iter; for (iter = names.begin(); iter != names.end(); iter++) { mPlayers.push_back(HumanPlayer(*iter)); } srand(static_cast<unsigned int>(time(0))); mDeck.Populate(); mDeck.Shuffle(); }
Player * Rules::loadPlayerMomir(GameObserver* observer, int isAI) { string deckFileSmall = "momir"; char empty[] = ""; MTGDeck * tempDeck = NEW MTGDeck(MTGCollection()); //Autogenerate a momir deck. Leave the "momir.txt" bits below for stats. tempDeck->addRandomCards(12, 0, 0, Constants::RARITY_L, "Forest"); tempDeck->addRandomCards(12, 0, 0, Constants::RARITY_L, "Plains"); tempDeck->addRandomCards(12, 0, 0, Constants::RARITY_L, "Swamp"); tempDeck->addRandomCards(12, 0, 0, Constants::RARITY_L, "Mountain"); tempDeck->addRandomCards(12, 0, 0, Constants::RARITY_L, "Island"); Player *player = NULL; if (!isAI) // Human Player player = NEW HumanPlayer(observer, options.profileFile("momir.txt", "", true).c_str(), deckFileSmall, false, tempDeck); else player = NEW AIMomirPlayer(observer, options.profileFile("momir.txt", "", true).c_str(), deckFileSmall, empty, tempDeck); return player; }
std::pair<std::vector<HumanPlayer>, std::vector<ComputerPlayer>> Menu::getPlayerVector(int nHuman, int nAI, std::vector<std::string> playerNames, float startingMoney) { std::vector<ComputerPlayer::PlayerType> aiType = { ComputerPlayer::NPC_ALEX,ComputerPlayer::NPC_SIDNEY }; std::vector<std::string> genericNames = { "Alex ", "Sidney " }; int nTypes = (int)aiType.size(); std::vector<HumanPlayer> humanVec(nHuman); std::vector<ComputerPlayer> npcVec(nAI); for (int i = 0; i < nHuman; i++) { humanVec[i] = HumanPlayer(startingMoney, playerNames[i]); } for (int i = 0; i < nAI; i++) { std::string str = genericNames[i%nTypes] + std::to_string(i / nTypes + 1); // creates computer player, cycling between different ai types in 'aiType' npcVec[i] = ComputerPlayer(startingMoney, str, aiType[i%nTypes]); } std::pair<std::vector<HumanPlayer>, std::vector<ComputerPlayer>> pair = { humanVec,npcVec }; return pair; }