Пример #1
0
void GameEventManager::Choices(Player*pPlayer)
{
	char choice;
	cout <<"You find a ladder leading up to a hatch."<<endl;
	cout <<"You climb it"<<endl;
	system("pause");
	cout <<"\nAt the top there are two doors"<<endl;
	cout <<"The one has exit above it"<<endl;
	cout <<"The other has COMMUNICATIONS above it"<<endl;
	cout <<"You have a choice." <<endl;
	cout <<"Use it to call the army."<<endl;
	cout <<"Do nothing, and use the P.A to call the Caretaker"<<endl;
	cout <<"Escape through the door, into armageddon"<<endl;
	system("pause");
	cout <<"\n\nWhat are you?"<<endl;
	cout <<"A Hero? Tell the army to burn the place to the ground?"<<endl;
	cout <<"A Villain? Call up the Caretaker and make a deal?"<<endl;
	cout <<"A Survivot? Escape through the door?"<<endl;
	cout <<"\t1 - Hero?"<<endl;
	cout <<"\t2 - Villain?"<<endl;
	cout <<"\t3 - Survivor?"<<endl;
	do{
		cin>>choice;
	}while(choice !='1' && choice!='2' && choice!='3');

	switch(choice)
	{
	case '1':
		Hero();
		break;
	case '2':
		Villain();
		break;
	case '3':
		Survivor();
		break;
	}
	*m_GameOver = true;
}
Пример #2
0
GameController::GameController(sf::RenderWindow &window)
{
    w=&window;
    view.reset(sf::FloatRect(0,0,SCREEN_W,SCREEN_H));
    HtH a(300,sf::FloatRect(10,10,0,FLOOR_Y),1,1);
    hero=Hero(0,sf::FloatRect(0,FLOOR_Y-200,100,100),sf::Vector2f(0,0),100, a, 3,0);

    int obsID=200;
    int i=0;
    obstacleTab[i]=Obstacle(obsID+i, sf::FloatRect(0,FLOOR_Y,FLOOR_LENGTH,10), 0);
    obstacleTab[i++].setDestructible(false);

    obstacleTab[i]=Obstacle(obsID+i, sf::FloatRect(200,FLOOR_Y-100,200,10), 0);
    obstacleTab[i++].setDestructible(false);

    obstacleTab[i]=Obstacle(obsID+i, sf::FloatRect(400,FLOOR_Y-200,200,10), 0);
    obstacleTab[i++].setDestructible(false);

    obstacleTab[i]=Obstacle(obsID+i, sf::FloatRect(200,FLOOR_Y-300,200,10), 0);
    obstacleTab[i++].setDestructible(false);

    obstacleTab[i]=Obstacle(obsID+i, sf::FloatRect(500,FLOOR_Y-400,500,10), 0);
    obstacleTab[i++].setDestructible(false);
}
Пример #3
0
int main(int argc, char* args[])
{
	srand(time(NULL));
	Graphics grafika; //создаём экземпляр класса, отвечающего за инициализацию СДЛ
	grafika.instal_sdl(); //инициализируем СДЛ
	 
	hero Hero(10, 5, 90, IMG_LoadTexture(ren, "image/battlecity_playerA1.png"), tank_H, tank_W, 90, 100); //создаём персонажа, конструктор вида  (health, speed,anlge, texture, heigh, weight, x,y)

	int number = 4; //число танков противника

	//инициализируем БГ
	SDL_Texture *backgroundT = IMG_LoadTexture(ren, "image/background.png");
	SDL_Rect background;
	background.x = 0;   //Смещение полотна по Х
	background.y = 0;   //Смещение полотна по Y
	background.w = X_disp; //Ширина полотна
	background.h = Y_disp; //Высота полотна
	SDL_RenderClear(ren); //Очистка рендера
	SDL_RenderCopy(ren, backgroundT, NULL, &background); //отправляем в буффер
	//

	SDL_RenderPresent(ren);

	t.push_back(&Hero); //добавляем героя
	
	int j; 
	for (j=0; j<number; j++) //создаём и добавляем в лист танков противников, тестовая версия с рандомными координатами, конструктор такой же
		t.push_back(new bottanks(10, 20, (rand() % 4)*90, IMG_LoadTexture(ren,"image/battlecity_enemy1.png"), tank_H, tank_W, rand() % 500+100, rand() % 200+100));

	for (j=0; j<5; j++) //создаём и добавляем текстуры
		tex.push_back(new StaticTextures(13, IMG_LoadTexture(ren,"image/block_9.png"), text_H,text_W, rand() % 500+100, rand() % 200+100));

	//создаём объекты для обработки событий
	const Uint8 *keyboardState = SDL_GetKeyboardState(NULL);
	SDL_Event event;
	bool quit = false;
	//


	while(!quit) //бесконечный цикл обработки событий
	{
		SDL_RenderClear(ren); //очищаем буфер
		SDL_RenderCopy(ren, backgroundT, NULL, &background); //отправляем фон

		//захват и сдвиг очериди событий
		SDL_PollEvent(&event); 
		SDL_PumpEvents(); 
		//

		//player 
		if(event.type == SDL_QUIT) 
			exit(-1); 
		//считываем клавиатуру и подаем команду танку игрока
		// добавил else, чтобы не ездили по диагонале 
		if((keyboardState[SDL_SCANCODE_UP]))   
			Hero.moveTo('u');		
		else
			if((keyboardState[SDL_SCANCODE_DOWN]))
				Hero.moveTo('d');
			else
				if((keyboardState[SDL_SCANCODE_LEFT]))
					Hero.moveTo('l');
				else
					if((keyboardState[SDL_SCANCODE_RIGHT]))
						Hero.moveTo('r');

		if((keyboardState[SDL_SCANCODE_SPACE]))
			Hero.moveTo('f');
		//
		///

		//пробегаем по списку танков, куда входит и герой. У разных классов своя функция  draw 
		list<tanks*>::iterator k;
		for(list<tanks*>::iterator i=t.begin(); i!=t.end(); i++)
		{
			(*i)->Draw();
			if((*i)->am_i_dead())  // проверка на смерть танка
			{ 
				k=i;  
				k++;
				t.erase(i);
				i=k;
				i--;
			}
		}
		//пробегаем по текстурам
		list<StaticTextures*>::iterator m;
		for(list<StaticTextures*>::iterator i=tex.begin(); i!=tex.end(); i++)
		{
			(*i)->Draw();
			if((*i)->am_i_dead())  // проверка на удаление текстуры
			{ 
				m=i;  
				m++;
				tex.erase(i);
				i=m;
				i--;
			}
		}
		//
		//пробегаем по всем пулям
		list<bullets*>::iterator j;
		for(list<bullets*>::iterator i=b.begin(); i!=b.end(); i++)
		{

			(*i)->Draw(); //функция отрисовки (сичтает смещение и подаёт в буфер)
			if((*i)->dead_check() || (*i)->strike())  // проверка на вылет за экран и на попадание в объект(пока что танки)
			{ 
				j=i;  
				j++;
				b.erase(i);
				i=j;
				i--;
			}			 
		}
		//
		Sleep(100); //спим
		SDL_RenderPresent(ren); //вывод на экран
	}
	SDL_RenderClear(ren); //Очистка рендера

	// завершение работы
	t.clear();
	b.clear();
	tex.clear();
	SDL_DestroyRenderer(ren);
	SDL_DestroyWindow(grafika.win);
	SDL_Quit();

	return 0;
}
Пример #4
0
int main() { 
  std::vector<Hero> heroes;

  heroes.push_back(Hero("Achilles"   ,  1, 58));
  heroes.push_back(Hero("Bellerophon",513,327));
  heroes.push_back(Hero("Cadmus"     , 27,815));
  heroes.push_back(Hero("Cecrops"    ,234,  3));
  heroes.push_back(Hero("Pollux"     ,242,507));
  heroes.push_back(Hero("Hektor"     , 59, 22));
  heroes.push_back(Hero("Diomedes"   , 62,  7));
  heroes.push_back(Hero("Herakles"   ,270, 31));
  heroes.push_back(Hero("Odysseus"   , 84,910));
  heroes.push_back(Hero("Palamedes"  ,192, 73));
  heroes.push_back(Hero("Perseus"    ,128,636));
  heroes.push_back(Hero("Phoroneus"  , 35, 42));
  heroes.push_back(Hero("Prometheus" , 27, 99));
  heroes.push_back(Hero("Theseus"    ,  4,201));
  heroes.push_back(Hero("Triptolemos", 28, 90));

  std::cout << "\nThe Heroes:" << std::endl;
  for(std::vector<Hero>::iterator h = heroes.begin(); h != heroes.end(); ++h)
    h->print();

  std::sort(heroes.begin(), heroes.end(),
    [](const Hero& h1, const Hero& h2) -> bool {return h1.gold  < h2.gold ;});

  std::cout << "\nThe Heroes (sorted by wealth):" << std::endl;
  for(std::vector<Hero>::iterator h = heroes.begin(); h != heroes.end(); ++h)
    h->print();

  std::sort(heroes.begin(), heroes.end(),
    [](const Hero& h1, const Hero& h2) -> bool {return h1.honor < h2.honor;});

  std::cout << "\nThe Heroes (sorted by honor):" << std::endl;
  for(std::vector<Hero>::iterator h = heroes.begin(); h != heroes.end(); ++h)
    h->print();

  std::vector<Hero> heroes_copy1 = heroes;

  auto end = std::remove_if(std::begin(heroes_copy1), std::end(heroes_copy1),
    [](const Hero& hero) -> bool { return hero.gold < 100u; });
  heroes_copy1.erase(end, std::end(heroes_copy1));

  std::cout << "\nRich Heroes:" << std::endl;
  for(std::vector<Hero>::iterator h = heroes_copy1.begin(); h != heroes_copy1.end(); ++h)
    h->print();

  std::vector<Hero> heroes_copy2 = heroes;

  end = std::remove_if(std::begin(heroes_copy2), std::end(heroes_copy2),
    [](const Hero& hero) { return hero.honor > 50u; }); // lambda return type if effectively auto -- so bool is deduced in this case
  heroes_copy2.erase(end, std::end(heroes_copy2));

  std::cout << "\nHeroes with shit for honor:" << std::endl;
  for(std::vector<Hero>::iterator h = heroes_copy2.begin(); h != heroes_copy2.end(); ++h)
    h->print();
}
Пример #5
0
int main() { 
  Hero hercules("Hercules", 0, 100);
  hercules.print();

  std::vector<Hero> heroes;

  heroes.push_back(Hero("Achilles"   ,  1, 58));
  heroes.push_back(Hero("Bellerophon",513,327));
  heroes.push_back(Hero("Cadmus"     , 27,815));
  heroes.push_back(Hero("Cecrops"    ,234,  3));
  heroes.push_back(Hero("Pollux"     ,242,507));
  heroes.push_back(Hero("Hektor"     , 59, 22));
  heroes.push_back(Hero("Diomedes"   , 62,  7));
  heroes.push_back(Hero("Herakles"   ,270, 31));
  heroes.push_back(Hero("Odysseus"   , 84,910));
  heroes.push_back(Hero("Palamedes"  ,192, 73));
  heroes.push_back(Hero("Perseus"    ,128,636));
  heroes.push_back(Hero("Phoroneus"  , 35, 42));
  heroes.push_back(Hero("Prometheus" , 27, 99));
  heroes.push_back(Hero("Theseus"    ,  4,201));
  heroes.push_back(Hero("Triptolemos", 28, 90));

  std::cout << "\nThe Heroes:" << std::endl;
  for(std::vector<Hero>::iterator h = heroes.begin(); h != heroes.end(); ++h)
    h->print();

  std::sort(heroes.begin(), heroes.end(), has_more_gold);

  std::cout << "\nThe Heroes (sorted by wealth):" << std::endl;
  for(std::vector<Hero>::iterator h = heroes.begin(); h != heroes.end(); ++h)
    h->print();

  std::sort(heroes.begin(), heroes.end(), has_more_honor);

  std::cout << "\nThe Heroes (sorted by honor):" << std::endl;
  for(std::vector<Hero>::iterator h = heroes.begin(); h != heroes.end(); ++h)
    h->print();

  std::vector<Hero> heroes_copy1 = heroes;

  std::vector<Hero>::iterator end = std::remove_if(heroes_copy1.begin(), heroes_copy1.end(), HasLessGoldThan(100));
  heroes_copy1.erase(end, heroes_copy1.end()); // this will delete the remaining elements

  std::cout << "\nRich Heroes:" << std::endl;
  for(std::vector<Hero>::iterator h = heroes_copy1.begin(); h != heroes_copy1.end(); ++h)
    h->print();

  std::vector<Hero> heroes_copy2 = heroes;

  end = std::remove_if(heroes_copy2.begin(), heroes_copy2.end(), HasMoreHonorThan(50));
  heroes_copy2.erase(end, heroes_copy2.end()); // this will delete the remaining elements

  std::cout << "\nHeroes with shit for honor:" << std::endl;
  for(std::vector<Hero>::iterator h = heroes_copy2.begin(); h != heroes_copy2.end(); ++h)
    h->print();
}
Пример #6
0
void Shooting::addHero()
{
	heros.push_back( Hero());
	systemData.addHero();
}