static VALUE RenderWindow_set_view(VALUE vSelf, VALUE vView) { // Get C++ object pointer from vSelf RenderWindow *pSelf; Data_Get_Struct(vSelf, RenderWindow, pSelf); View *pView; Data_Get_Struct(vView, View, pView); pSelf->SetView(pView); return Qnil; }
int Game::Run(RenderWindow &win, VideoMode &vMode) { lua_State *luaState = luaL_newstate(); luaL_openlibs(luaState); luabind::open(luaState); Map map; Player player(luaState, e_player,0);// 0 should be loaded from file player.RegisterClassToLua(); battle_system battle; Object *object; object = new Object(luaState); Event Event; NPC npc(e_npc_random, luaState, -1); npc.SetPosition(200,200); bool collisionUp = false; bool collisionDown = false; bool collisionLeft = false; bool collisionRight = false; bool change = true; bool running = false; bool gameOver = false; bool load = false; bool load2 = false; Image gameOverImg; gameOverImg.LoadFromFile("../data/Images//presents.png"); Sprite gameOverSp(gameOverImg); vector<string> mapList; vector<string> objectList; mapList.push_back("..\\data\\Levels\\Map1.txt"); mapList.push_back("..\\data\\Levels\\Map2.txt"); mapList.push_back("..\\data\\Levels\\Map3.txt"); mapList.push_back("..\\data\\Levels\\Map2.txt"); mapList.push_back("..\\data\\Levels\\Map1.txt"); mapList.push_back("..\\data\\Levels\\Map2.txt"); mapList.push_back("..\\data\\Levels\\Map3.txt"); mapList.push_back("..\\data\\Levels\\Map3.txt"); mapList.push_back("..\\data\\Levels\\Map1.txt"); mapList.push_back("..\\data\\Levels\\Map2.txt"); objectList.push_back("..\\data\\Levels\\Object1.txt"); objectList.push_back("..\\data\\Levels\\Object2.txt"); objectList.push_back("..\\data\\Levels\\Object3.txt"); objectList.push_back("..\\data\\Levels\\Object4.txt"); objectList.push_back("..\\data\\Levels\\Object5.txt"); objectList.push_back("..\\data\\Levels\\Object6.txt"); objectList.push_back("..\\data\\Levels\\Object7.txt"); objectList.push_back("..\\data\\Levels\\Object8.txt"); objectList.push_back("..\\data\\Levels\\Object9.txt"); objectList.push_back("..\\data\\Levels\\Object10.txt"); string level = mapList[0];//Load from file string levelObject = objectList[0]; HUD hud; Enemy enemy; while(win.IsOpened()) { while(win.GetEvent(Event)) { if(Event.Type == Event::Closed) { win.Close(); } } if(win.GetInput().IsKeyDown(Key::Space)) { level = mapList[1]; change = true; load2 = true; if(!object->LoadObjects(vMode, &win, levelObject, &player, luaState)) { win.Close(); } } if(!win.GetInput().IsKeyDown(Key::Space) && load2 == true) { load2 = false; change = false; } if(win.GetInput().IsKeyDown(Key::T)) { player.RunGoldScript(); } if(win.GetInput().IsKeyDown(Key::LShift)) { level = mapList[0]; change = true; load = true; player.ChangeMap(0); /*if(!map.LoadMap(vMode, &win, "..\\data\\Levels\\Map1.txt")) { win.Close(); }*/ if(!object->LoadObjects(vMode, &win, "..\\data\\Levels\\Object1.txt", &player, luaState)) { win.Close(); } } if(!win.GetInput().IsKeyDown(Key::LShift) && load == true) { load = false; change = false; } if(!object->IsDisabled()) { if(win.GetInput().IsKeyDown(Key::Up)&& !win.GetInput().IsKeyDown(Key::Left) && !win.GetInput().IsKeyDown(Key::Right)) { if(object->HasCollidedWithObject(player, &win) == exitsensor) { cout<<"collided"<<object->GetCollidedExitSensor(player)->GetDestinationID(); if(object->GetCollidedExitSensor(player)->GetDestinationID() == 1) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 2) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 3) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 4) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 5) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 7) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 8) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 9) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 10) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } } else { if(object->HasCollidedWithObject(player, &win) == -1 ) { player.MoveUp(&win); if(player.GetView().GetCenter().y - player.GetView().GetHalfSize().y > -160) { hud.MoveUp(&win); } } else { player.SetPosition(player.GetSprite().GetPosition().x , player.GetSprite().GetPosition().y + 10); } } } if(win.GetInput().IsKeyDown(Key::Down)&& !win.GetInput().IsKeyDown(Key::Left) && !win.GetInput().IsKeyDown(Key::Right)) { if(player.GetSprite().GetPosition().y + player.GetSprite().GetSize().y<600) { if(object->HasCollidedWithObject(player, &win) == exitsensor) { cout<<"collided"<<object->GetCollidedExitSensor(player)->GetDestinationID(); if(object->GetCollidedExitSensor(player)->GetDestinationID() == 1) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 2) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 3) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 4) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 5) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 7) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 8) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 9) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } else if(object->GetCollidedExitSensor(player)->GetDestinationID() == 110) { cout<<"dest:"; if(object->GetCollidedExitSensor(player)->IsObjectiveComplete()) { cout<<"Exit"; level = mapList[object->GetCollidedExitSensor(player)->GetDestinationID()]; levelObject = objectList[object->GetCollidedExitSensor(player)->GetDestinationID()]; change = true; player.ChangeMap(object->GetCollidedExitSensor(player)->GetDestinationID()); object->ClearSensors(); } else { } } } else { if(object->HasCollidedWithObject(player, &win) == -1) { player.MoveDown(&win); if(player.GetView().GetCenter().y <= 300) { hud.MoveDown(&win); } } else { player.SetPosition(player.GetSprite().GetPosition().x , player.GetSprite().GetPosition().y - 10); } } } } if(win.GetInput().IsKeyDown(Key::Left) && !win.GetInput().IsKeyDown(Key::Up) && !win.GetInput().IsKeyDown(Key::Down)&& !win.GetInput().IsKeyDown(Key::Right)) { if(object->HasCollidedWithObject(player, &win) == -1) { player.MoveLeft(&win); } else { player.SetPosition(player.GetSprite().GetPosition().x + 10, player.GetSprite().GetPosition().y); } } if(win.GetInput().IsKeyDown(Key::Right)&& !win.GetInput().IsKeyDown(Key::Up) && !win.GetInput().IsKeyDown(Key::Down)&& !win.GetInput().IsKeyDown(Key::Left)) { if(object->HasCollidedWithObject(player, &win) == -1) { player.MoveRight(&win); } else { player.SetPosition(player.GetSprite().GetPosition().x - 10, player.GetSprite().GetPosition().y); } } } if(win.GetInput().IsKeyDown(Key::A)) { } if(object->HasCollidedWithObject(player, &win) == noncollectible) { if(player.m_up) player.SetPosition(player.GetSprite().GetPosition().x , player.GetSprite().GetPosition().y + 10); if(player.m_down) player.SetPosition(player.GetSprite().GetPosition().x , player.GetSprite().GetPosition().y - 10); if(player.m_right) player.SetPosition(player.GetSprite().GetPosition().x - 10, player.GetSprite().GetPosition().y); if(player.m_left) player.SetPosition(player.GetSprite().GetPosition().x + 10, player.GetSprite().GetPosition().y); } hud.Update(&player); object->Update(player); if(!object->IsBattling()) { win.Clear(); if(change) { if(!map.LoadMap(vMode, &win, level)) { win.Close(); } if(!object->LoadObjects(vMode, &win, levelObject, &player, luaState)) { win.Close(); } change = false; } map.RenderMap(vMode, &win); player.Draw(vMode, &win); if(object->RenderObjects(vMode, &win, &player, luaState) == false) return 0; hud.Draw(&win); } else { win.Clear(); NPC* npc; npc = object->GetCollidedNPC(); battle.Initialize((player.GetView().GetCenter().x-player.GetView().GetHalfSize().x),(player.GetView().GetCenter().y-player.GetView().GetHalfSize().y)); if(battle.Run(vMode, win, &enemy, player) == "Exits") { object->StopBattle(); } else if(battle.Run(vMode, win, &enemy, player) == "Player Win") { object->StopBattle(); object->RemoveNPC(object->GetCollidingIndex(), &win, &player); } else if(battle.Run(vMode, win, &enemy, player) == "Enemy Win") { object->StopBattle(); object->NotDisabled(); player.Default(); enemy.Default(); if(!map.LoadMap(vMode, &win, "..\\data\\Levels\\Map1.txt")) { win.Close(); } if(!object->LoadObjects(vMode, &win, "..\\data\\Levels\\Object1.txt", &player, luaState)) { win.Close(); } } player.SetView(400,300); } object->DrawCommentSystem(); win.SetView(player.GetView()); win.Display(); } lua_close(luaState); return -1; }
int Game::Run(RenderWindow &win, VideoMode &vMode) { Music m; SoundBuffer playerShootBuffer; SoundBuffer meteorBuffer; meteorBuffer.LoadFromFile("..\\Resources\\meteorexplosion.ogg"); playerShootBuffer.LoadFromFile("..\\Resources\\playerShoot.ogg"); Sound playerSound; Sound meteorSound; meteorSound.SetBuffer(meteorBuffer); playerSound.SetBuffer(playerShootBuffer); playerSound.SetLoop(false); meteorSound.SetLoop(false); m.OpenFromFile("..\\Resources\\asteroid.ogg"); m.SetLoop(true); m.SetVolume(100); PlayerShip ship(player_ship, 2, vMode); EnemyShip enemy(enemy_ship, vMode); Collision col; Event events; Image bg1; Image bg2; Image bg3; bg1.LoadFromFile("..\\Resources\\bg.jpg"); Image stars; string abc = "..\\Resources\\star.png"; stars.LoadFromFile(abc); Sprite sp(bg1); Sprite sp2(bg1); Sprite sp3(bg1); Sprite spStar[10]; Clock clock; srand((unsigned)time(0)); for(int i = 0; i<10; i++) { spStar[i].SetImage(stars); //spStar[i].SetPosition } spStar[0].SetPosition(0,100); spStar[1].SetPosition(70,200); spStar[2].SetPosition(200,300); spStar[3].SetPosition(320,400); spStar[4].SetPosition(460,500); spStar[5].SetPosition(260,300); spStar[6].SetPosition(160,400); spStar[7].SetPosition(400,200); spStar[8].SetPosition(760,100); spStar[9].SetPosition(800,600); int lowestx, highestx, lowesty, highesty, rangex, rangey, random_integerx, random_integery; float time1 = 0; float time2 = 0; bool start = false; //Sprite spStar1(stars); //spStar1.SetPosition(spStar.GetPosition().x, spStar.GetPosition().y - spStar.GetSize().y); sp.Resize((float)vMode.Width, (float)vMode.Height); sp2.Resize((float)vMode.Width, (float)vMode.Height); sp2.SetPosition(sp.GetPosition().x, sp.GetPosition().y - sp.GetSize().y); sp3.SetPosition(sp2.GetPosition().x, sp2.GetPosition().y - sp2.GetSize().y); //spStar.Resize((float)vMode.Width, (float)vMode.Height); bool key = false; bool down = false; Bullet *bul; Meteor* met[METEORCOUNT]; for(int i = 0; i<METEORCOUNT; i++) { met[i] = new Meteor(meteor, vMode); } met[0]->SetPosition(200,-400); met[1]->SetPosition(420,-200); met[2]->SetPosition(720,-400); met[3]->SetPosition(520,-600); met[4]->SetPosition(320,-400); /*met[5]->SetPosition(620,-400); met[6]->SetPosition(100,-400); */ int bulletCount = 0; vector<Bullet*> bulletVector; vector<Meteor*> meteorVector; for(int i = 0; i<METEORCOUNT; i++) { meteorVector.push_back(met[i]); } bool fired = false; bool pressed = false; int count; bool change = false; //win.UseVerticalSync(true); //win.SetFramerateLimit(60); int type = pistol; Image sunImg; sunImg.LoadFromFile("..\\Resources\\Sun.png"); Sprite sunSp(sunImg); sunSp.SetPosition(500,2000); //void* user; //int score = 0; // enemys e(vMode); //Thread thread(Thread::FuncType Move,void* enemy, void* &win, void* ship); m.Play(); while(win.IsOpened()) { while(win.GetEvent(events)) { if(events.Type == Event::Closed) { win.Close(); return -1; } if((events.Type == Event::KeyPressed) && (events.Key.Code == Key::Escape)) { return 0; } if(ship.IsDestroyed() && ((events.Type == Event::KeyPressed) && (events.Key.Code == Key::Return))) { return 0; } } if(win.GetInput().IsKeyDown(Key::Up) && !ship.IsDestroyed()) { ship.Throttled(); } if(!win.GetInput().IsKeyDown(Key::Up)&& !ship.IsDestroyed()) { ship.NoThrottle(); key = false; } if(!win.GetInput().IsKeyDown(Key::Right) && !win.GetInput().IsKeyDown(Key::Up) && !ship.IsDestroyed()) { ship.NoThrottle(); } if(!win.GetInput().IsKeyDown(Key::Left)&& !win.GetInput().IsKeyDown(Key::Up) && !ship.IsDestroyed()) { ship.NoThrottle(); } if(win.GetInput().IsKeyDown(Key::Right) && !ship.IsDestroyed()) { ship.Right(); if(ship.GetPositionX()<=vMode.Width) { //ship.SetSpeed(100); ship.AddVelocity(300,0); ship.MoveSide(win.GetFrameTime()); } } if(win.GetInput().IsKeyDown(Key::Left) && !ship.IsDestroyed()) { ship.Left(); if(ship.GetPositionX()>=0) { ship.AddVelocity(-300,0); //ship.SetSpeed(-100); ship.MoveSide(win.GetFrameTime()); } } if(win.GetInput().IsKeyDown(Key::LShift)) { ship.TellDestroyed(); //ship.Destroyed(); //win.Close(); } if(win.GetInput().IsKeyDown(Key::B)) { } if(win.GetInput().IsKeyDown(Key::Space) && !ship.IsDestroyed()&&!pressed) { playerSound.Play(); bul = new Bullet(bullets, vMode, &ship, type); //bul->ChangeType(type); //bul->ChangeType(pistol); bulletVector.push_back(bul); count = bulletVector.size(); //cout<<count; pressed = true; } if(!win.GetInput().IsKeyDown(Key::Space)) { pressed = false; } if(win.GetInput().IsKeyDown(Key::N)) { type = laser; for(int i = 0; i< METEORCOUNT; i++) { met[i]->SetDestroyed(); } } win.Clear(); ship.MoveUp(win.GetFrameTime()); if(enemy.GetPositionY()>ship.GetPositionY()-500) { enemy.MoveUp(&win, ship); //enemy.NavigatorUp(&win, ship); } //ship.Simulate(win.GetFrameTime(), key, down); for(int i = 0; i<10; i++) { if(spStar[i].GetPosition().y>ship.GetPositionY() + 50) { lowesty=(int)ship.GetPositionY(), highesty=(int)ship.GetPositionY()-600; rangey=(highesty-lowesty)+1; random_integery; random_integery = lowesty+int(rangey*rand()/(RAND_MAX + 1.0)); //cout << random_integery << endl; lowestx=0, highestx=800; rangex=(highestx-lowestx)+1; random_integerx; random_integerx = lowestx+int(rangex*rand()/(RAND_MAX + 1.0)); //cout << random_integerx << endl; spStar[i].SetPosition((float)random_integerx, (float)random_integery); } } for(int i = 0; i<METEORCOUNT; i++) { if(ship.GetPositionY()<=-2000)//Score compare { met[i]->ChangeSpeed(); } met[i]->Update(win.GetFrameTime()); if(met[i]->GetPositionY()>ship.GetPositionY() + 50) { lowesty=(int)ship.GetPositionY() - 600, highesty=(int)ship.GetPositionY()-1200; rangey=(highesty-lowesty)+1; random_integery; random_integery = lowesty+int(rangey*rand()/(RAND_MAX + 1.0)); //cout << random_integery << endl; lowestx=0, highestx=720; rangex=(highestx-lowestx)+1; random_integerx; random_integerx = lowestx+int(rangex*rand()/(RAND_MAX + 1.0)); // cout << random_integerx << endl; if(met[i]->IsDestroyed()) { met[i]->SetAlive(); } met[i]->SetPosition(random_integerx, random_integery); if(!ship.IsDestroyed()) { ship.IncreaseScore(); ship.UpdateScore(); } } met[i]->UpdateAI(); } if(enemy.IsFired()) { if(col.PixelPerfectTest(enemy.GetBullet(), ship.GetSprite())) { //ship.TellDestroyed(); ship.DecreaseHealth(); if(ship.GetHealth()<=0) { ship.TellDestroyed(); } enemy.BulletReset(); enemy.NotAttacking(); } } if(!meteorVector.empty()) { for(int i = 0; i<METEORCOUNT; i++) { if(col.CircleTest(enemy.GetBullet(), meteorVector[i]->GetSprite())) { //win.Close(); //ship.TellDestroyed(); met[i]->SetDestroyed(); meteorSound.Play(); enemy.BulletReset(); } if(col.CircleTest(ship.GetSprite(), meteorVector[i]->GetSprite())) { //win.Close(); ship.TellDestroyed(); met[i]->SetDestroyed(); } if(col.CircleTest(ship.GetSprite(), sunSp)) { //win.Close(); ship.TellDestroyed(); //met[i]->SetDestroyed(); } if(col.PixelPerfectTest(enemy.GetSprite(), meteorVector[i]->GetSprite())) { //win.Close(); enemy.DecreaseHealth(10); met[i]->SetDestroyed(); meteorSound.Play(); } if(col.PixelPerfectTest(enemy.GetSprite(), sunSp)) { //win.Close(); enemy.DecreaseHealth(20); //met[i]->SetDestroyed(); } // if(col.PixelPerfectTest(meteorVector[i]->GetSprite(), enemy.GetNavigator2())||(col.PixelPerfectTest(meteorVector[i]->GetSprite(), enemy.GetNavigator3())||(col.PixelPerfectTest(sunSp, enemy.GetNavigator3()) ))) { //win.Close(); enemy.MoveLeft(1, &win, ship); } else if(col.PixelPerfectTest(meteorVector[i]->GetSprite(), enemy.GetNavigator1())||(col.PixelPerfectTest(meteorVector[i]->GetSprite(), enemy.GetNavigator4())||(col.PixelPerfectTest(sunSp, enemy.GetNavigator4()) ))) { //win.Close(); enemy.MoveRight(&win, ship); } else { enemy.Attacking(); enemy.UpdatePlayerPosition(ship.GetSprite().GetPosition(), &win); } if(!bulletVector.empty()) { for(int j = 0; j< (int)bulletVector.size(); j++) { //if((bulletVector[j]->GetSprite().GetPosition().x >= meteorVector[i]->GetSprite().GetPosition().x && bulletVector[j]->GetSprite().GetPosition().x < meteorVector[i]->GetSprite().GetPosition().x +meteorVector[i]->GetSprite().GetSize().x ) && (bulletVector[j]->GetSprite().GetPosition().y >= meteorVector[i]->GetSprite().GetPosition().y && bulletVector[j]->GetSprite().GetPosition().y < meteorVector[i]->GetSprite().GetPosition().y + meteorVector[i]->GetSprite().GetSize().x)) //{ // //win.Close(); // bulletVector[j]->Hit(); // meteorVector[i]->SetDestroyed(); // delete bulletVector[j]; // bulletVector.erase(bulletVector.begin() + j); //} if(col.PixelPerfectTest(enemy.GetBullet(), ship.GetSprite())) { //ship.TellDestroyed(); /*ship.DecreaseHealth(); if(ship.GetHealth()<=0) { ship.TellDestroyed(); }*/ } if(col.PixelPerfectTest(bulletVector[j]->GetSprite(), enemy.GetSprite())) { enemy.DecreaseHealth(); meteorSound.Play(); bulletVector[j]->Hit(); delete bulletVector[j]; bulletVector.erase(bulletVector.begin() + j); } else if(col.PixelPerfectTest(bulletVector[j]->GetSprite(), meteorVector[i]->GetSprite())) { bulletVector[j]->Hit(); meteorVector[i]->SetDestroyed(); meteorSound.Play(); delete bulletVector[j]; bulletVector.erase(bulletVector.begin() + j); } //if(col.BoundingBoxTest(bulletVector[j]->GetBulletSprite(), meteorVector[i]->GetSprite()))//collision condition should be checked here bullet and other ships //{ // cout<<i<<"T"; // cout<<j<<"T"; // win.Close(); // bulletVector[j]->Hit(); //} } } } } ship.UpdateAI(); if(enemy.GetPositionY()>ship.GetPositionY()-700) enemy.UpdateAI(); if(enemy.IsDestroyed()) { lowestx=200, highestx=620; rangex=(highestx-lowestx)+1; random_integerx; random_integerx = lowestx+int(rangex*rand()/(RAND_MAX + 1.0)); enemy.EnemyReset(random_integerx, ship); if(!ship.IsDestroyed()) { ship.IncreaseScore(10); ship.UpdateScore(); } } //win.Draw(sp); //win.Draw(sp2); //win.Draw(sp3); ship.UpdateHealth(); Drawing drawing; drawing.win = &win; drawing.ship = &ship; drawing.enemy = &enemy; drawing.Bulletvectors = bulletVector; drawing.MeteorCounts = METEORCOUNT; for(int i = 0; i<5; i++) drawing.met[i] = met[i]; win.Draw(sunSp); for(int i = 0; i< 10; i++) win.Draw(spStar[i]); //win.Draw(spStar1); //ship.UpdateScore(); // DrawingTHread(drawing); ship.Draw(&win); //score.SetPosition(100,100); //win.Draw(score); if(enemy.GetPositionY()>ship.GetPositionY()-700) enemy.Draw(&win, ship); for(int i = 0; i<METEORCOUNT; i++) { met[i]->Draw(&win); } if(!bulletVector.empty()) { for(int i = 0; i<(int)bulletVector.size();i++) { //d.Bulletvectors[i]->ChangeType(type); bulletVector[i]->Fired(); bulletVector[i]->Draw(&win, &ship); bulletVector[i]->UpdateBullet(win.GetFrameTime()); bulletVector[i]->UpdateAI(); //if(d.Bulletvectors[i]->GetPositiony()<=ship.GetPositionY()-500) win.Close(); if(bulletVector[i]->GetPositiony()<ship.GetPositionY()-600) { delete bulletVector[i]; bulletVector.erase(bulletVector.begin()+i); //count = d.Bulletvectors.size(); //cout<<count<<"\n"; } } } win.SetView(ship.GetView()); win.Display(); } return 1; }