Window::Window(QWidget *parent)
{
    chek = false;

    quadro = new Board(0);
    if(quadro == NULL){
        qDebug() << "quadro Falhou!";
        chek = true;
    }else{
        qDebug() << "quadro Sucesso!";
    }

    layout = new QGridLayout;
    if(layout == NULL){
        qDebug() << "layout Falhou!";
        chek = true;
    }else{
        qDebug() << "layout Sucesso!";
    }

    file = new QFile();
    if(file == NULL){
        qDebug() << "file Falhou!";
        chek = true;
    }else{
        qDebug() << "file Sucesso!";
    }

    lcdLevel = new QLCDNumber();
    if(lcdLevel == NULL){
        qDebug() << "lcdLevel Falhou!";
        chek = true;
    }else{
        qDebug() << "lcdLevel Sucesso!";
    }

    lcdScore = new QLCDNumber();
    if(lcdScore == NULL){
        qDebug() << "lcdScore Falhou!";
        chek = true;
    }else{
        qDebug() << "lcdScore Sucesso!";
    }

    labelLevel = new QLabel("Level:",this);
    if(labelLevel == NULL){
        qDebug() << "labelLevel Falhou!";
        chek = true;
    }else{
        qDebug() << "labelLevel Sucesso!";
    }

    labelScore = new QLabel("Score:",this);    
    if(labelScore == NULL){
        qDebug() << "labelScore Falhou!";
        chek = true;
    }else{
        qDebug() << "labelScore Sucesso!";
    }

    labelLife = new QLabel("Vida:",this);
    if(labelLife == NULL){
        qDebug() << "labelLife Falhou!";
        chek = true;
    }else{
        qDebug() << "labelLife Sucesso!";
    }

    botaoStart = new QPushButton("Start");
    if(botaoStart == NULL){
        qDebug() << "botaoStart Falhou!";
        chek = true;
    }else{
        qDebug() << "botaoStart Sucesso!";
    }

    botaoPause = new QPushButton("Pause");
    if(botaoPause == NULL){
        qDebug() << "botaoPause Falhou!";
        chek = true;
    }else{
        qDebug() << "botaoPause Sucesso!";
    }

    botaoReset = new QPushButton("Reset");
    if(botaoReset == NULL){
        qDebug() << "botaoReset Falhou!";
        chek = true;
    }else{
        qDebug() << "botaoReset Sucesso!";
    }

    menuBar = new QMenuBar;
    if(menuBar == NULL){
        qDebug() << "menuBar Falhou!";
        chek = true;
    }else{
        qDebug() << "menuBar Sucesso!";
    }

    fileMenu = new QMenu(tr("&File"), this);
    if(fileMenu == NULL){
        qDebug() << "fileMenu Falhou!";
        chek = true;
    }else{
        qDebug() << "fileMenu Sucesso!";
    }

    barraProgresso = new QProgressBar();    
    if(barraProgresso == NULL){
        qDebug() << "barraProgresso Falhou!";
        chek = true;
    }else{
        qDebug() << "barraProgresso Sucesso!";
    }

    barraVida = new QProgressBar();
    if(barraVida == NULL){
        qDebug() << "barraVida Falhou!";
        chek = true;
    }else{
        qDebug() << "barraVida Sucesso!";
    }

    tempo = new QTimer(this);
    if(tempo == NULL){
        qDebug() << "tempo Falhou!";
        chek = true;
    }else{
        qDebug() << "tempo Sucesso!";
    }

    contadorBarra = 1;
    baseScore =5;
    tamInicioBarra = 0;
    tamFimBarra = baseScore;
    barraVida->setMaximum(3);
    contadorVida = 0;

    aboutAct = new QAction(tr("&About"), this);
    if(aboutAct == NULL){
        qDebug() << "aboutAct Falhou!";
        chek = true;
    }else{
        qDebug() << "aboutAct Sucesso!";
    }

    aboutAct->setStatusTip(tr("Show the application's About box"));

    connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));
    connect(botaoStart, SIGNAL(clicked()), quadro, SLOT(inicio()));
    connect(botaoPause, SIGNAL(clicked()), quadro, SLOT(pausa()));
    connect(botaoReset, SIGNAL(clicked()), quadro, SLOT(reset()));
    connect(quadro, SIGNAL(nivelDificuldade(int)), lcdLevel, SLOT(display(int)));
    connect(quadro, SIGNAL(pontosGanho(int)), lcdScore, SLOT(display(int)));
    connect(quadro, SIGNAL(barra_Progresso()), this, SLOT(barraDeProgresso()));
    connect(quadro, SIGNAL(barra_Vida()), this, SLOT(barraDeVida()));
    connect(quadro, SIGNAL(sinalReset()), this, SLOT(resetJogo()));
    connect(quadro, SIGNAL(salvaScore()), this, SLOT(save()));

    this->resize(304,400);
    this->setMaximumSize(304,400);

    quadro->setMinimumSize(104,200);
    quadro->setMaximumSize(304,400);

    createMenu();
    layout->addWidget(menuBar);
    layout->addWidget(quadro,3,0,10,3);
    layout->addWidget(labelLevel, 3, 4);
    layout->addWidget(lcdLevel,4,4);
    layout->addWidget(labelScore, 5,4);
    layout->addWidget(lcdScore,6,4);
    layout->addWidget(botaoStart,7,4);
    layout->addWidget(botaoPause,8,4);
    layout->addWidget(botaoReset,9,4);
    layout->addWidget(barraProgresso);
    layout->addWidget(labelLife);
    layout->addWidget(barraVida);

    this->setLayout(layout);
    this->show();

    if(chek == true)
    {
        falhaCritica();
    }
}
Beispiel #2
0
void Board::timerEvent(QTimerEvent *event)
{    
    saveSocore = score; //atribui o valor de score para salvar em arquivo
    QSound som("Media/Speech On.wav");
    if(pos_x <0 || pos_x > 200 || pos_y < 0 || pos_y > 296){ //Checa se o nake bateu nas bordas
        this->update();
        fimJogo();
    }else{
        switch(direcao){
        case 1:
            pos_x = pos_x - veloc;
            break;
        case 2:
            pos_x = pos_x + veloc;            
            break;
        case 3:
            pos_y = pos_y - veloc;
            break;
        case 4:
            pos_y = pos_y + veloc;
            break;
        }
        if(pos_x >= 0 && pos_x <= 200 && pos_y >=0 && pos_y < 297){ //Checa se o Snake não bateu nas bordas
            this->update();
        }

        //Colisão da Snake com a maçã quando a direçao do Snake for para esquerda
        if(direcao==1 && (pos_x + veloc) == (maca_x)&& (pos_y == maca_y)){
            score = score +1;
            tamSnake++; //variável que determia o tamnho do corpo do Snake
            som.play();
            posicaoMaca();
            emit pontosGanho(score);            
            emit barra_Progresso();
        }

        //Colisão da Snake com a maçã quando a direçao do Snake for para direita
        if(direcao==2 && pos_x == (maca_x + veloc) && (pos_y == maca_y ) ){
            score = score +1;
            tamSnake++;
            som.play();
            posicaoMaca();
            emit pontosGanho(score);            
            emit barra_Progresso();
        }

        //Colisão da Snake com a maçã quando a direçao do Snake for para cima
        if(direcao==3 && (pos_y + veloc) == (maca_y)&& (pos_x == maca_x)){
            score = score +1;
            tamSnake++;
            som.play();
            posicaoMaca();
            emit pontosGanho(score);            
            emit barra_Progresso();
        }

        //Colisão da Snake com a maçã quando a direçao do Snake for para baico
        if(direcao==4 && (pos_y) == (maca_y + veloc)&& (pos_x == maca_x)){
            score = score +1;
            tamSnake++;
            som.play();
            posicaoMaca();
            emit pontosGanho(score);            
            emit barra_Progresso();
        }
    }    
    colisaoSanke();
    vetorSnakeX.push_front(pos_x); //Cria o corpo do Snake
    vetorSnakeY.push_front(pos_y); //Cria o corpo do Snake

    //Apaga o corpo do Snake até o limite do tamanho do Snake
    while(vetorSnakeX.size() > tamSnake){
        vetorSnakeX.pop_back();
        vetorSnakeY.pop_back();
    }

    if(score == gameOver){
        fimJogo();
    }else{
        incrementaLevel();
    }
}