void UpdateManager::EnemySpawn(int &counter, std::vector<Enemy> &vector, int &randomX) { if (counter >= 600) { randomX = (rand()%800)+1; Enemy enemyx; enemyx.SetPosition(randomX, - 35); vector.push_back(enemyx); counter = 0; } }
void Startup() { Initialise(screenWidth,screenHeight,false,screenTitle); srand(time(NULL)); player.SetSize(64, 64); player.spriteID = CreateSprite(playerSprite, player.width, player.height, true); player.SetPosition(300, 400); player.SetExtremes(0, screenWidth, screenHeight, 0); player.SetGameplayKeys('A', 'D', 'W', 'S'); enemy.SetSize(32, 32); enemy.spriteID = CreateSprite(enemySprite, enemy.width, enemy.height, true); enemy.SetPosition(200, 600); enemy.SetExtremes(0, screenWidth, screenHeight, 0); enemy2.SetSize(32, 32); enemy2.spriteID = CreateSprite(enemySprite, enemy.width, enemy.height, true); enemy2.SetPosition(400, 600); enemy2.SetExtremes(0, screenWidth, screenHeight, 0); }
//============================================================================================================= void Game::AddEnemy(int type, int height, int width, int track, int speed) { if( height > 3 || height < 1 ) return; DummyFramework::CSprite9* sprite; D3DXVECTOR2 position; Enemy* enemy; float h = (float)height; float d = GameVariables::PlayFieldHeight; float start = (GameVariables::ScreenHeight - d) * 0.5f; float tw; int cnt; // elöször meg kell tudni, hogy melyik grafika lesz switch( type ) { case 0: sprite = &atlas1["regular"]; break; case 1: sprite = &atlas1["worm"]; break; case 2: sprite = &atlas1["bomb"]; break; case 3: sprite = &atlas1["island"]; break; /* case 4: sprite = &atlas1["elite"]; break; */ case 5: sprite = &atlas1["razor"]; break; default: break; } // aztán kiszámolni a helyzetét float yspacing = (d - 3.0f * sprite->Size.y) / 4.0f; float xspacing = 20; if( track == 0 ) { position.y = start + yspacing + sprite->Size.y * 0.5f; yspacing = (4.0f - h) * yspacing + (3.0f - h) * sprite->Size.y; } else if( track == 1 ) { float center = start + d * 0.5f; position.y = center - (h - 1) * 0.5f * (sprite->Size.y + yspacing); } else if( track == 2 ) { position.y = GameVariables::ScreenHeight - start - yspacing - sprite->Size.y * 0.5f; yspacing = -((5 - h) * sprite->Size.y + (4 - h) * yspacing); } // és létrehozni a megfelelö származtatott objektumot switch( type ) { case 0: for( int i = 0; i < height; ++i ) { position.x = GameVariables::ScreenWidth + sprite->Size.x; for( int j = 0; j < width; ++j ) { enemy = new Enemy(); enemy->shoot.connect(this, &Game::enemy_shoot1); enemy->explode.connect(this, &Game::enemy_explode); enemy->dead.connect(this, &Game::enemy_dead); enemy->Initialize(*game); enemy->Image = sprite; enemy->Hurt = &atlas1["hurt"]; enemy->Speed = GameVariables::CorrelateW((float)speed); enemy->SetPosition(position); enemies.insert(enemy); position.x += (sprite->Size.x + xspacing); } position.y += (sprite->Size.y + yspacing); } break; case 1: position.x = GameVariables::ScreenWidth + sprite->Size.x; if( height > 1 ) { // egyik enemy = new Worm(width); ((Worm*)enemy)->Direction = 1.0f; enemy->explode.connect(this, &Game::enemy_explode); enemy->dead.connect(this, &Game::enemy_dead); enemy->Initialize(*game); enemy->Image = sprite; enemy->Hurt = &atlas1["hurt"]; enemy->Speed = GameVariables::CorrelateH((float)speed); enemy->SetPosition(position); enemies.insert(enemy); // másik enemy = new Worm(width); ((Worm*)enemy)->Direction = -1.0f; enemy->explode.connect(this, &Game::enemy_explode); enemy->dead.connect(this, &Game::enemy_dead); enemy->Initialize(*game); enemy->Image = sprite; enemy->Hurt = &atlas1["hurt"]; enemy->Speed = GameVariables::CorrelateH((float)speed); enemy->SetPosition(position); enemies.insert(enemy); } else { enemy = new Worm(width); ((Worm*)enemy)->Direction = ((track == 0) ? 1.0f : -1.0f); enemy->explode.connect(this, &Game::enemy_explode); enemy->dead.connect(this, &Game::enemy_dead); enemy->Initialize(*game); enemy->Image = sprite; enemy->Hurt = &atlas1["hurt"]; enemy->Speed = GameVariables::CorrelateH((float)speed); enemy->SetPosition(position); enemies.insert(enemy); } break; case 2: tw = width * sprite->Size.x + (width - 1) * xspacing; for( int i = 0; i < height; ++i ) { if( track == 0 ) cnt = (width - (i % 2)); else if( track == 1 ) cnt = (height == 3 ? (width - 1 + (i % 2)) : width); else if( track == 2 ) cnt = ((i + height) % 2 ? width : width - 1); position.x = GameVariables::ScreenWidth + sprite->Size.x + (tw - (cnt * sprite->Size.x + (cnt - 1) * xspacing)) * 0.5f; for( int j = 0; j < cnt; ++j ) { enemy = new Bomb(); ((Bomb*)enemy)->Highlight = &atlas1["highlight"]; enemy->explode.connect(this, &Game::enemy_explode); enemy->dead.connect(this, &Game::enemy_dead); enemy->Initialize(*game); enemy->Image = sprite; enemy->Hurt = &atlas1["hurt"]; enemy->Speed = GameVariables::CorrelateW((float)speed); enemy->SetPosition(position); enemies.insert(enemy); position.x += (sprite->Size.x + xspacing); } position.y += (sprite->Size.y + yspacing); } break; case 3: for( int i = 0; i < height; ++i ) { position.x = GameVariables::ScreenWidth + sprite->Size.x; for( int j = 0; j < width; ++j ) { enemy = new Island(); enemy->Initialize(*game); enemy->Image = sprite; enemy->Speed = GameVariables::CorrelateW((float)speed); enemy->SetPosition(position); enemies.insert(enemy); position.x += (sprite->Size.x + xspacing); } position.y += (sprite->Size.y + yspacing); } break; case 5: position.x = GameVariables::ScreenWidth + sprite->Size.x; position.y = start + yspacing + sprite->Size.y * 0.5f; enemy = new Razor(); enemy->shoot.connect(this, &Game::enemy_shoot2); enemy->explode.connect(this, &Game::enemy_explode); enemy->dead.connect(this, &Game::enemy_dead); enemy->Initialize(*game); enemy->Image = sprite; enemy->Hurt = &atlas1["hurt"]; enemy->Speed = GameVariables::CorrelateW((float)speed); enemy->SetPosition(position); enemies.insert(enemy); // 2 razornál több már szemétség lenne if( width + height > 2 ) { // picit messzebröl induljon, hogy láthato legyen hogy az kettö... position.x = GameVariables::ScreenWidth + sprite->Size.x * 3; position.y = GameVariables::ScreenHeight - start - yspacing - sprite->Size.y * 0.5f; enemy = new Razor(); enemy->shoot.connect(this, &Game::enemy_shoot2); enemy->explode.connect(this, &Game::enemy_explode); enemy->dead.connect(this, &Game::enemy_dead); enemy->Initialize(*game); enemy->Image = sprite; enemy->Hurt = &atlas1["hurt"]; enemy->Speed = GameVariables::CorrelateW((float)speed); enemy->SetPosition(position); enemies.insert(enemy); } break; default: break; } }
void GameInit() { player.SetPosition(300, 400); enemy2.SetPosition(400, 600); enemy.SetPosition(200, 600); }