Exemplo n.º 1
0
int main(){

    numRounds = 1;
    
    //ask for number of players
    numberOfPlayers();
    //ask players to choose a level
    selectLevel();
    //play game
    playGame();

    
    int round = playAgain();
    while (round == 1){
        reset();
        numRounds++;
        playGame();
        round = playAgain();
    }
    
    if (round == 0){
        displayFinalScore();
    }
    return 0;
}
Exemplo n.º 2
0
void LevelPanel::onProcessContainer(gui2::WidgetEvents& events)
{
	for (std::size_t i = 0; i < levelListEntries.size(); ++i)
	{
		auto levelEntry = levelListEntries[i];

		if (levelEntry->isMouseDown())
		{
			selectLevel(i);
		}
	}

	if (dropdownMusic->wasChanged())
	{
		try
		{
			dungeon->getLevel(getSelectedLevel()).setMusic(songIDs.at(dropdownMusic->getSelection()));
		}
		catch (...)
		{
			// No level selected or song ID somehow out of range? Ignore.
		}
	}

	if (dropdownBoss->wasChanged())
	{
		try
		{
			dungeon->getLevel(getSelectedLevel()).setBoss(bossIDs.at(dropdownBoss->getSelection()));
		}
		catch (...)
		{
			// No level selected or boss ID somehow out of range? Ignore.
		}
	}

	updateSlider();

	if (levelListSlider->isEnabled())
	{
		if ((levelListContainer->isMouseOver() || levelListSlider->isMouseOver()) && events.mouseWheelDelta != 0)
		{
			scrollVelocity -= events.mouseWheelDelta * 5;
		}

		if (std::abs(scrollVelocity) > 0.0001f)
		{
			float newSliderValue = levelListSlider->getValue() + scrollVelocity;
			if (newSliderValue > levelListSlider->getMax())
			{
				newSliderValue = levelListSlider->getMax();
				scrollVelocity = 0.f;
			}
			else if (newSliderValue < levelListSlider->getMin())
			{
				newSliderValue = levelListSlider->getMin();
				scrollVelocity = 0.f;
			}
			levelListSlider->setValue(newSliderValue);
			scrollVelocity *= 0.75f;
		}
	}

	levelListInnerContainer->setPosition(0.f, -levelListSlider->getValue());
	levelListInnerContainer->setSize(levelListContainer->getSize().x, levelListInnerContainer->getSize().y);

	if (dungeon != nullptr)
	{
		if (buttonAddLevel->isClicked())
		{
			std::size_t insertionIndex = hasSelectedLevel() ? getSelectedLevel() + 1 : dungeon->getLevelCount();
			dungeon->insertLevel(insertionIndex);

			updateDungeon();
			selectLevel(insertionIndex);
		}

		if (buttonRemoveLevel->isClicked())
		{
			if (hasSelectedLevel())
			{
				deleteConfirmMessage->show();
			}
		}

		if (deleteConfirmMessage->wasClosed() && deleteConfirmMessage->getClickedButton() == 0)
		{
			if (hasSelectedLevel())
			{
				dungeon->removeLevel(getSelectedLevel());

				updateDungeon();

				if (dungeon->getLevelCount() == 0)
				{
					deselectLevel();
				}
				else
				{
					selectLevel(selectedLevel == dungeon->getLevelCount() ? selectedLevel - 1 : selectedLevel);
				}
			}
		}

		if (buttonDuplicateLevel->isClicked())
		{
			if (hasSelectedLevel())
			{
				dungeon->insertLevel(getSelectedLevel());

				const Level & sourceLevel = dungeon->getLevel(getSelectedLevel() + 1);
				Level & destLevel = dungeon->getLevel(getSelectedLevel());
				destLevel.assign(sourceLevel);

				updateDungeon();
				selectLevel(getSelectedLevel() + 1);
			}
		}

		if (buttonMoveLevelUp->isClicked())
		{
			if (hasSelectedLevel() && getSelectedLevel() > 0)
			{
				dungeon->swapLevels(getSelectedLevel(), getSelectedLevel() - 1);

				updateDungeon();
				selectLevel(getSelectedLevel() - 1);
			}
		}

		if (buttonMoveLevelDown->isClicked())
		{
			if (hasSelectedLevel() && getSelectedLevel() < dungeon->getLevelCount() - 1)
			{
				dungeon->swapLevels(getSelectedLevel(), getSelectedLevel() + 1);

				updateDungeon();
				selectLevel(getSelectedLevel() + 1);
			}
		}
	}
}
Exemplo n.º 3
0
int NewGameScreen::update()
{
	sf::Event event;
	while(window.pollEvent(event)) {
		sf::Vector2f v = (sf::Vector2f)sf::Mouse::getPosition(window);
		if (event.type == sf::Event::MouseMoved)
		{
			bool buttonHovered = false;
			if (whiteHumanButton.containsMousePos(v) && whitePlayerSelected != HumanType) {
				// Highlight whiteHumanButton
				whiteHumanButton.setState(Highlighted);
				buttonHovered = true;
			} else if (blackHumanButton.containsMousePos(v) && blackPlayerSelected != HumanType) {
				// Highlight blackHumanButton
				blackHumanButton.setState(Highlighted);
				buttonHovered = true;
			} else if (whiteAIButton.containsMousePos(v) && whitePlayerSelected != AIType) {
				// Highlight whiteAIButton
				whiteAIButton.setState(Highlighted);
				buttonHovered = true;
			} else if (blackAIButton.containsMousePos(v) && blackPlayerSelected != AIType) {
				// Highlight blackAIButton
				blackAIButton.setState(Highlighted);
				buttonHovered = true;
			}
			if (whitePlayerSelected == AIType) {
				if (whiteLevelOneButton.containsMousePos(v) && whiteLevel != 1) {
					whiteLevelOneButton.setState(Highlighted);
					buttonHovered = true;
				} else if (whiteLevelTwoButton.containsMousePos(v) && whiteLevel != 2) {
					whiteLevelTwoButton.setState(Highlighted);
					buttonHovered = true;
				} else if (whiteLevelThreeButton.containsMousePos(v) && whiteLevel != 3) {
					whiteLevelThreeButton.setState(Highlighted);
					buttonHovered = true;
				} else if (whiteLevelFourButton.containsMousePos(v) && whiteLevel != 4) {
					whiteLevelFourButton.setState(Highlighted);
					buttonHovered = true;
				} else if (whiteLevelFiveButton.containsMousePos(v) && whiteLevel != 5) {
					whiteLevelFiveButton.setState(Highlighted);
					buttonHovered = true;
				}
			} else {
				if (whitePlayerName.containsMousePos(v) && whitePlayerName.getState() != Selected) {
					whitePlayerName.setState(Highlighted);
					buttonHovered = true;
				}
			}
			if (blackPlayerSelected == AIType) {
				if (blackLevelOneButton.containsMousePos(v) && blackLevel != 1) {
					blackLevelOneButton.setState(Highlighted);
					buttonHovered = true;
				} else if (blackLevelTwoButton.containsMousePos(v) && blackLevel != 2) {
					blackLevelTwoButton.setState(Highlighted);
					buttonHovered = true;
				} else if (blackLevelThreeButton.containsMousePos(v) && blackLevel != 3) {
					blackLevelThreeButton.setState(Highlighted);
					buttonHovered = true;
				} else if (blackLevelFourButton.containsMousePos(v) && blackLevel != 4) {
					blackLevelFourButton.setState(Highlighted);
					buttonHovered = true;
				} else if (blackLevelFiveButton.containsMousePos(v) && blackLevel != 5) {
					blackLevelFiveButton.setState(Highlighted);
					buttonHovered = true;
				}
			} else {
				if (blackPlayerName.containsMousePos(v) && blackPlayerName.getState() != Selected) {
					blackPlayerName.setState(Highlighted);
					buttonHovered = true;
				}
			}
			if (playButton.containsMousePos(v)) {
				playButton.setState(Highlighted);
				buttonHovered = true;
			} else if (mainMenuButton.containsMousePos(v)) {
				mainMenuButton.setState(Highlighted);
				buttonHovered = true;
			}
			if (!buttonHovered) {
				// If nothing hovered
				clearButtonHighlights();
			}
		}
		else if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) {
			whitePlayerName.setState(Normal);
			blackPlayerName.setState(Normal);
			if (whiteHumanButton.containsMousePos(v) && whitePlayerSelected != HumanType) {
				// Select white human
				changePlayerType(HumanType, White);
			} else if (blackHumanButton.containsMousePos(v) && blackPlayerSelected != HumanType) {
				// Select black human
				changePlayerType(HumanType, Black);
			} else if (whiteAIButton.containsMousePos(v) && whitePlayerSelected != AIType) {
				// Select white AI
				changePlayerType(AIType, White);
			} else if (blackAIButton.containsMousePos(v) && blackPlayerSelected != AIType) {
				// Select black AI
				changePlayerType(AIType, Black);
			}
			if (whitePlayerSelected == AIType) {
				if (whiteLevelOneButton.containsMousePos(v) && whiteLevel != 1) {
					whiteLevel = 1;
					selectLevel(&whiteLevelOneButton, White);
				} else if (whiteLevelTwoButton.containsMousePos(v) && whiteLevel != 2) {
					whiteLevel = 2;
					selectLevel(&whiteLevelTwoButton, White);
				} else if (whiteLevelThreeButton.containsMousePos(v) && whiteLevel != 3) {
					whiteLevel = 3;
					selectLevel(&whiteLevelThreeButton, White);
				} else if (whiteLevelFourButton.containsMousePos(v) && whiteLevel != 4) {
					whiteLevel = 4;
					selectLevel(&whiteLevelFourButton, White);
				} else if (whiteLevelFiveButton.containsMousePos(v) && whiteLevel != 5) {
					whiteLevel = 5;
					selectLevel(&whiteLevelFiveButton, White);
				}
			} else {
				if (whiteNameText.containsMousePos(v) || whitePlayerName.containsMousePos(v)) {
					whitePlayerName.setState(Selected);
					blackPlayerName.setState(Normal);
				}
			}
			if (blackPlayerSelected == AIType) {
				if (blackLevelOneButton.containsMousePos(v) && blackLevel != 1) {
					blackLevel = 1;
					selectLevel(&blackLevelOneButton, Black);
				} else if (blackLevelTwoButton.containsMousePos(v) && blackLevel != 2) {
					blackLevel = 2;
					selectLevel(&blackLevelTwoButton, Black);
				} else if (blackLevelThreeButton.containsMousePos(v) && blackLevel != 3) {
					blackLevel = 3;
					selectLevel(&blackLevelThreeButton, Black);
				} else if (blackLevelFourButton.containsMousePos(v) && blackLevel != 4) {
					blackLevel = 4;
					selectLevel(&blackLevelFourButton, Black);
				} else if (blackLevelFiveButton.containsMousePos(v) && blackLevel != 5) {
					blackLevel = 5;
					selectLevel(&blackLevelFiveButton, Black);
				}
			} else {
				if (blackNameText.containsMousePos(v) || blackPlayerName.containsMousePos(v)) {
					blackPlayerName.setState(Selected);
					whitePlayerName.setState(Normal);
				}
			}
			if (playButton.containsMousePos(v)) {
				createGame();
				return 2; // Goes to gamescreen
			} else if (mainMenuButton.containsMousePos(v)) {
				return 0;
			}
			return 1;
		}
		else if (event.type == sf::Event::TextEntered) {
			if (whitePlayerName.getState() == Selected) {
				if (event.key.code == 8) {
					if (whiteNameString.getSize() > 0) {
						whiteNameString.erase(whiteNameString.getSize() - 1);
					}
				}
				else if (event.key.code == 10) {
					whitePlayerName.setState(Normal);
				}
				else if (event.text.unicode < 128) {
					whiteNameString.insert(whiteNameString.getSize(), event.text.unicode);
				}
				whitePlayerName.setString(whiteNameString);
			}
			else if (blackPlayerName.getState() == Selected) {
				if (event.key.code == 8) {
					if (blackNameString.getSize() > 0) {
						blackNameString.erase(blackNameString.getSize() - 1);
					}
				}
				else if (event.key.code == 10) {
					blackPlayerName.setState(Normal);
				}
				else if (event.text.unicode < 128) {
					blackNameString.insert(blackNameString.getSize(), event.text.unicode);
				}
				blackPlayerName.setString(blackNameString);
			}
		}
		else if (event.type == sf::Event::Closed) {
			window.close();
			return -1;
		}
	}
	return 1;
}