예제 #1
0
        private void V_JogosInacabados_PedidoLoadJogosInacabados(int i)
        {
            List <Jogo> jogosInacabados = new List <Jogo>();

            if (Program.M_Jogo.JogosInacabados.Count == 0)
            {
                var folder = AppDomain.CurrentDomain.BaseDirectory.Replace("\\bin\\Debug", "\\XML");
                if (File.Exists(folder + "JogosInacabados.xml"))
                {
                    XDocument doc = XDocument.Load(folder + "JogosInacabados.xml");
                    if (doc.Descendants("Jogo").Count() != 0)
                    {
                        int     numJogador = 0;
                        Jogador j1 = new Jogador(), j2 = new Jogador();
                        bool    jogadorEncontrado = false;

                        //Obter conjunto de jogosInacabados
                        var jogos = from jogo in doc.Descendants("Jogo")
                                    select jogo;

                        //Para cada jogoInacabado, verificamos se Algum dos jogadores têm o id do jogador logado
                        foreach (var jogoIn in jogos)
                        {
                            foreach (var jogador in jogoIn.Element("Jogadores").Elements())
                            {
                                numJogador++;
                                if (jogador.Name == "Pessoa") //Se o jogador for uma pesso e for o primeiro jogador
                                {
                                    if (numJogador == 1)
                                    {
                                        User u = new User();
                                        u  = DataBaseAccess.GetUserById(Convert.ToInt16(jogador.Attribute("Id").Value));
                                        j1 = new Pessoa(u, Convert.ToBoolean(jogador.Element("Cor").Value), Convert.ToBoolean(jogador.Element("Prioridade").Value));
                                    }
                                    else
                                    {
                                        User u2 = new User();
                                        u2 = DataBaseAccess.GetUserById(Convert.ToInt16(jogador.Attribute("Id").Value));
                                        j2 = new Pessoa(u2, Convert.ToBoolean(jogador.Element("Cor").Value), Convert.ToBoolean(jogador.Element("Prioridade").Value));
                                    }

                                    if (jogador.Attribute("Id").Value == i.ToString())
                                    {
                                        jogadorEncontrado = true;
                                    }
                                }
                                else if (jogador.Name == "Robot")
                                {
                                    j2 = new Robot(Convert.ToBoolean(jogador.Element("Cor").Value), Convert.ToBoolean(jogador.Element("Prioridade").Value));
                                }
                            }


                            if (jogadorEncontrado)
                            {
                                Posicao[,] t = new Posicao[8, 8];
                                foreach (var posicao in jogoIn.Descendants("Tabuleiro").Elements())
                                {
                                    int    x, y;
                                    string coordenadas = posicao.Attribute("Coordenada").Value;

                                    x = Convert.ToInt32(coordenadas.Remove(1, 2)); // 0;1 -> 0
                                    y = Convert.ToInt32(coordenadas.Remove(0, 2)); // 1;0 -> 0

                                    if (posicao.Name == "Vazia")
                                    {
                                        t[x, y] = new Vazia();
                                    }
                                    else if (posicao.Name == "Invalida")
                                    {
                                        t[x, y] = new Invalida();
                                    }
                                    else if (posicao.Attribute("Tipo").Value == "Simples")
                                    {
                                        t[x, y] = new Simples(Convert.ToBoolean(posicao.Attribute("Cor").Value), Convert.ToBoolean(posicao.Attribute("Sentido").Value));
                                    }
                                    else
                                    {
                                        t[x, y] = new Dama(Convert.ToBoolean(posicao.Attribute("Cor").Value), Convert.ToBoolean(posicao.Attribute("Sentido").Value));
                                    }
                                }

                                Tabuleiro tab = new Tabuleiro(t);

                                Jogo j = new Jogo(j1, j2, tab);
                                j.Id = Convert.ToInt16(jogoIn.Attribute("Id").Value);

                                jogosInacabados.Add(j);
                            }


                            numJogador        = 0;
                            jogadorEncontrado = false;
                        }
                    }
                }
            }

            Program.M_Jogo.LoadJogosInacabados(jogosInacabados);
        }
예제 #2
0
 private void V_JogosInacabados_PedidoVoltarAJogo(Jogo j)
 {
     Program.M_Jogo.ComecarJogo(j);
 }