// Paint reimplementation
void StateComboBoxItemDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const
{
    // Current value text
    QString valueString = index.model()->data(index, Qt::DisplayRole).toString();
    //Check if index is in "bold text" list
  
    /*
    if (this->boldTextIndexesList.isEmpty() || !this->boldTextIndexesList.contains(index.row()))
    {
        QItemDelegate::paint (painter, option, index);
    }
    else
     */
    {
        //Save current state
        painter->save();
        
        // Set the "bold" flag for the font depending on the index
        QFont activeFont = painter->font();
        activeFont.setBold(this->boldTextIndexesList.contains(index.row()));
        painter->setFont(activeFont);
        
        //Get position of item
        QRect point = option.rect;
        //Shift to right from left border
        point.setX(point.x() + 5);
        
        if (option.state & QStyle::State_Selected)
        {
            //Highlight text
            painter->fillRect(option.rect, option.palette.highlight());
            //Set white color for selected text
            QPen penHText(Qt::white);
            painter->setPen(penHText);
        }
        else
        {
            //Set black color for non-selected text
            QPen penHText(Qt::black);
            painter->setPen(penHText);
        }

        //Draw text
        painter->drawText(point, Qt::AlignLeft | Qt::TextSingleLine, valueString);
        //Restore painter state
        painter->restore();
    }
}
예제 #2
0
void Game::paintEvent(QPaintEvent *event)
{
  QPainter painter(this);
    if(cover->isON()==true)//cover on the begining with instructions
    painter.drawImage(cover->getRect(), cover->getImage());


  if (gameOver) {//print gameover message when all lives lost
    QFont font("Courier", 15, QFont::DemiBold);
    QFontMetrics fm(font);
    int textWidth = fm.width("Game Over");
     
    painter.setFont(font);
    int h = height();
    int w = width();
  QPen penText(QColor("#00e0fc"));// drawn using this color
        painter.setPen(penText);

    painter.translate(QPoint(w/2, h/2));
    painter.drawText(-textWidth/2, 0, "Game Over");
  }
  else if(gameWon) {//prints win message when 6 gets 7
    QFont font("Courier", 15, QFont::DemiBold);
    QFontMetrics fm(font);
    int textWidth = fm.width("YOU WON :D");

    painter.setFont(font);
    int h = height();
    int w = width();
QPen penHText(QColor("#990000"));
        painter.setPen(penHText);

    painter.translate(QPoint(w/2, h/2));
    painter.drawText(-textWidth/2, 0, "YOU WON :D");
    painter.drawText(-100,100 ,"score->");
    scores.setNum(score);
    painter.drawText(100,100 ,scores);
  }
  else if(cover->isON()==false&&level1==true&&gameOver==false){//still playing the game so all objecst are draw in current position 
     painter.drawImage(port1->getRect(),port1->getImage(1));
      painter.drawImage(port2->getRect(),port2->getImage(1));
      painter.drawImage(port3->getRect(),port3->getImage(1));
      painter.drawImage(port4->getRect(),port4->getImage(1));
      painter.drawImage(port5->getRect(),port5->getImage(1));
        painter.drawImage(door->getRect(), door->getImage(1));
    painter.drawImage(nj->getRect(), nj->getImage());
     painter.drawImage(nj2->getRect(), nj2->getImage());
     painter.drawImage(nj3->getRect(), nj3->getImage());
    painter.drawImage(block->getRect(), block->getImage()); 
    
    painter.drawImage(six->getRect(), six->getImage(step)); 
    painter.drawImage(lazer->getRect(), lazer->getImage(0)); 
     painter.drawImage(lazer2->getRect(), lazer2->getImage(0));
     painter.drawImage(lazer3->getRect(), lazer3->getImage(0));
     painter.drawImage(lazer4->getRect(), lazer4->getImage(0));
     painter.drawImage(lazer5->getRect(), lazer5->getImage(0));
      painter.drawImage(lazer6->getRect(),lazer6->getImage(0));
      painter.drawImage(lwall2->getRect(),lwall->getImage());
      painter.drawImage(L->getRect(), L->getImage());
  
       painter.drawImage(lastwall->getRect(), lastwall->getImage());   
        painter.drawImage(lazerl->getRect(), lazerl->getImage(0));
        painter.drawImage(psych->getRect(), psych->getImage());
    
    //painter.drawImage(seven->getRect(), seven->getImage()); 
    painter.drawImage(blade->getRect(), blade->getImage());
       painter.drawImage(blade2->getRect(), blade2->getImage());
       painter.drawImage(blade3->getRect(), blade3->getImage());
     if(!bomb1->boom()==true)
    painter.drawImage(bomb1->getRect(), bomb1->getImage(0));
 if(!bomb2->boom()==true)
     painter.drawImage(bomb2->getRect(), bomb2->getImage(0));
 if(!bomb3->boom()==true)
     painter.drawImage(bomb3->getRect(), bomb3->getImage(0));
  
     painter.drawImage(lwall->getRect(), lwall->getImage());
   }

  //paints second level  
 else if(cover->isON()==false&&level2==true&&gameOver==false){
      painter.drawImage(port1->getRect(),port1->getImage(1)); painter.drawImage(port1->getRect(),port1->getImage(1));
     int y = six->getRect().y();
     int x = six->getRect().x();
     int a = eye1->getRect().left()+(eye1->getRect().width()/2);
     int b = eye1->getRect().top()+(eye1->getRect().height()/2);
     int c = eye2->getRect().left()+(eye2->getRect().width()/2);
     int d = eye2->getRect().top()+(eye2->getRect().height()/2);
     int e = eye3->getRect().left()+(eye3->getRect().width()/2);
     int f = eye3->getRect().top()+(eye3->getRect().height()/2);
     QPoint me(six->getRect().top(),six->getRect().left());
     QPoint first(280,425);
     QPoint second(c,d);
     QPoint third(e,f);
 
     if(ouch1==false)//if not already destroyed
      sight1= eye1->getQUAD(x,y);//finds the pic to make i look in 6s direction
     else if(me==first)  {sight1=9;key=true;}
      else {sight1=100;key=true;}

     if(ouch2==false)
     sight2= eye2->getQUAD(x,y);
     else if(me==second)   sight2=9;
      else sight2=12;

     if(ouch3==false)
     sight3= eye3->getQUAD(x,y);
     else if(me==third) sight3=9;
      else  sight3=64;  
   
     if(ouch4==false)
      sight4= eye4->getQUAD(x,y);
        else  sight4=9;

     if(ouch5==false)
      sight5= eye5->getQUAD(x,y);
        else  sight5=9;

   painter.drawImage(six->getRect(), six->getImage(step)); 
 painter.drawImage(ninja->getRect(), ninja->getImage(stip)); 
      painter.drawImage(ninja2->getRect(), ninja2->getImage(stip)); 
  for (int i=0; i<45; i++) {
       
          painter.drawImage(bricks[i]->getRect(), 
              bricks[i]->getImage());
    }
      //shoots the acid from each eyeball
   if(ouch1==false)
    painter.drawImage(bleh1->getRect(), bleh1->getImage()); 
     if(ouch2==false)
     painter.drawImage(bleh2->getRect(), bleh2->getImage()); 
    if(ouch3==false) 
    painter.drawImage(bleh3->getRect(), bleh3->getImage()); 
   if(ouch4==false) 
     painter.drawImage(bleh4->getRect(), bleh4->getImage()); 
  if(ouch5==false)  
   painter.drawImage(bleh5->getRect(), bleh5->getImage()); 
  //then draw eyes on top
    painter.drawImage(eye1->getRect(), eye1->getImage2(sight1)); 
     painter.drawImage(eye2->getRect(), eye2->getImage2(sight2)); 
     painter.drawImage(eye3->getRect(), eye3->getImage2(sight3)); 
      painter.drawImage(eye4->getRect(), eye4->getImage2(sight4)); 
     painter.drawImage(eye5->getRect(), eye5->getImage2(sight5)); 

  }

//third level with piano guy

  if(cover->isON()==false&&level3==true&&gameOver==false){
   
 //move to bottom of screen to start this level
 /* painter.drawImage(side1->getRect(),side1->getImage());
 painter.drawImage(side2->getRect(),side2->getImage(0)); 
 painter.drawImage(side3->getRect(),side3->getImage());*/
 painter.drawImage(man->getRect(),man->getImage(throwy,0));

 
 painter.drawImage(port2->getRect(),port2->getImage(1));
 //painter.drawImage(portsiete->getRect(),portsiete->getImage(1));&&&&&&
 painter.drawImage(portskull->getRect(),portskull->getImage(1));
painter.drawImage(cloud1->getRect(),cloud1->getImage());

  painter.drawImage(cloud5->getRect(),cloud5->getImage());
  painter.drawImage(cloud3->getRect(),cloud3->getImage());
 //draw all the clouds

 painter.drawImage(six->getRect(), six->getImage(step)); 
 painter.drawImage(cloud2->getRect(),cloud2->getImage()); 
 painter.drawImage(bolt->getRect(), bolt->getImage());//bolt painted
 painter.drawImage(cloud4->getRect(),cloud4->getImage());

 painter.drawImage(cloud6->getRect(),cloud6->getImage());

//draw three walls and man
 

//draw piano where ever it be
 painter.drawImage(piano->getRect(),piano->getImage());
//three portals that lead back to siete or skull door

}
if(final==true&&gameOver==false&&cover->isON()==false&&gameWon==false)
{    int sight64;
      int y = six->getRect().y();
      int x = six->getRect().x();
     int c = aye->getRect().left()+(aye->getRect().width()/2);
     int d = aye->getRect().top()+(aye->getRect().height()/2);
  painter.drawImage(bg->getRect(), bg->getImage(stip)); //draw background and animate flames
 painter.drawImage(bolt->getRect(), bolt->getImage());
 if(ouche==false)//if not already destroyed
 { sight64= aye->getQUAD(x,y);
  painter.drawImage(aye->getRect(), aye->getImage2(sight64));
  //painter.drawImage(blak->getRect(), blak->getImage()); this eye is harmless
}
 else
 painter.drawImage(aye->getRect(), aye->getImage2(9));

 painter.drawImage(six->getRect(), six->getImage(step)); 
 painter.drawImage(seven->getRect(),seven->getImage());

}
if(level7==true&&gameOver==false){
 int diologue;
if(dio<=100)
painter.drawImage(siete->getRect(), siete->getImage(1,stip));
else if(dio<=200)
painter.drawImage(siete->getRect(), siete->getImage(2,stip));
else
painter.drawImage(siete->getRect(), siete->getImage(3,stip));

painter.drawImage(portsiete->getRect(), portsiete->getImage(1)); //portal
 painter.drawImage(six->getRect(), six->getImage(step)); 
  if((six->getRect()).intersects(portsiete->getRect())){level7=false;level3=true;
  six->resetState(1000,550);
  
  }
  
}

//print score-------------------------------
       QFont font("Arial", 20, QFont::DemiBold);
    QFontMetrics fm(font);
    int textWidth = fm.width("LIVES");

    painter.setFont(font);
   
  QPen penText(QColor("#FFFFFF"));// drawn using this color
        painter.setPen(penText);
//place at bottom of screen
    painter.translate(QPoint(100, 650));
    painter.drawText(-textWidth/2, 0, "LIVES");
    QPen penT(QColor("#00e0fc"));
      painter.setPen(penT);
    life.setNum(lives);
     painter.drawText(100, 0 , life);
    
   if(lives>=0){
       QFont font("Arial", 20, QFont::DemiBold);
    QFontMetrics fm(font);
    int textWidth = fm.width(" COOL POINTS");

    painter.setFont(font);
   
  QPen penText(QColor("#FFFFFF"));// drawn using this color
        painter.setPen(penText);

    painter.translate(QPoint(500, 0));
    painter.drawText(-textWidth/2, 0, "COOL POINTS");
   
    QPen penT(QColor("#00e0fc"));
     painter.setPen(penT);
    scores.setNum(score);
    painter.drawText(100,0 ,scores);

  
 }
}