Пример #1
0
        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();
            }
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        /// <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();
                }

            }
        }