int esperarPartida() { int r; char buffer[MAXBUF]; struct MensajeNIPC * mensajeConfirmacion; printf("Esperando que se inicie una partida.\n"); r = recv(sockfd, buffer, sizeof(struct MensajeNIPC), 0); if (r == -1) { perror("Error al recibir el mensaje.\n"); return -1; } mensajeConfirmacion = (struct MensajeNIPC *) buffer; if (mensajeConfirmacion->tipo != Confirma_partida) { printf("El tipo de mensaje recibido no es valido.\n"); return -1; } partida.jugadorOrigen = jugador; if (strcmp(mensajeConfirmacion->jugadorOrigen.nombre, jugador.nombre) == 0) partida.jugadorDestino = mensajeConfirmacion->jugadorOrigen; else partida.jugadorDestino = mensajeConfirmacion->jugadorOrigen; partida.estado = EnProgreso; iniciarPartida(partida); return 0; }
int elegirJugador() { int jugadorElegido, s, r; char buffer[MAXBUF]; struct MensajeNIPC * mensajeConfirmacion; printf("Elegir jugador: "); scanf("%d", &jugadorElegido); if (jugadorElegido < 1 || jugadorElegido > jugadoresDisponiblesCont) { printf("El jugador ingresado no es valido.\n"); return -1; } printf("\n\nJugador elegido: %d - %s.\n", jugadorElegido, jugadoresDisponibles[jugadorElegido - 1].nombre); // Envio la informacion del jugador elegido al server struct MensajeNIPC mensajeJugador; mensajeJugador.tipo = Elige_Jugador; mensajeJugador.jugadorOrigen = jugador; mensajeJugador.jugadorDestino = jugadoresDisponibles[jugadorElegido - 1]; mensajeJugador.payload_length = sizeof(int); memcpy(mensajeJugador.payload, &jugadorElegido, sizeof(jugadorElegido)); s = send(sockfd, &mensajeJugador, sizeof(struct MensajeNIPC), 0); if (s == -1) { return -1; } bzero(buffer, MAXBUF); // Espero a recibir del server una confirmacion de que la partida va a iniciar. r = recv(sockfd, buffer, sizeof(struct MensajeNIPC), 0); if (r == -1) { perror("Error al recibir el mensaje.\n"); return -1; } mensajeConfirmacion = (struct MensajeNIPC *) buffer; if (mensajeConfirmacion->tipo != Confirma_partida) { printf("El tipo de mensaje recibido no es valido.\n"); return -1; } partida.jugadorOrigen = jugador; partida.jugadorDestino = jugadoresDisponibles[jugadorElegido - 1]; partida.estado = EnProgreso; iniciarPartida(partida); return 0; }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); dialogoConecccion= new DialogoConeccion(this); dialogoOpciones=new DialogoOpciones(this); dialogoOpciones->setModal(Qt::WindowModal); progresoConnecion=new QProgressDialog(tr("Esperando connecciones"),tr("Cancelar"),0,0,this); progresoConnecion->setFixedSize(width()/2,progresoConnecion->height()); controlador=new Controler(this,this->ui->visualBoard); ui->visualBoard->connectControler(controlador); connect(ui->action_nueva_partida,SIGNAL(triggered()),this,SLOT(iniciarPartida())); connect(progresoConnecion,&QProgressDialog::canceled,&MessagesSender::cancelarInicioPartida); connect(&futureWatcher,SIGNAL(finished()),progresoConnecion,SLOT(cancel())); connect(ui->actionOpciones,SIGNAL(triggered()),this,SLOT(lanzaVentanaOpciones())); }
int main(int argc, char const *argv[]) { char escolhaMenu; char *strEscolhida=NULL; int doisJogadores=false; int jogoSalvo=true; char escolhaCNP='F'; setlocale(LC_ALL,""); //fun��o para aparecer acentos nas palavras. do { escolhaMenu=menuPrincipal(); //selecionando escolhaMenu que � a escolha do usu�rio no menu switch (escolhaMenu) { case '1': { novaPartida(); break; } case '2': { iniciarPartida(escolhaCNP,doisJogadores,strEscolhida,jogoSalvo); break; } case '3': { LIMPATELA; T_Recorde* ranking = NULL; ranking = obter_ranking(); print_ranking(ranking); destruir_ranking(ranking); break; } } } while(escolhaMenu!='4'); return 0; }