//ensures no data left behind by enemies void cleanUp() { int index = -1; for(unsigned int i = 0; i < enemies.size(); i++) { index = i; deleteEnemies(index); } enemyCount = 0; }
//Controls how the enemies spaw on the screen void enemySpawn() { int index = -1; for(unsigned int i = 0; i < enemies.size(); i++) { enemies[i]->translate(enemies[i]->getX(), enemies[i]->getY() - 0.005f * deltaTime); if(enemies[i]->getY() < -7.5f) { index = i; deleteEnemies(index); } } }
HoldLine::~HoldLine(){ delete prot; delete quiver; delete trapBag; delete protect; delete protectItem; deleteTraps(); deleteTrees(); deleteBullets(); deleteEnemies(); deleteArrows(); }
/******************************************************************* enemyCollsion() Determines whether or not a player has collided with an enemy. ********************************************************************/ void enemyCollision() { int index = -1; int size = enemies.size(); for(unsigned int i = 0; i < enemies.size(); i++) { if((box.intersect(*player[0], *enemies[i]))) { enemies[i]->setColor(0.0f, 1.0f, 0.0f); if(player[0]->lifeBar >= -2.0f) player[0]->lifeBar -= 0.003f; else player[0]->isAlive = false; } if(player[0]->bulletCollision(*enemies[i])) { index = i; deleteEnemies(index); //update global killCount variable here, to advance the game with killCount++; //printf("Kill count is: %i", killCount); break; } } }
void theGame() { SDL_WM_SetCaption("WASD: Move, BACKSPACE: Start Screen, ENTER: Fullscreen", NULL); Sprite mew("testChar2.png", 32, 156, 0); //load mew and set R 32, G 156, B 0 to be transparent. Set width to 33 and height to 69 Tile *tiles[TOTAL_TILES]; Enemy *enemies[TOTAL_ENEMIES]; enemies[0] = new Enemy(225, 0, ENEMY_ROBOT); enemies[0]->setVelX(50); enemies[1] = new Enemy(225, 0, ENEMY_ROBOT); enemies[1]->setVelX(100); enemies[2] = new Enemy(225, 0, ENEMY_ANDROID); enemies[2]->setVelX(-75); bool playing = true; if(setTiles(tiles) == false) { cleanUp(); exit(0); } //game loop delta.start(); while(playing) { fps.start(); while(SDL_PollEvent(&event)) { mew.handle_input(); myWindow.handle_window(); handleMusic(); if(event.key.keysym.sym == SDLK_BACKSPACE) { deleteTiles(tiles); deleteEnemies(enemies); startScreen(); } if(event.type == SDL_QUIT) playing = false; } if (myWindow.error()) { cleanUp(); exit(0); } mew.move(delta.get_ticks(), tiles, enemies); for (int e = 0; e < TOTAL_ENEMIES; e++) { enemies[e]->walk(delta.get_ticks(), tiles); } delta.start(); //restart delta after movement mew.setCamera(); for( int t = 0; t < TOTAL_TILES; t++ ) tiles[t]->show(); mew.show(); for (int e = 0; e < TOTAL_ENEMIES; e++) enemies[e]->show(); if(SDL_Flip(screen) == -1) { cleanUp(); exit(0); } if(fps.get_ticks() < (1000 / FRAMES_PER_SECOND)) SDL_Delay(1000 / FRAMES_PER_SECOND - fps.get_ticks()); } deleteTiles(tiles); deleteEnemies(enemies); exit(0); }
void HoldLine::paintEvent(QPaintEvent *event){ QPainter painter(this); painter.setBackgroundMode (Qt::TransparentMode); painter.drawPixmap(QPointF(0,0),QPixmap("grass.png")); painter.drawLine(QPoint(0,600),QPoint(400,600)); if(gameOver && enemyCount < MAXENEMIES){ QFont font("Courier",15,QFont::DemiBold); QFontMetrics fm(font); int textWidth = fm.width("Game Over"); painter.setFont(font); int h = height(); int w = width(); painter.translate(QPoint(w/2,h/2)); painter.drawText(-textWidth/2,0,"GameOver"); painter.drawText(-textWidth/2-50,30,"Press S to Restart"); deleteEnemies(); enemyList.resize(0); MAXENEMIES = 10; points = 0; level = 0; } else if(gameOver && enemyCount == MAXENEMIES && level < 3){ QFont font("Courier",15,QFont::DemiBold); QFontMetrics fm(font); int textWidth = fm.width("Level Complete"); painter.setFont(font); int h = height(); int w = width(); painter.translate(QPoint(w/2,h/2)); painter.drawText(-textWidth/2,0,"Level Complete"); painter.drawText(-textWidth/2-90,30,"Press S to go to Next Level"); } else if(gameOver && enemyCount == MAXENEMIES && level == 3){ QFont font("Courier",15,QFont::DemiBold); QFontMetrics fm(font); int textWidth = fm.width("You Held the Line"); QString Score = "Score: "; Score.append(QString("%1").arg(points)); painter.setFont(font); int h = height(); int w = width(); painter.translate(QPoint(w/2,h/2)); painter.drawText(-textWidth/2-30,0,"You Held the Line"); painter.drawText(-textWidth/2,30, Score); painter.drawText(-textWidth/2-20,60,"Press S to Restart"); deleteEnemies(); enemyList.resize(0); MAXENEMIES = 10; level = 0; points = 0; } else if(!gameStarted){ QFont font("Courier",15,QFont::DemiBold); QFontMetrics fm(font); int textWidth = fm.width("Hold The Line"); painter.setFont(font); int h = height(); int w = width(); painter.translate(QPoint(w/2,h/2)); painter.drawText(-textWidth/2,0,"Hold The Line"); painter.drawText(-textWidth/2-35,30,"Press S to Start"); } else{ painter.drawImage(prot->getRect(), prot->getImage()); if(!protect->isDestroyed()) painter.drawImage(protect->getRect(),protect->getImage()); if(!protectItem->isDestroyed()) painter.drawPixmap(protectItem->getRect(),protectItem->getImage()); painter.drawPixmap(quiver->getRect(),quiver->getImage()); painter.drawPixmap(trapBag->getRect(),trapBag->getImage()); for(int i = 0; i < enemyList.size(); i++){ if(!(enemyList[i]->isDestroyed()) && enemyList[i]->getRect().top() < 700) painter.drawPixmap(enemyList[i]->getRect(), enemyList[i]->getImage()); } for(int i = 0; i < bulletList.size(); i++){ if(!(bulletList[i]->isDestroyed())) painter.drawImage(bulletList[i]->getRect(), bulletList[i]->getImage()); } for(int i = 0; i < arrowList.size(); i++){ if(!(arrowList[i]->isDestroyed())) painter.drawImage(arrowList[i]->getRect(), arrowList[i]->getImage()); } for(int i = 0; i < trapList.size(); i++){ if(!(trapList[i]->isDestroyed())) painter.drawPixmap(trapList[i]->getRect(), trapList[i]->getImage()); } for(int i = 0; i < treeList.size(); i++) painter.drawPixmap(treeList[i]->getRect(), treeList[i]->getImage()); QString UI = "Arrow: "; UI.append(QString("%1").arg(remainingArrows)); UI += " Lives: "; UI.append(QString("%1").arg(prot->getLives())); UI += " Traps: "; UI.append(QString("%1").arg(remainingTraps)); QFont font("Courier",15,QFont::DemiBold); painter.setFont(font); painter.drawText(QPoint(10,12), UI); QString bla = "Score: "; bla.append(QString("%1").arg(enemyCount)); painter.drawText(QPoint(10,42), bla); }//end else }