示例#1
0
        /// <summary>
        /// Valida a jogada
        /// </summary>
        /// <param name="played"></param>
        /// <returns></returns>
        public bool ValidatePlay(UIElement played)
        {
            Player        auxplayer = this.GetCurrentPlayer();
            Lista <Carta> auxlista  = auxplayer.GetHand();
            Carta         aux       = this.descarte.GetTopCard();

            foreach (Carta card in auxlista)
            {
                if (played.Uid == card.GetID())
                {
                    if (true)
                    //if (aux.Compatible(card, this.colorChosen))
                    {
                        PlayCard(card);
                        this.colorChosen = 0;
                        return(true);
                    }
                }
            }
            return(false);
        }
示例#2
0
        /// <summary>
        /// Define o angulo da carta com base no jogador
        /// </summary>
        /// <param name="card"></param>
        /// <returns></returns>
        protected Carta SetCardAngle(Carta card)
        {
            switch (this.position)
            {
            case PlayerPosition.Left:
                RotateTransform rotate = new RotateTransform(-90);
                card.ElementUI.RenderTransform = rotate;
                return(card);

            case PlayerPosition.Right:
                rotate = new RotateTransform(90);
                card.ElementUI.RenderTransform = rotate;
                return(card);

            case PlayerPosition.Top:
                rotate = new RotateTransform(180);
                card.ElementUI.RenderTransform = rotate;
                return(card);

            default: return(card);
            }
        }
示例#3
0
        /// <summary>
        /// Faz o evento conforme carta jogada.
        /// Retorna false caso a carta jogada for do tipo Curinga
        /// </summary>
        /// <param name="cardJogada"></param>
        public void EventAtivado(Carta cardJogada)
        {
            if (cardJogada is Especial)
            {
                Especial aux = (Especial)cardJogada;

                switch (aux.Efeito)
                {
                case Efeito.Comprar2:
                    this.Comprar(2);
                    break;

                case Efeito.Bloquear:
                    this.Bloquear();
                    break;

                case Efeito.Inverter:
                    this.Inverter();
                    break;
                }
            }
            else if (cardJogada is Curinga) //coringa troca cor
            {
                Curinga aux = (Curinga)cardJogada;
                if (this.eng.GetCurrentPlayer().Position == PlayerPosition.Bottom)
                {
                    this.anim.ShowPaletColors();
                }
                switch (aux.Efeito)
                {
                case Efeito.MudarCor:
                    break;

                case Efeito.MudarCorEComprar4:
                    Comprar(4);
                    break;
                }
            }
        }
示例#4
0
文件: Bot.cs 项目: juliocnp/UNO-Game
        /// <summary>
        /// Animação da retirada da carta do monte para a mão do jogador
        /// </summary>
        /// <returns></returns>
        private void AnimationMontToHand(Carta card)
        {
            this.RotateToHand(getcard);

            Carta aux = this.GetLastCard();

            this.moveAnimY2.From     = Canvas.GetTop(card.ElementUI);
            this.moveAnimY2.To       = Canvas.GetTop(aux.ElementUI);
            this.moveAnimY2.Duration = new Duration(TimeSpan.FromMilliseconds(250));

            this.moveAnimX2.From     = Canvas.GetLeft(card.ElementUI);
            this.moveAnimY2.To       = Canvas.GetLeft(aux.ElementUI) + 40;
            this.moveAnimY2.Duration = new Duration(TimeSpan.FromMilliseconds(250));

            moveAnimY2.FillBehavior = FillBehavior.Stop;
            moveAnimX2.FillBehavior = FillBehavior.Stop;

            card.ElementUI.BeginAnimation(Canvas.TopProperty, moveAnimY2);
            card.ElementUI.BeginAnimation(Canvas.LeftProperty, moveAnimX2);

            Canvas.SetLeft(card.ElementUI, Canvas.GetLeft(aux.ElementUI));
            Canvas.SetTop(card.ElementUI, Canvas.GetTop(aux.ElementUI) + 40);
        }
示例#5
0
 public void PlayCard(Carta card)
 {
     this.cartas.Push(card);
 }
示例#6
0
文件: Bot.cs 项目: juliocnp/UNO-Game
 /// <summary>
 /// Evento de animação completa para o método AnimationHandToColetor()
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void MoveAnimX_Completed(object sender, EventArgs e)
 {
     this.cdTop     = null;
     this.anim1loop = this.anim2loop = 0;
     this.eng.EndTurn();
 }
示例#7
0
文件: Bot.cs 项目: juliocnp/UNO-Game
        /// <summary>
        /// Simula jogadas de um player
        /// </summary>
        /// <param name="cardMonte">
        /// Recebe a carta do topo do coletor e o Monte</param>
        public void Jogar()
        {
            Log.AddEventoJogadorAtual(this);
            // pega carta do top do coletor como referencia
            cdTop = this.eng.Descarte.GetTopCard();
            Lista <Carta> listaaux = new Lista <Carta>();

            if (this.hand.Count == 1)
            {
                base.TimeToUNO();
            }
            //prioridade Normal(menor numero) > especial
            foreach (Carta cardMao in this.hand)
            {
                if (cdTop.Compatible(cardMao, this.eng.ColorChosen))
                {
                    listaaux.Add(cardMao);
                }
            }
            this.eng.ColorChosen = 0;
            if (listaaux.Count > 1)
            {
                foreach (Carta card in listaaux)
                {
                    if (card is Curinga)
                    {
                        this.getcard = card;
                    }

                    if (card is Especial)
                    {
                        this.getcard = card;
                    }

                    if (card is Normal)
                    {
                        this.getcard = card;
                        break;
                    }
                }
            }
            else if (listaaux.Count == 1)
            {
                if (listaaux[0] is Curinga)
                {
                    this.eng.ColorChosen = this.GetHightColor();
                }
                this.getcard = listaaux[0];
            }
            else
            {
                this.anim2loop++;
                if (this.eng.Monte.Count() > 0)
                {
                    this.getcard = eng.RemoveFromMonte();
                    Rectangle cardUI = getcard.ElementUI;
                    Canvas.SetLeft(cardUI as UIElement, Canvas.GetLeft(this.eng.MonteUI));
                    Canvas.SetTop(cardUI as UIElement, Canvas.GetTop(this.eng.MonteUI));

                    this.eng.Enviroment.Children.Add(cardUI);
                    this.AnimationMontToHand(this.getcard);
                    this.AddCardToHand(getcard);
                }
            }

            if (this.anim2loop == 0)
            {
                this.eng.PlayCard(this.getcard);
                this.AnimationHandToColetor(this.getcard);
            }
        }
示例#8
0
 public void Add(Carta card)
 {
     this.cartas.Push(card);
 }
示例#9
0
 /// <summary>
 /// Retira uma carta da mão do jogador
 /// </summary>
 /// <param name="card"></param>
 /// <returns></returns>
 public Carta PlayCard(Carta card)
 {
     return(Remover(card));
 }
示例#10
0
 /// <summary>
 /// Recebe a primeira carta do baralho para ser a referência pro procedimento do jogo
 /// </summary>
 /// <param name="primeiranalista"></param>
 public Coletor(Carta primeiranalista)
 {
     this.cartas.Push(primeiranalista);
 }
示例#11
0
 //Insere na pilha uma carta jogada
 public void GetPlayedCard(Carta card)
 {
     this.cartas.Push(card);
 }
示例#12
0
 /// <summary>
 /// Adiciona uma carta a mão do jogador
 /// </summary>
 /// <param name="card"></param>
 public void AddCardToHand(Carta card)
 {
     this.hand.Add(card);
 }