/// <summary> /// Exibe o tabuleiro. /// </summary> /// <returns>Retorna o tabuleiro.</returns> public string ExibirTabuleiro(string idPartida) { if (idPartida.Equals("") || (_idPartida = Convert.ToInt32(idPartida)) == 0) { Erros.MensagemErro("idpartida"); return("Erro ao mostrar tabuleiro"); } string quebraTexto = Jogo.ExibirTabuleiro(Convert.ToInt32(idPartida)); if (quebraTexto == "ERRO:Partida não está em Jogo\r\n") { Erros.MensagemErro("partidaaberta"); return("Erro ao mostrar tabuleiro"); } else if (quebraTexto == "ERRO:Partida Inexistente\r\n") { Erros.MensagemErro("partidainexistente"); return("Erro ao mostrar tabuleiro"); } string[] words = new string[36]; words = quebraTexto.Split(','); return(Jogo.ExibirTabuleiro(_idPartida)); }
/// <summary> /// Pula a jogada. /// </summary> /// <returns>Retorna a jogada.</returns> public string PularJogada(string idJogador, string senhaJogador) { if (idJogador == string.Empty) { Erros.MensagemErro("idjogador"); return("Erro ao pular jogada."); } else if (senhaJogador == string.Empty) { Erros.MensagemErro("senhajogador"); return("Erro ao pular jogada."); } _idJogador = Convert.ToInt32(idJogador); _senhaJogador = senhaJogador; _movimento = Jogo.Jogar(_idJogador, _senhaJogador); if (_movimento == "ERRO:Não é a vez deste jogador") { Erros.MensagemErro("vezinvalida"); return("Só é possível jogar quando for sua vez!"); } else if (_movimento == "ERRO:Senha do jogador inválida") { Erros.MensagemErro("senhaincorreta"); return("Por favor, digite a senha correta."); } return(_movimento); }
/// <summary> /// Método responsável por criar partidas através de nome e senha. Apenas a Classe pode fazer uso /// </summary> /// <param name="nomePartida">Nome da Partida a ser criada.</param> /// <param name="senhaPartida">Senha a ser utilizada da partida.</param> /// <returns>Retorna o ID da partida.</returns> public int CriarPartida(string nomePartida, string senhaPartida) { if (nomePartida == string.Empty) { Erros.MensagemErro("nomepartida"); return(0); } else if (senhaPartida == string.Empty) { Erros.MensagemErro("senhapartida"); return(0); } _senhaPartida = senhaPartida; string partida = Jogo.CriarPartida(nomePartida, _senhaPartida); if (partida == "ERRO: Partida já existente") { Erros.MensagemErro("nomeexistente"); return(0); } else if (partida == "ERRO:Nome da partida com mais que 20 caracteres") { Erros.MensagemErro("limite20caracteres"); return(0); } _idPartida = Convert.ToInt32(partida); Erros.MensagemSucesso("partidacriada"); return(_idPartida); }
/// <summary> /// Move um pirata para a frente. /// </summary> /// <param name="carta">Qual o tipo de objeto vai utilizar o jogador.</param> /// <param name="posicao">Posição numerica do mapa.</param> /// <returns>Retorna a posição jogada.</returns> public string MoverPirata(string carta, string posicao) { if (posicao == string.Empty) { Erros.MensagemErro("posicaoinvalida"); return("Erro ao mover pirata."); } _posicao = Convert.ToInt32(posicao); switch (carta) { case "Esqueleto": return(Jogo.Jogar(_idJogador, _senhaJogador, _posicao, "E")); case "Chave": return(Jogo.Jogar(_idJogador, _senhaJogador, _posicao, "C")); case "Garrafa": return(Jogo.Jogar(_idJogador, _senhaJogador, _posicao, "G")); case "Pistola": return(Jogo.Jogar(_idJogador, _senhaJogador, _posicao, "P")); case "Tricórnio": return(Jogo.Jogar(_idJogador, _senhaJogador, _posicao, "T")); case "Faca": return(Jogo.Jogar(_idJogador, _senhaJogador, _posicao, "F")); } Erros.MensagemErro("cartanaoinformada"); return("Erro ao mover pirara."); }
/// <summary> /// Verifica a vez do jogador. /// </summary> /// <returns>Retorna a vez do jogador.</returns> public string VerificarVez(string idPartida) { if (_idPartida == 0 || idPartida.Equals("")) { Erros.MensagemErro("idpartida"); return("Erro ao verificar vez"); } _idPartida = Convert.ToInt32(idPartida); return(Jogo.VerificarVez(_idPartida)); }
/// <summary> /// Método responsável por listar os jogadores de uma partida através de seu ID. /// Apenas a Classe pode fazer uso. /// </summary> /// <param name="idPartida">ID da partida</param> /// <returns>Retorna informações sobre jogadores</returns> public string ListarJogadores(string idPartida) { if (_idPartida == 0 || idPartida.Equals("")) { Erros.MensagemErro("idpartida"); return("Erro ao listar jogadores"); } _idPartida = Convert.ToInt32(idPartida); return(Jogo.ListarJogadores(_idPartida)); }
public bool statusJogador(string idpartida, string idJogador) { Queue <string> fila = new Queue <string>(this.VerificarVez(idpartida).Replace("\r\n", ",").Split(',')); fila.Dequeue(); if (idJogador == null) { Erros.MensagemErro("idjogador"); return(false); } return(fila.Dequeue() == idJogador); }
//public void DesenharPiratas() //{ // Stack<string> idJogadores = new Stack<string>(lobby.ListarJogadores(txtIdPartida.Text).Replace(("\r\n"),(",")).Split(',')); // idJogadores.Pop(); // string[] ids = new string[idJogadores.Count()/3]; // int i = idJogadores.Count(); // for(; idJogadores.Count != 0;) // { // for (int j = 0; j<2; j++) idJogadores.Pop(); // i = i - 3; // ids[i/3] = idJogadores.Pop(); // } // //MessageBox.Show(ids.Count().ToString()); // Queue<string> piratas = new Queue<string>(lobby.ExibeHistorico(txtIdPartida.Text).Replace(("\r\n"),(",")).Split(',')); // //MessageBox.Show(piratas.Dequeue()); // /*string posicao; // string[] words = new string[200]; // words = quebraTexto.Replace("\r\n", ",").Split(','); // int j = 1; // for (int i = 3; i <= 130; i = i + 3) // { // posicao = words[i]; // this.pictureBox2.Image = vermelho; // this.pictureBox2.Location = new System.Drawing.Point( // ((PictureBox)this.Controls.Find("pic" + posicao.ToString(), true)[0]).Location.X, // ((PictureBox)this.Controls.Find("pic" + posicao.ToString(), true)[0]).Location.Y); // this.pictureBox2.Name = "pirate" + j.ToString(); // this.pictureBox2.Size = new System.Drawing.Size(15, 15); // this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; // this.pictureBox2.TabIndex = 122; // this.pictureBox2.TabStop = false; // MessageBox.Show(words[i]); // j++; // } // */ //} public void DesenharTabuleiro() { string quebraTexto = lobby.ExibirTabuleiro(txtIdPartida.Text); if (quebraTexto.Equals("ERRO:Partida não está em jogo\r\n")) { Erros.MensagemErro("partidaaberta"); return; } string simbolo; string posicao; string[] words = new string[190]; if (quebraTexto != "Erro ao mostrar tabuleiro") { words = quebraTexto.Replace("\r\n", ",").Split(','); int j = 1; for (int i = 2; i <= 72; i = i + 2) { posicao = words[i]; simbolo = words[i + 1]; if (simbolo == "C") { ((PictureBox)this.Controls.Find("pic" + j.ToString(), true)[0]).Image = chave; } else if (simbolo == "E") { ((PictureBox)this.Controls.Find("pic" + j.ToString(), true)[0]).Image = esqueleto; } else if (simbolo == "F") { ((PictureBox)this.Controls.Find("pic" + j.ToString(), true)[0]).Image = faca; } else if (simbolo == "T") { ((PictureBox)this.Controls.Find("pic" + j.ToString(), true)[0]).Image = tricornio; } else if (simbolo == "P") { ((PictureBox)this.Controls.Find("pic" + j.ToString(), true)[0]).Image = pistola; } else if (simbolo == "G") { ((PictureBox)this.Controls.Find("pic" + j.ToString(), true)[0]).Image = garrafa; } ((PictureBox)this.Controls.Find("pic" + j.ToString(), true)[0]).BackColor = Color.FromArgb(210, 187, 137); ((PictureBox)this.Controls.Find("pic" + j.ToString(), true)[0]).Visible = true; j++; } } }
/// <summary> /// Exibe o historico de jogadas. /// </summary> /// <returns>Retorna o historico de jogadas.</returns> public string ExibeHistorico(string idPartida) { if (idPartida.Equals("") || (_idPartida = Convert.ToInt32(idPartida)) == 0 || idPartida.Equals("Erro")) { Erros.MensagemErro("idpartida"); return("Erro exibir histórico"); } //string historico = (_idPartida); //if (historico == "ERRO:Partida não está em andamento") //{ // Erros.MensagemErro("partidaaberta"); // return "Erro ao exibir histórico"; //} return(Jogo.ExibirHistorico(_idPartida)); }
/// <summary> /// Método responsável por Exibir o que tem disponivel de cartas. /// Apenas a Classe pode fazer uso /// </summary> /// <param name="idJogador">ID do jogador</param> /// <param name="senhaJogador">Senha do jogador</param> /// <returns>Retorna informações de cartas do Jogo.</returns> public string ExibirMao(string idJogador, string senhaJogador) { if (idJogador == string.Empty) { Erros.MensagemErro("idjogador"); return("Erro ao exibir mão do jogador"); } else if (senhaJogador == string.Empty) { Erros.MensagemErro("senhajogador"); return("Erro ao exibir mão do jogador"); } _idJogador = Convert.ToInt32(idJogador); _senhaJogador = senhaJogador; return(Jogo.ConsultarMao(_idJogador, _senhaJogador)); }
/// <summary> /// Método responsável por iniciar uma partidas. Apenas a Classe pode fazer uso /// </summary> /// <param name="idJogador">Nome da Partida a ser criada.</param> /// <param name="senhaJogador">Senha a ser utilizada da partida.</param> /// <returns>Retorna os dados da partida.</returns> public string IniciarPartida(string idJogador, string senhaJogador) { if (idJogador == string.Empty) { Erros.MensagemErro("idjogador"); return("Erro ao iniciar partida"); } else if (senhaJogador == string.Empty) { Erros.MensagemErro("senhajogador"); return("Erro ao iniciar partida"); } _idJogador = Convert.ToInt32(idJogador); _senhaJogador = senhaJogador; Erros.MensagemSucesso("partidainiciada"); return(Jogo.IniciarPartida(_idJogador, _senhaJogador)); }
/// <summary> /// Método responsável por mover o pirata para trás, caso tenha até 2 piratas na posição /// mais próxima e a posição não seja a inicial. /// Apenas a Classe pode fazer uso. /// </summary> /// <param name="idJogador">ID da partida</param> /// <param name="senhaJogador">ID da partida</param> /// <param name="posicao">ID da partida</param> /// <returns>Retorna informações sobre jogadores</returns> public string MoverPirata(string idJogador, string senhaJogador, string posicao) { if (idJogador == string.Empty) { Erros.MensagemErro("idjogador"); return(""); } else if (senhaJogador == string.Empty) { Erros.MensagemErro("senhajogador"); return(""); } else if (posicao == string.Empty) { Erros.MensagemErro("posicaoinvalida"); return("Posição invalida"); } _idJogador = Convert.ToInt32(idJogador); _senhaJogador = senhaJogador; _posicao = Convert.ToInt32(posicao); _movimento = Jogo.Jogar(_idJogador, _senhaJogador, _posicao); if (_movimento == "ERRO:Jogador não tem piratas na posição informada\r\n") { Erros.MensagemErro("posicaoinvalida"); return("Posição invalida"); } else if (_movimento == "ERRO:Senha incorreta") { Erros.MensagemErro("senhaincorreta"); return("Por favor, digite a senha correta."); } return(_movimento); }
private void btnSistema_Click(object sender, EventArgs e) { string idpartida = txtIdPartida.Text; if (lobby.statusJogo(idpartida) && lobby.ExibirMao(txtIdJogador.Text, txtSenhaJogador.Text) != "") { T.Enabled = true; } else { T.Enabled = false; return; } T.Interval = 2000; T.Tick += new System.EventHandler(t_Timer); void t_Timer(object o, EventArgs x) { if (lobby.statusJogador(idpartida, txtIdJogador.Text)) { btnSistema.Text = "Rodando"; string mao = lobby.ExibirMao(txtIdJogador.Text, txtSenhaJogador.Text); if (mao == "Erro ao exibir mão do jogador") { Erros.MensagemErro(""); btnSistema.Text = "Automatizar"; return; } if (mao == "") { MessageBox.Show("Jogo manual, falta cartas"); T.Enabled = false; btnSistema.Text = "Automatizar"; return; } Stack <string> words = new Stack <string>(mao.Replace("\r\n", ",").Split(',')); words.Pop(); words.Pop(); if (lobby.PrimeiraVezJogador(txtIdPartida.Text, txtIdJogador.Text)) { lobby.Jooj(words.First(), Convert.ToInt32(txtIdJogador.Text), txtSenhaJogador.Text, 0); } Queue <string> fila = new Queue <string>(lobby.ExibeHistorico(txtIdPartida.Text).Replace("\r\n", ",").Split(',')); for (; fila.First() != txtIdJogador.Text && fila.Count != 1; fila.Dequeue()) { } if (fila.Count == 1) { T.Enabled = false; return; } for (int i = 0; i < 3; i++) { fila.Dequeue(); } while (fila.First() == "" && fila.Count <= 6) { for (; fila.First() != txtIdJogador.Text && fila.Count != 1; fila.Dequeue()) { } if (fila.Count == 1) { T.Enabled = false; return; } for (int i = 0; i < 3; i++) { fila.Dequeue(); } //MessageBox.Show(fila.First()); } while (fila.First() == "37" && fila.Count <= 6) { for (; fila.First() != txtIdJogador.Text && fila.Count != 1; fila.Dequeue()) { } if (fila.Count == 1) { T.Enabled = false; return; } for (int i = 0; i < 3; i++) { fila.Dequeue(); } //MessageBox.Show(fila.First()); } if (fila.First() == "") { lobby.MoverPirata(words.First(), "0"); } if (fila.First() == "37") { T.Enabled = false; MessageBox.Show("Todos os piratas estão no Barco"); btnSistema.Text = "Encerrado"; return; } lobby.Jooj(words.Pop(), Convert.ToInt32(txtIdJogador.Text), txtSenhaJogador.Text, Convert.ToInt32(fila.Dequeue())); btnExibirHistorico_Click(null, null); btnExibirMao_Click(null, null); btnExibirTabuleiro_Click(null, null); btnVerificarVez_Click(null, null); } else { btnSistema.Text = "Em espera"; btnExibirHistorico_Click(null, null); btnExibirMao_Click(null, null); btnExibirTabuleiro_Click(null, null); btnVerificarVez_Click(null, null); } } }
/// <summary> /// Método responsável por entrar em uma partida através do ID e senha da partida e nome do jogador. /// Apenas a Classe pode fazer uso /// </summary> /// <param name="nome">Nome da partida a ser criada</param> /// <returns></returns> public string EntrarPartida(/*string nome*/ string idPartida, string nomeJogador, string senhaPartida) { if (idPartida == string.Empty) { Erros.MensagemErro("idpartida"); return("Erro"); } else if (nomeJogador == string.Empty) { Erros.MensagemErro("nomejogador"); return("Erro"); } else if (senhaPartida == string.Empty) { Erros.MensagemErro("senhapartida"); return("Erro"); } _idPartida = Convert.ToInt32(idPartida); _nomeJogador = nomeJogador; _senhaPartida = senhaPartida; string quebraTexto = Jogo.EntrarPartida(_idPartida, _nomeJogador, _senhaPartida); if (quebraTexto == "ERRO:Quantidade máxima de jogadores atingida!\r\n") { Erros.MensagemErro("limitejogadores"); return("Limite de jogadores atingido."); } else if (quebraTexto == "ERRO:Já existe um jogador com este nome na partida\r\n") { Erros.MensagemErro("jogadorjaexiste"); return("Por favor, tente entrar com um nome diferente."); } else if (quebraTexto == "ERRO:Senha Incorreta!\r\n") { Erros.MensagemErro("senhaincorreta"); return("Por favor, digite a senha correta."); } else if (quebraTexto == "ERRO:Id ou Senha da partida está vazio") { Erros.MensagemErro(""); return("Erro"); } else if (quebraTexto == "ERRO:Partida já iniciada!\r\n") { Erros.MensagemErro("partidainiciada"); return("Não é possível entrar em uma partida que não está aberta."); } else if (quebraTexto == "ERRO:Nome com mais de 50 caracteres") { Erros.MensagemErro("limite50caracteres"); return("O limite é de 50 caracteres."); } string[] words = new string[3]; words = quebraTexto.Split(','); _idJogador = Convert.ToInt32(words[0]); _senhaJogador = words[1]; _corJogador = words[2]; Erros.MensagemSucesso("jogadorcriado"); return(_idJogador.ToString() + "," + _senhaJogador + "," + _corJogador); }