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; }
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); }
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; }
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(); }
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(); }
void Shooting::addHero() { heros.push_back( Hero()); systemData.addHero(); }