private void IniciarJogo(bool _IsJogoCarregado) { if (m_udtJogadorUm == null || m_udtJogadorDois == null) { MessageBox.Show("Configure os jogadores no menu 'Configurações'.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { if (!_IsJogoCarregado) { novoJogo = new Jogo(m_udtJogadorUm, m_udtJogadorDois, m_enumTipoJogadores); coletaDados = new InfoPartida(); coletaDados.TipoDosJogadores = TipoDosJogadores.ComputadorXComputador; } btnIniciarJogo.Enabled = false; menuDificuldade.Enabled = false; DesenhaTabuleiro(); DesenhaPecas(novoJogo.TabuleiroAtual); AtualizaMenuInferior(); t_inicio = DateTime.Now; Tempo.Start(); if (m_enumTipoJogadores == TipoDosJogadores.ComputadorXHumano) ChamaPC(); else if (m_enumTipoJogadores == TipoDosJogadores.ComputadorXComputador) ChamaDoisPCs(); } }
private void menuCarregarJogo_Click(object sender, EventArgs e) { Stream stream = null; Dados carregaJogo = null; openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Eukreukla files |*.euk"; try { if (openFileDialog.ShowDialog() == DialogResult.OK) { IFormatter formatter = new BinaryFormatter(); stream = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read, FileShare.None); int version = (int)formatter.Deserialize(stream); carregaJogo = (Dados)formatter.Deserialize(stream); m_enumTipoJogadores = carregaJogo.TipoDosJogadores; novoJogo = carregaJogo.Jogo; m_udtJogadorUm = carregaJogo.JogadorUM; m_udtJogadorDois = carregaJogo.JogadorDOIS; t_diferenca = carregaJogo.TempoDecorrido; IniciarJogo(true); } } catch (Exception ex) { } finally { if (null != stream) stream.Close(); openFileDialog.Dispose(); openFileDialog = null; carregaJogo = null; } }
/// <summary> /// Atualiza dados do jogo. /// </summary> private void AtualizaMenuInferior() { if (novoJogo != null) { if (m_udtJogadorUm.CorDoJogador == BRANCAS) { lblPecasRestantesBrancas.Text = novoJogo.PecasRestantesDosJogadores[0].ToString(); lblPecasRestantesPretas.Text = novoJogo.PecasRestantesDosJogadores[1].ToString(); } else { lblPecasRestantesBrancas.Text = novoJogo.PecasRestantesDosJogadores[1].ToString(); lblPecasRestantesPretas.Text = novoJogo.PecasRestantesDosJogadores[0].ToString(); } m_NumeroDePecasComidas = 24 - (novoJogo.PecasRestantesDosJogadores[0] + novoJogo.PecasRestantesDosJogadores[1]); lblNumeroMovimentos.Text = m_NumeroDeMovimentos.ToString(); lblNumeroPecasComidas.Text = m_NumeroDePecasComidas.ToString(); if (m_NumeroDeMovimentos > 0) lblMediaComidasPorMovimentos.Text = ((double)m_NumeroDePecasComidas / (double)m_NumeroDeMovimentos).ToString("0.00"); else lblMediaComidasPorMovimentos.Text = "--"; switch (novoJogo.VezDoJogador) { case EstadoDoJogo.JogadorUm: lblEstadoDoJogo.Text = "Vez do jogador UM, peças " + (m_udtJogadorUm.CorDoJogador == BRANCAS ? "vermelhas." : "pretas."); break; case EstadoDoJogo.JogadorDois: lblEstadoDoJogo.Text = "Vez do jogador DOIS, peças " + (m_udtJogadorDois.CorDoJogador == BRANCAS ? "vermelhas." : "pretas."); break; case EstadoDoJogo.Fim: coletaDados.IsAdversarioVencedor = novoJogo.IsAdversarioVencedor; novoJogo = null; lblEstadoDoJogo.Text = "Fim de jogo."; Tempo.Stop(); break; case EstadoDoJogo.ComputadorJogando: switch (m_enumTipoJogadores) { case TipoDosJogadores.ComputadorXHumano: lblEstadoDoJogo.Text = "Vez do Computador, peças " + (m_udtJogadorUm.CorDoJogador == BRANCAS ? "vermelhas." : "pretas."); break; case TipoDosJogadores.HumanoXComputador: lblEstadoDoJogo.Text = "Vez do Computador, peças " + (m_udtJogadorDois.CorDoJogador == BRANCAS ? "vermelhas." : "pretas."); break; case TipoDosJogadores.ComputadorXComputador: if (novoJogo.IsComputadorUM) lblEstadoDoJogo.Text = "Vez do Computador UM, peças " + (m_udtJogadorDois.CorDoJogador == BRANCAS ? "vermelhas." : "pretas."); else lblEstadoDoJogo.Text = "Vez do Computador DOIS, peças " + (m_udtJogadorDois.CorDoJogador == BRANCAS ? "vermelhas." : "pretas."); break; default: break; } break; default: break; } //Testa impate if (m_NumeroDeMovimentos > 70) { lblEstadoDoJogo.Text = "Empate por número de movimentos"; Tempo.Stop(); } } }