/// <summary> /// Construtor /// </summary> public Jogo(object _udtJogadorUm, object _udtJogadorDois, TipoDosJogadores _enumTipoJogo) { ////Chama o método que realiza jogada do computador para P1 //m_cp1 = new MudaEstado(CP1); ////Chama o método que realiza jogada do computador para P2 //m_cp2 = new MudaEstado(CP2); ////Chama o método que mostra o resultado do jogo //m_fim = new MudaEstado(Fim); m_enumTipoJogo = _enumTipoJogo; switch (m_enumTipoJogo) { case TipoDosJogadores.HumanoXComputador: m_HJogadorUm = new JHumano(); m_CJogadorDois = new JComputador(); CopiaAtributosJogadores((Jogador)_udtJogadorUm, (Jogador)_udtJogadorDois); break; case TipoDosJogadores.HumanoXFComputador: m_HJogadorUm = new JHumano(); m_CJogadorDois = new JComputador(); CopiaAtributosJogadores((Jogador)_udtJogadorUm, (Jogador)_udtJogadorDois); break; case TipoDosJogadores.HumanoXHumano: m_HJogadorUm = new JHumano(); m_HJogadorDois = new JHumano(); CopiaAtributosJogadores((Jogador)_udtJogadorUm, (Jogador)_udtJogadorDois); break; case TipoDosJogadores.ComputadorXHumano: m_CJogadorUm = new JComputador(); m_HJogadorDois = new JHumano(); CopiaAtributosJogadores((Jogador)_udtJogadorUm, (Jogador)_udtJogadorDois); break; case TipoDosJogadores.ComputadorXComputador: m_CJogadorUm = new JComputador(); m_CJogadorDois = new JComputador(); CopiaAtributosJogadores((Jogador)_udtJogadorUm, (Jogador)_udtJogadorDois); break; case TipoDosJogadores.ComputadorXFComputador: m_CJogadorUm = new JComputador(); m_CJogadorDois = new JComputador(); CopiaAtributosJogadores((Jogador)_udtJogadorUm, (Jogador)_udtJogadorDois); break; default: break; } //Instancia o Tabuleiro //A posicao 0 do array nao sera usada para facilitar varios calculos dos algoritmos //que envolvem os indices dele, por isso 26 posicoes para o jogo com 25 casas m_TabuleiroAtual = new int[26]; m_TabuleiroProximosMovimentos = new int[26]; Jogador jogadorConfig = (Jogador)_udtJogadorUm; if (jogadorConfig.IsPrimeiroJogador) { if (m_enumTipoJogo == TipoDosJogadores.HumanoXComputador || m_enumTipoJogo == TipoDosJogadores.HumanoXHumano || m_enumTipoJogo == TipoDosJogadores.HumanoXFComputador) m_enmEstado = EstadoDoJogo.JogadorUm; else if (m_enumTipoJogo == TipoDosJogadores.ComputadorXHumano || m_enumTipoJogo == TipoDosJogadores.ComputadorXComputador || m_enumTipoJogo == TipoDosJogadores.ComputadorXFComputador) { m_enmEstado = EstadoDoJogo.ComputadorJogando; m_IsComputadorUM = true; } } else { if (m_enumTipoJogo == TipoDosJogadores.ComputadorXHumano || m_enumTipoJogo == TipoDosJogadores.HumanoXHumano) m_enmEstado = EstadoDoJogo.JogadorDois; else if ( m_enumTipoJogo == TipoDosJogadores.HumanoXComputador || m_enumTipoJogo == TipoDosJogadores.ComputadorXComputador || m_enumTipoJogo == TipoDosJogadores.ComputadorXFComputador) { m_enmEstado = EstadoDoJogo.ComputadorJogando; m_IsComputadorUM = false; } } //Inicializa o tabuleiro for (int i = 1; i < 26; i++) { /* * Preenche de 1 a 12 com pecas do jogador NOT(Embaixo). * 14 a 25 com pecas do jogador Embaixo. * A casa 13 inicia vazia. */ if (jogadorConfig.IsEmbaixo) { if (i < 13) m_TabuleiroAtual[i] = CorJogadorAdversario(jogadorConfig.CorDoJogador); else m_TabuleiroAtual[i] = jogadorConfig.CorDoJogador; } else { if (i < 13) m_TabuleiroAtual[i] = jogadorConfig.CorDoJogador; else m_TabuleiroAtual[i] = CorJogadorAdversario(jogadorConfig.CorDoJogador); } m_TabuleiroProximosMovimentos[i] = VAZIA; } m_TabuleiroAtual[13] = VAZIA; }
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; } }
private void SetaTipoJogadores() { if (JogadorUM.IsHumano) if (JogadorDOIS.IsHumano) this.TipoDosJogadores = TipoDosJogadores.HumanoXHumano; else if (JogadorDOIS.IsFuncional) this.TipoDosJogadores = TipoDosJogadores.HumanoXFComputador; else this.TipoDosJogadores = TipoDosJogadores.HumanoXComputador; else if (JogadorDOIS.IsHumano) this.TipoDosJogadores = TipoDosJogadores.ComputadorXHumano; else if (JogadorDOIS.IsFuncional) this.TipoDosJogadores = TipoDosJogadores.ComputadorXFComputador; else this.TipoDosJogadores = TipoDosJogadores.ComputadorXComputador; }
/// <summary> /// Abre form de configuracao e recebe jogadores e tipo de jogo. /// </summary> private void Configuracao() { FrmConfig frmConfig = new FrmConfig(); if (frmConfig.ShowDialog() == DialogResult.OK) { m_udtJogadorUm = frmConfig.JogadorUM; m_udtJogadorDois = frmConfig.JogadorDOIS; m_enumTipoJogadores = frmConfig.TipoDosJogadores; } }