Exemple #1
0
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;
}
Exemple #2
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()));
}
Exemple #4
0
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;
}