void MainWindow::dropEvent(QDropEvent *event) { if (event->mimeData()->hasFormat("application/x-dnditemdata")) { QByteArray itemData = event->mimeData()->data("application/x-dnditemdata"); QDataStream dataStream(&itemData, QIODevice::ReadOnly); QPixmap pixmap; QPoint offset; dataStream >> pixmap >> offset; Label *newIcon = new Label(this); newIcon->setPixmap(pixmap); newIcon->move(event->pos() - offset); newIcon->adjustSize(); newIcon->setAttribute(Qt::WA_DeleteOnClose); bool tirar = false; int rmov; int rult; QString rango1; QString rango2; newIcon->nodo=moviendo->nodo; int x1=uno->cont; int x2=dos->cont; int x3=tres->cont; int x4=cuatro->cont; int x5=cinco->cont; int x6=seis->cont; int x7=siete->cont; if(newIcon->pos().rx()>15 && newIcon->pos().rx() <25 && uno->cont >= 1) { Nodo *ultimo = uno->recuperar(x1-1); if(ultimo==NULL) return; rmov=moviendo->nodo->carta->getRango().toInt(); newIcon->pertenece=uno; rango1 = ultimo->carta->getRango(); rango2 = moviendo->nodo->carta->getRango(); if(rango1=="J") rmov=11; if(rango1=="Q") rmov=12; if(rango1=="K") rmov=13; rult=ultimo->carta->getRango().toInt(); if(rango2=="J") rult=11; if(rango2=="Q") rult=12; if(rango2=="K") rult=13; if(ultimo->carta->getColor() != moviendo->nodo->carta->getColor() && rmov == rult-1 || (rmov==13) && (rult==0)) { tirar=true; } } if(newIcon->pos().rx()>125 && newIcon->pos().rx() <135 && dos->cont >= 1) { Nodo *ultimo = dos->recuperar(x2-1); if(ultimo==NULL) return; rmov=moviendo->nodo->carta->getRango().toInt(); newIcon->pertenece=dos; rango1 = ultimo->carta->getRango(); rango2 = moviendo->nodo->carta->getRango(); if(rango1=="J") rmov=11; if(rango1=="Q") rmov=12; if(rango1=="K") rmov=13; rult=ultimo->carta->getRango().toInt(); if(rango2=="J") rult=11; if(rango2=="Q") rult=12; if(rango2=="K") rult=13; if(ultimo->carta->getColor() != moviendo->nodo->carta->getColor() && rmov == rult-1 || (rmov==13) && (rult==0)) { tirar=true; } } if(newIcon->pos().rx()>235 && newIcon->pos().rx() <245 && tres->cont >= 1) { Nodo *ultimo = tres->recuperar(x3-1); if(ultimo==NULL) return; rmov=moviendo->nodo->carta->getRango().toInt(); newIcon->pertenece=tres; rango1 = ultimo->carta->getRango(); rango2 = moviendo->nodo->carta->getRango(); if(rango1=="J") rmov=11; if(rango1=="Q") rmov=12; if(rango1=="K") rmov=13; rult=ultimo->carta->getRango().toInt(); if(rango2=="J") rult=11; if(rango2=="Q") rult=12; if(rango2=="K") rult=13; if((ultimo->carta->getColor() != moviendo->nodo->carta->getColor() && rmov == rult-1) || (rmov==13) && (rult==0)) { tirar=true; } } if(newIcon->pos().rx()>345 && newIcon->pos().rx() <355 && cuatro->cont >= 1) { Nodo *ultimo = cuatro->recuperar(x4-1); if(ultimo==NULL) return; rmov=moviendo->nodo->carta->getRango().toInt(); newIcon->pertenece=cuatro; rango1 = ultimo->carta->getRango(); rango2 = moviendo->nodo->carta->getRango(); if(rango1=="J") rmov=11; if(rango1=="Q") rmov=12; if(rango1=="K") rmov=13; rult=ultimo->carta->getRango().toInt(); if(rango2=="J") rult=11; if(rango2=="Q") rult=12; if(rango2=="K") rult=13; if(ultimo->carta->getColor() != moviendo->nodo->carta->getColor() && (rmov == rult-1) || (rmov==13) && (rult==0) ) { tirar=true; } } if(newIcon->pos().rx()>455 && newIcon->pos().rx() <465 && cinco->cont >=1) { Nodo *ultimo = cinco->recuperar(x5-1); if(ultimo==NULL) return; newIcon->pertenece=cinco; rmov=moviendo->nodo->carta->getRango().toInt(); rango1 = ultimo->carta->getRango(); rango2 = moviendo->nodo->carta->getRango(); if(rango1=="J") rmov=11; if(rango1=="Q") rmov=12; if(rango1=="K") rmov=13; rult=ultimo->carta->getRango().toInt(); if(rango2=="J") rult=11; if(rango2=="Q") rult=12; if(rango2=="K") rult=13; if((ultimo->carta->getColor() != moviendo->nodo->carta->getColor() && rmov == rult-1) || (rmov==13) && (rult==0)) { tirar=true; } } if(newIcon->pos().rx()>565 && newIcon->pos().rx() <575 && seis->cont >=1) { Nodo *ultimo = seis->recuperar(x6-1); if(ultimo==NULL) return; newIcon->pertenece=seis; rmov=moviendo->nodo->carta->getRango().toInt(); rango1 = ultimo->carta->getRango(); rango2 = moviendo->nodo->carta->getRango(); if(rango1=="J") rmov=11; if(rango1=="Q") rmov=12; if(rango1=="K") rmov=13; rult=ultimo->carta->getRango().toInt(); if(rango2=="J") rult=11; if(rango2=="Q") rult=12; if(rango2=="K") rult=13; if((ultimo->carta->getColor() != moviendo->nodo->carta->getColor() && rmov== rult-1) || (rmov==13) && (rult==0)) { tirar=true; } } if(newIcon->pos().rx()>675 && newIcon->pos().rx() <685 && siete->cont >=1) { Nodo *ultimo= siete->recuperar(x7-1); if(ultimo==NULL) return; newIcon->pertenece=siete; rmov=moviendo->nodo->carta->getRango().toInt(); rango1 = ultimo->carta->getRango(); rango2 = moviendo->nodo->carta->getRango(); if(rango1=="J") rmov=11; if(rango1=="Q") rmov=12; if(rango1=="K") rmov=13; rult=ultimo->carta->getRango().toInt(); if(rango2=="J") rult=11; if(rango2=="Q") rult=12; if(rango2=="K") rult=13; if((ultimo->carta->getColor() != moviendo->nodo->carta->getColor() && rmov == rult-1) || (rmov==13) && (rult==0)) { tirar=true; } } if(newIcon->pos().rx()>350 && newIcon->pos().rx() <360 && newIcon->pos().ry() > 35 && newIcon->pos().ry() < 45) { if(ord1->cont==0 && newIcon->nodo->carta->getRango()=="A") { tirar=true; } else { Nodo *ultimo = ord1->recuperar((ord1->cont)-1); if(ultimo==NULL) return; newIcon->pertenece=ord1; rmov=moviendo->nodo->carta->getRango().toInt(); rango1 = ultimo->carta->getRango(); rango2 = moviendo->nodo->carta->getRango(); if(rango1=="J") rmov=11; if(rango1=="Q") rmov=12; if(rango1=="K") rmov=13; rult=ultimo->carta->getRango().toInt(); if(rango2=="J") rult=11; if(rango2=="Q") rult=12; if(rango2=="K") rult=13; if(ultimo->carta->getColor() == moviendo->nodo->carta->getColor() && rmov == rult+1) { cout<<"Si Pasa"<<endl; tirar=true; cout<<"RMOV: "<<rmov<<"RULT: "<<rult; } else { cout<<"No Pasa"<<endl; cout<<"RMOV: "<<rmov<<"RULT: "<<rult; } } } if(newIcon->pos().rx()>460 && newIcon->pos().rx() <470 && newIcon->pos().ry() > 35 && newIcon->pos().ry() < 45) { if(ord2->cont==0 && moviendo->nodo->carta->getRango()=="A") { tirar=true; } else { cout<<moviendo->nodo->carta->getRango().toStdString()<<endl; Nodo *ultimo= ord2->recuperar((ord1->cont)-1); newIcon->pertenece=ord2; rmov=moviendo->nodo->carta->getRango().toInt(); rango1 = ultimo->carta->getRango(); rango2 = moviendo->nodo->carta->getRango(); if(rango1=="J") rmov=11; if(rango1=="Q") rmov=12; if(rango1=="K") rmov=13; rult=ultimo->carta->getRango().toInt(); if(rango2=="J") rult=11; if(rango2=="Q") rult=12; if(rango2=="K") rult=13; if(ultimo->carta->getColor() == moviendo->nodo->carta->getColor() && rmov == rult+1) { cout<<"Si Pasa"<<endl; tirar=true; cout<<"RMOV: "<<rmov<<"RULT: "<<rult; } else { cout<<"No Pasa"<<endl; cout<<"RMOV: "<<rmov<<"RULT: "<<rult; } } } if(newIcon->pos().rx()>570 && newIcon->pos().rx() <580 && newIcon->pos().ry() > 35 && newIcon->pos().ry() < 45) { if(ord3->cont==0 && newIcon->nodo->carta->getRango()=="A") { tirar=true; } else { Nodo *ultimo= ord3->recuperar((ord3->cont)-1); newIcon->pertenece=ord3; rmov=moviendo->nodo->carta->getRango().toInt(); rango1 = ultimo->carta->getRango(); rango2 = moviendo->nodo->carta->getRango(); if(rango1=="J") rmov=11; if(rango1=="Q") rmov=12; if(rango1=="K") rmov=13; rult=ultimo->carta->getRango().toInt(); if(rango2=="J") rult=11; if(rango2=="Q") rult=12; if(rango2=="K") rult=13; if(ultimo->carta->getColor() == moviendo->nodo->carta->getColor() && rmov == rult+1) { cout<<"Si Pasa"<<endl; tirar=true; cout<<"RMOV: "<<rmov<<"RULT: "<<rult; } else { cout<<"No Pasa"<<endl; cout<<"RMOV: "<<rmov<<"RULT: "<<rult; } } } if(newIcon->pos().rx()>680 && newIcon->pos().rx() <690 && newIcon->pos().ry() > 35 && newIcon->pos().ry() < 45) { if(ord4->cont==0 && newIcon->nodo->carta->getRango()=="A") { tirar=true; } else { Nodo *ultimo= ord4->recuperar((ord4->cont)-1); newIcon->pertenece=ord4; rmov=moviendo->nodo->carta->getRango().toInt(); rango1 = ultimo->carta->getRango(); rango2 = moviendo->nodo->carta->getRango(); if(rango1=="J") rmov=11; if(rango1=="Q") rmov=12; if(rango1=="K") rmov=13; rult=ultimo->carta->getRango().toInt(); if(rango2=="J") rult=11; if(rango2=="Q") rult=12; if(rango2=="K") rult=13; if(ultimo->carta->getColor() == moviendo->nodo->carta->getColor() && rmov == rult+1) { cout<<"Si Pasa"<<endl; tirar=true; cout<<"RMOV: "<<rmov<<"RULT: "<<rult; } else { cout<<"No Pasa"<<endl; cout<<"RMOV: "<<rmov<<"RULT: "<<rult; } } } if (event->source() == this && tirar) { event->setDropAction(Qt::MoveAction); event->accept(); cout<<newIcon->nodo->carta->getColor().toStdString()<<endl; cout<<newIcon->nodo->carta->getPalo().toStdString()<<endl; cout<<"ANTES: mov"<<moviendo->pertenece->cont<<" "<<newIcon->pertenece->cont<<endl; moviendo->pertenece->eliminar(moviendo->pertenece->cont-1); newIcon->pertenece->insertar(newIcon->pertenece->cont,newIcon->nodo); if(moviendo->pertenece!=mazo) { crearCartasVisualesB(moviendo->pertenece,redi,190,15,0); } cout<< newIcon->pos().rx()<<" HE SIDO ARROJADO"<<endl; cout<<"DESPUES: mov"<<moviendo->pertenece->cont<<" "<<newIcon->pertenece->cont<<endl; newIcon->show(); } else { event->acceptProposedAction(); } } else {