MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); this->running = true; this->setFocus(); setFixedSize(GAME_WIDTH,GAME_HEIGHT); ui->backgroundFrame->setFixedSize(GAME_WIDTH,GAME_HEIGHT); //inicializacion atributos AspectRatioPixmapLabel* labelprueba = new AspectRatioPixmapLabel(); QPixmap pixPrueba(":/gameElement/assets/spaceship1.png"); labelprueba->setPixmap(pixPrueba); labelprueba->setFixedSize(50,50); labelprueba->setParent(this); labelprueba->show(); labelprueba->move(GAME_WIDTH/2,GAME_HEIGHT- 70); labelprueba->setScaledContents(true); player = newPlayerShip(labelprueba); playerBullets = new QList<PlayerBeam*>(); enemies = new QList<enemy_T*>(); scoreNumbers = new QList<QLabel*>(); Lives = new QList<QLabel*>(); //Inicializacion variables misc numbers[0] = ":/miscelanious/assets/numeral0.png"; numbers[1] = ":/miscelanious/assets/numeral1.png"; numbers[2] = ":/miscelanious/assets/numeral2.png"; numbers[3] = ":/miscelanious/assets/numeral3.png"; numbers[4] = ":/miscelanious/assets/numeral4.png"; numbers[5] = ":/miscelanious/assets/numeral5.png"; numbers[6] = ":/miscelanious/assets/numeral6.png"; numbers[7] = ":/miscelanious/assets/numeral7.png"; numbers[8] = ":/miscelanious/assets/numeral8.png"; numbers[9] = ":/miscelanious/assets/numeral9.png"; //---------------------------------- // generateNextLevel(); //Asignación de los Threads this->gameloop = new GameLoopThread(true); //Connects necesarios para el funcionamiento connect(gameloop,SIGNAL(gameUpdate()),this,SLOT(gameUpdate())); connect(gameloop,SIGNAL(gameRender()),this,SLOT(gameRender())); connect(gameloop,SIGNAL(gameDrawn()),this,SLOT(gameDrawn())); this->gameloop->start(); }
TrapezoidalIntegrator::NodesAndWeights TrapezoidalIntegrator::iterateLevel(const NodesAndWeights& old) const { return isLevelZero(old) ? generateLevelOne() : generateNextLevel(old); }
void MainWindow::gameUpdate() { //update jugador updateShip(this->player); //update bullets for(int i = 0; i < playerBullets->size(); i++) { bool remove = UpdatePlayerBeam(playerBullets->at(i)); if(remove) { delete playerBullets->at(i)->myLabel; playerBullets->removeAt(i); i--; } } for(int i= 0; i < enemies->size(); i++) { enemyUpdate(enemies->at(i)); } QRect Rectplayer = player->myLabel->geometry(); //Checkeo Colisiones for(int i = 0; i < playerBullets->size(); i++) { PlayerBeam* bullet = playerBullets->at(i); QRect Rectbullet = bullet->myLabel->geometry(); if(Rectbullet.intersects(Rectplayer)) { player->lives--; delete bullet->myLabel; playerBullets->removeAt(i); i--; } for(int j = 0; j < enemies->size(); j++) { enemy_T* actEnemy = enemies->at(j); QRect RectActEnemy = actEnemy->image->geometry(); if(Rectbullet.intersects(RectActEnemy)) { hit(actEnemy); delete bullet->myLabel; playerBullets->removeAt(i); i--; break; } } } //Colisiones con el jugador for(int i = 0; i < enemies->size(); i++) { QRect RectActEnemy = enemies->at(i)->image->geometry(); if(Rectplayer.intersects(RectActEnemy)) { playerHitted = true; player->lives--; qDebug() << player->lives; hit(enemies->at(i)); } } //check gmae over if(player->lives <= 0) { emit gameEnd(); } //Checkeo Muerte de Enemigos for(int i = 0; i < enemies->size(); i++) { if(enemies->at(i)->dead) { delete enemies->at(i)->image; player->score += checkEnemyValue(enemies->at(i)->type); enemies->removeAt(i); i--; this->enemyKilled = true; } } if(enemies->size() == 0) { this->level++; generateNextLevel(); } refreshScore(); refreshLives(); }