Beispiel #1
0
//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;
}
Beispiel #2
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);
		}
	}
}
Beispiel #3
0
HoldLine::~HoldLine(){
  delete prot;
  delete quiver;
  delete trapBag;
  delete protect;
  delete protectItem;
  deleteTraps();
  deleteTrees();
  deleteBullets();
  deleteEnemies();
  deleteArrows();

}
Beispiel #4
0
/*******************************************************************
				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;
		}
	}

}
Beispiel #5
0
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);
}
Beispiel #6
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


}