private List<Carta> createBaralho() { List<Carta> deck = new List<Carta>(); // 2 3 4 5 6 Q J R 7 A int[] pontos = { 0, 0, 0, 0, 0, 2, 3, 4, 10, 11 }; for (int i = 0; i < 40; i++) { int id = i; NAIPE naipe = (NAIPE)(id / 10); int rank = id % 10; int pontuacao = pontos[id - 10 * (id / 10)]; Carta carta = new Carta(naipe, pontuacao, id, rank); deck.Add(carta); } return deck; }
public Jogada(IPlayer jogador, Carta carta) { this.carta = carta; this.jogador = jogador; }
private Baralho createDeck() { Baralho deck = new Baralho(); // 2 3 4 5 6 Q J R 7 A int[] pontos = { 0, 0, 0, 0, 0, 2, 3, 4, 10, 11 }; for (int i = 0; i < 40; i++) { int id = i; NAIPE naipe = (NAIPE)(id / 10); int rank = id % 10; int pontuacao = pontos[id - 10 * (id / 10)]; Carta carta = new Carta(naipe, pontuacao, id, rank); deck.Add(carta); } // log file this.saveLog(deck, "save"); return deck; }
public bool Remove(Carta newCarta) { return this.baralho.Remove(newCarta); }
public void Insert(int index, Carta newCarta) { this.baralho.Insert(index, newCarta); }
public void Add(Carta newCarta) { this.baralho.Add(newCarta); }
public void PlayCard(IPlayer player, Carta card) { Jogada jogada = new Jogada(player, card); this.partidas[this.curPartida].vazas[partidas[this.curPartida].vazas.Count - 1].jogadas.Add(jogada); if (VazaChanged != null) { VazaChanged(); } if (player is HumanPlayer) { // so se pode remover a carta depois de mudar a vaza, devido a conflitos de imagens HumanPlayer h = this.ActivePlayer as HumanPlayer; h.Retirar(h.tempPosicao); h.tempPosicao = -1; } else if (player is BotPlayer) { BotPlayer h = this.ActivePlayer as BotPlayer; h.Retirar(h.tempPosicao); h.tempPosicao = -1; } }
public void DeserializeFromXML(string filename) { XDocument doc = XDocument.Load(filename); this.nextPartidaPlayer = Convert.ToInt32(doc.Element("GameModel").Element("nextPartidaPlayer").Value); this.activePlayer = Convert.ToInt32(doc.Element("GameModel").Element("activePlayer").Value); this.equipas = new Team[2]; this.players = new IPlayer[4]; List<IPlayer> jogadores = new List<IPlayer>(); var xmlEquipas = from al in doc.Element("GameModel").Element("Partida").Element("Equipas").Descendants("Equipa") select al; int i = 0; int n = 0; foreach (var newTeam in xmlEquipas) { var xmlJogadores = from al in newTeam.Descendants("Jogador") select al; foreach (var newJogador in xmlJogadores) { int jogadorID = Convert.ToInt32(newJogador.Attribute("id").Value); var xmlMao = from al in newJogador.Element("Mao").Descendants("Carta") select al; List<Carta> cartasMao = new List<Carta>(); foreach (var newCarta in xmlMao) { int id = Convert.ToInt32(newCarta.Attribute("id").Value); Carta carta; if (id != -1) { NAIPE naipe = (NAIPE)(id/10); int rank = id % 10; int pontos = pontosFull[id-10*(id/10)]; carta = new Carta(naipe, pontos, id, rank); } else { //carta = new Carta(NAIPE.nenhum, -1, -1, -1); carta = null; } cartasMao.Add(carta); } if (newJogador.Attribute("human").Value == "true") { HumanPlayer human = new HumanPlayer(); human.Nome = newJogador.Element("Nome").Value; human.tempPosicao = Convert.ToInt32(newJogador.Element("tempPosicao").Value); //human.Receber(cartasMao); human.ID = jogadorID; //this.players[n] = human; jogadores.Add(human); } else { BotPlayer bot = new BotPlayer(); bot.Nome = newJogador.Element("Nome").Value; bot.tempPosicao = Convert.ToInt32(newJogador.Element("tempPosicao").Value); //bot.Receber(cartasMao); bot.ID = jogadorID; //this.players[n] = bot; jogadores.Add(bot); } PlayerHandLists.Add(n, cartasMao); if (jogadores.Count == 2) { this.equipas[i] = new Team(jogadores); this.equipas[i].pontosPartida = Convert.ToInt32(newTeam.Attribute("pontosPartida").Value); this.equipas[i].pontosJogo = Convert.ToInt32(newTeam.Attribute("pontosJogo").Value); jogadores = new List<IPlayer>(); } n++; } i++; } for (int j = 0; j < 4; j++) { this.players[j] = this.equipas[j % 2].jogadores[j / 2]; } Partida partida = new Partida(deck, equipas, 0); int trunfoID = Convert.ToInt32(doc.Element("GameModel").Element("Partida").Element("CartaTrunfo").Value); int numVazas = Convert.ToInt32(doc.Element("GameModel").Element("Partida").Element("numVazas").Value); NAIPE naipeTrunfo = (NAIPE)(trunfoID/10); int rankTrunfo = trunfoID % 10; int pontosTrunfo = trunfoID-10*(trunfoID/10); Carta cartaTrunfo = new Carta(naipeTrunfo, pontosTrunfo, trunfoID, rankTrunfo); partida.trunfo = cartaTrunfo; partida.numVazas = numVazas; this.partidas = new List<Partida>(); this.partidas.Add(partida); List<Vaza> listaVazas = new List<Vaza>(); var xmlVazas = from al in doc.Element("GameModel").Element("Partida").Element("Vazas").Descendants("Vaza") select al; foreach (var newVaza in xmlVazas) { List<Jogada> listaJogadas = new List<Jogada>(); var xmlCartasVaza = from al in newVaza.Descendants("Carta") select al; foreach (var newCarta in xmlCartasVaza) { Jogada jogada = null; int id = Convert.ToInt32(newCarta.Attribute("id").Value); Carta carta; if (id != -1) { NAIPE naipe = (NAIPE)(id/10); int rank = id % 10; int pontos = pontosFull[id-10*(id/10)]; carta = new Carta(naipe, pontos, id, rank); } else { //carta = new Carta(NAIPE.nenhum, -1, -1, -1); carta = null; } int jID = Convert.ToInt32(newCarta.Attribute("jogadorId").Value); IPlayer vazaPlayer = getPlayerFromID(jID); if (vazaPlayer != null) { if (vazaPlayer is HumanPlayer) { jogada = new Jogada(vazaPlayer as HumanPlayer, carta); } else { jogada = new Jogada(vazaPlayer as BotPlayer, carta); } } listaJogadas.Add(jogada); } listaVazas.Add(new Vaza(listaJogadas)); } this.partidas[0].vazas = listaVazas; if (AnswerGameStart != null) { AnswerGameStart(); } }