예제 #1
0
        public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            // List of popular movies
            try
            {
                await context.PostAsync($"I am searching for movies, please be patient :)");

                MoviesSearch search      = new MoviesSearch();
                List <Movie> movieResult = await search.GetPopularMovies();

                if (movieResult.Count != 0)
                {
                    await context.PostAsync($"Here is popular movie list : ");

                    CardUtil.showHeroCardMovies((IMessageActivity)context.Activity, movieResult);
                }
                else
                {
                    await context.PostAsync($"I couldn't find list of movies, you can try again.");
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine($"Error when filtering by popular movies: {e}");
            }
            context.Done(this);
        }
예제 #2
0
        public SheepCard PlayStrongestLoosingCard(IPlayer thisPlayer, ITrick trick)
        {
            var legalCards    = thisPlayer.Cards.Where(c => trick.IsLegalAddition(c, thisPlayer));
            var winnableCards = GameStateUtils.GetCardsThatCouldWin(trick, legalCards);

            return(legalCards.Except(winnableCards).OrderBy(c => CardUtil.GetRank(c)).First());
        }
예제 #3
0
파일: Run.cs 프로젝트: isoundy000/rummy
        public bool CanFit(Card card, out Card Joker)
        {
            Joker = null;

            if (card.IsJoker())
            {
                return(card.Color == Color && Cards.Count < 14);
            }

            var jokers = Cards.Where(c => c.IsJoker());

            if (card.Suit != Suit || (Cards.Count == 14 && !jokers.Any()))
            {
                return(false);
            }

            // Check whether the new card replaces a joker
            foreach (var joker in jokers)
            {
                var jokerRank = CardUtil.GetJokerRank(Cards, Cards.IndexOf(joker));
                if (jokerRank == card.Rank)
                {
                    Joker = joker;
                    return(true);
                }
            }

            return((HighestRank != Card.CardRank.ACE && card.Rank == HighestRank + 1) ||
                   (LowestRank != Card.CardRank.ACE && card.Rank == LowestRank - 1) ||
                   (LowestRank == Card.CardRank.TWO && card.Rank == Card.CardRank.ACE));
        }
예제 #4
0
    private void SetShowPuzzle(AwardPB apb)
    {
        var card = GlobalData.CardModel.GetCardBase(apb.ResourceId);

        _cardQualityImage = transform.Find("Puzzle/CardQualityImage").GetComponent <Image>();
        transform.Find("Puzzle/NameText").GetComponent <Text>().text = card.CardName + I18NManager.Get("Visit_Hint5") + apb.Num.ToString();

        bool isPuzzle;

        isPuzzle = apb.Resource == ResourcePB.Puzzle ? true : false;
        transform.Find("Puzzle/PuzzleRawImage").gameObject.SetActive(isPuzzle);
        transform.Find("Puzzle/RawImage").gameObject.SetActive(isPuzzle);
        _cardQualityImage.sprite = AssetManager.Instance.GetSpriteAtlas(CardUtil.GetNewCreditSpritePath(card.Credit));
        // _cardQualityImage.SetNativeSize();

        RawImage cardImage = transform.Find("Puzzle/Mask/CardImage").GetComponent <RawImage>();
        Texture  texture   = ResourceManager.Load <Texture>("Card/Image/SmallCard/" + apb.ResourceId, ModuleConfig.MODULE_VISIT);

        if (texture == null)
        {
            texture = ResourceManager.Load <Texture>("Card/Image/SmallCard/1420", ModuleConfig.MODULE_VISIT);
        }
        cardImage.texture = texture;

        transform.Find("Puzzle/PuzzleRawImage/Text").GetText().text = apb.Num.ToString();
    }
예제 #5
0
 public SheepCard GiveAwayPoints(IPlayer thisPlayer, ITrick trick)
 {
     return(thisPlayer.Cards
            .Where(c => trick.IsLegalAddition(c, thisPlayer))
            .OrderByDescending(c => CardUtil.GetPoints(c))
            .First());
 }
        public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            var message = await result;

            string entity = "";

            if (message.Text.Length > 0)
            {
                entity = message.Text;
            }

            await context.PostAsync("Here is a weather : ");

            if (entity == "")
            {
                entity = "Mostar";
            }
            try
            {
                CardUtil.showWeatherHeroCard((IMessageActivity)context.Activity, WeatherData.getWeatherData(entity));
            }
            catch (Exception e)
            {
                await context.PostAsync($"I couldn't find a weather forecast :( You can try again. ");
            }

            context.Done <object>(null);
        }
예제 #7
0
        protected async override Task PostAsync(IActivity item, string state, CancellationToken token)
        {
            var searchResult = await this.searchService.Search(state);

            var replyActivity = ((Activity)item).CreateReply();
            await CardUtil.ShowSearchResults(replyActivity, searchResult, $"I'm sorry, I did not understand '{state}'.\nType 'help' to know more about me :)");
        }
예제 #8
0
        public List <SheepCard> RetireTwoFailSuitsWithOneAceOrTen()
        {
            if (_acesAndTens.Count != 1)
            {
                return(null);
            }

            var pointSuit    = _acesAndTensPerSuit.Single(g => g.Key != Suit.TRUMP).Key;
            var oneCardSuits = CardsPerSuit
                               .Where(cps => cps.Value == 1)
                               .OrderBy(cps => cps.Key == pointSuit ? 1 : 2)
                               .Select(cps => cps.Key)
                               .Take(2)
                               .ToList();
            var buryCards = _cards.Where(c => oneCardSuits.Contains(CardUtil.GetSuit(c))).ToList();

            if (buryCards.Count != 2)
            {
                return(null);
            }
            if (!buryCards.Contains(_acesAndTens.Single()))
            {
                return(null);
            }
            return(buryCards);
        }
예제 #9
0
        public void Process(GameField game, Player caster, Player opponent, PokemonCard pokemonSource)
        {
            if (caster.BenchedPokemon.Count == GameField.BenchMaxSize && opponent.BenchedPokemon.Count == GameField.BenchMaxSize)
            {
                caster.DrawCards(2);
                return;
            }

            var message = new YesNoMessage()
            {
                Message = "Do you accept the challenge?"
            }.ToNetworkMessage(caster.Id);

            if (!opponent.NetworkPlayer.SendAndWaitForResponse <YesNoMessage>(message).AnsweredYes)
            {
                caster.DrawCards(2);
                return;
            }

            var casterResponse   = DeckSearchUtil.SearchDeck(game, caster, CardUtil.GetCardFilters(CardType.BasicPokemon), GameField.BenchMaxSize - caster.BenchedPokemon.Count);
            var opponentResponse = DeckSearchUtil.SearchDeck(game, opponent, CardUtil.GetCardFilters(CardType.BasicPokemon), GameField.BenchMaxSize - opponent.BenchedPokemon.Count);

            foreach (var pokemon in casterResponse.OfType <PokemonCard>())
            {
                caster.BenchedPokemon.Add(pokemon);
            }

            foreach (var pokemon in opponentResponse.OfType <PokemonCard>())
            {
                opponent.BenchedPokemon.Add(pokemon);
            }

            caster.Deck.Shuffle();
            opponent.Deck.Shuffle();
        }
예제 #10
0
 public void RemoveCard(SheepCard card)
 {
     Participant.Cards = CardUtil.CardListToString(Cards.Except(new List <SheepCard>()
     {
         card
     }).ToList());
 }
예제 #11
0
        public List <SheepCard> RetireOneFailSuitsWithOneAceOrTen()
        {
            if (_acesAndTens.Count != 1)
            {
                return(null);
            }

            var pointSuit   = _acesAndTensPerSuit.Single(g => g.Key != Suit.TRUMP).Key;
            var twoCardSuit = CardsPerSuit
                              .Where(cps => cps.Value == 2)
                              .Where(cps => cps.Key == pointSuit)
                              .Select(cps => cps.Key)
                              .FirstOrDefault();
            var buryCards = _cards.Where(c => CardUtil.GetSuit(c) == twoCardSuit).ToList();

            if (buryCards.Count != 2)
            {
                return(null);
            }
            if (!buryCards.Contains(_acesAndTens.Single()))
            {
                return(null);
            }
            return(buryCards);
        }
예제 #12
0
 public void AddCard(SheepCard card)
 {
     Participant.Cards = CardUtil.CardListToString(Cards.Union(new List <SheepCard>()
     {
         card
     }).ToList());
 }
예제 #13
0
        public void AddBuried(SheepCard card)
        {
            var buriedList = Buried.ToList();

            buriedList.Add(card);
            BuriedCards = CardUtil.CardListToString(buriedList);
        }
예제 #14
0
        public void Process(GameField game, Player caster, Player opponent, PokemonCard pokemonSource)
        {
            var target = TargetsOpponent ? opponent : caster;

            if (!CoinflipConditional.IsOk(game, caster))
            {
                return;
            }

            if (amount == -1)
            {
                var allCards = new List <Card>(target.Hand);

                game.LastDiscard = allCards.Count;

                if (ShuffleIntoDeck)
                {
                    target.Deck.ShuffleInCards(new List <Card>(target.Hand));
                    target.Hand.Clear();
                    target.TriggerDiscardEvent(allCards);
                }
                else
                {
                    target.DiscardCards(allCards);
                }
                return;
            }

            IDeckFilter[] filters = CardUtil.GetCardFilters(CardType).ToArray();

            int minAmount = AllowDiscardLess ? 0 : Amount;

            GameUtils.DiscardCardsFromHand(target, game, new DiscardCardSettings(minAmount, Amount, filters, ShuffleIntoDeck));
        }
예제 #15
0
    public override void SetData(VisitLevelVo vo)
    {
        base.SetData(vo);
        int    index = 2;//奖励展示写死
        string path  = "Card/Image/MiddleCard/" + vo.Awards[index].ResourceId.ToString();

        Debug.Log("VisitLevelCardItem   " + path);
        RawImage propImage = transform.Find("CardMask/Card").GetComponent <RawImage>();
        Texture  tx        = ResourceManager.Load <Texture>(path, ModuleConfig.MODULE_VISIT);

        if (tx == null)
        {
            tx = ResourceManager.Load <Texture>("Card/Image/MiddleCard/1420", ModuleConfig.MODULE_VISIT);
        }
        propImage.texture = tx;

        var card   = GlobalData.CardModel.GetCardBase(vo.Awards[index].ResourceId);
        var credit = transform.GetImage("Credit");

        credit.sprite = AssetManager.Instance.GetSpriteAtlas(CardUtil.GetNewCreditSpritePath(card.Credit));


        //propImage.SetNativeSize();

        if (vo.IsPass)
        {
            ExtraAni();
        }
    }
예제 #16
0
        private void ShowTalon(int cards, string talonCardCode = null)
        {
            transform.DOMove(showPosition, 1f);
            cardsInTalon          = cards;
            CardsLeftText.text    = cards.ToString();
            TalonDisplay.enabled  = true;
            TrumpCard.enabled     = true;
            TrumpSuitIcon.enabled = false;

            if (cards <= 1)
            {
                TalonDisplay.enabled = false;
            }

            if (cards == 0)
            {
                TrumpCard.enabled     = false;
                TrumpSuitIcon.enabled = true;
            }

            if (talonCardCode != null)
            {
                TrumpCard.sprite = CardUtil.GetSprite(talonCardCode);

                int suitNumber = CardUtil.Suit(talonCardCode);
                TrumpSuitIcon.sprite = _suits[suitNumber];
            }
        }
예제 #17
0
 private SheepCard GetLeadMove(ITrick trick)
 {
     if (trick.IHand.Picker == this || IamPartner(trick))
     {
         return(Cards
                .Where(c => trick.IsLegalAddition(c, this))
                .OrderBy(c => CardUtil.GetSuit(c) == Suit.TRUMP ? 1 : 2)
                .FirstOrDefault());
     }
     else
     {
         if (trick.IHand.IGame.PartnerMethodEnum == PartnerMethod.CalledAce && trick.IHand.PartnerCardEnum.HasValue)
         {
             var partnerCardSuit = CardUtil.GetSuit(trick.IHand.PartnerCardEnum.Value);
             return(Cards
                    .OrderBy(c => CardUtil.GetSuit(c) == partnerCardSuit ? 1 : 2)
                    .FirstOrDefault());
         }
         else
         {
             return(Cards
                    .OrderBy(c => CardUtil.GetSuit(c) != Suit.TRUMP ? 1 : 2)
                    .FirstOrDefault());
         }
     }
 }
예제 #18
0
        public void GivePlayerCardTest()
        {
            var players = new TablePlayer[]  {
                new TablePlayer {
                    PlayerId = 1, GameVariant = GamesVariants.Normal
                },
                new TablePlayer {
                    PlayerId = 2, GameVariant = GamesVariants.Normal
                },
                new TablePlayer {
                    PlayerId = 3, GameVariant = GamesVariants.Normal
                },
                new TablePlayer {
                    PlayerId = 4, GameVariant = GamesVariants.Normal
                }
            };

            CardUtil.SetHandCards(players, false);
            bool[] playersHasDiamondClubCard = new bool[4];
            for (var i = 0; i < players.Length; i++)
            {
                var hasPlayerDiamondClubCard = HasDiamondClubCard(players[i].GetHandCards());
                Assert.True(players[i].HasClubsQueenOnHand == hasPlayerDiamondClubCard);
            }
        }
예제 #19
0
        protected async override Task PostAsync(IActivity item, string state, CancellationToken token)
        {
            var searchResult = await this.searchService.Search(state);

            var replyActivity = ((Activity)item).CreateReply();
            await CardUtil.ShowSearchResults(replyActivity, searchResult, $"Maaf, saya tidak mengerti '{state}'.\nKetik 'tolong' untuk info yang membantu Anda :)");
        }
예제 #20
0
        protected async override Task PostAsync(IActivity item, string state, CancellationToken token)
        {
            var searchResult = await this.searchService.Search(state);

            var replyActivity = ((Activity)item).CreateReply();
            await CardUtil.ShowSearchResults(replyActivity, searchResult, $"申し訳ありません。「{state}」を理解できませんでした。\n'ヘルプ' または 'help' と入力すると、ヘルプメニューを表示します。");
        }
예제 #21
0
        public virtual async Task MessageRecievedAsync(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            var message = await result;

            try
            {
                PeopeAppService searchService = new PeopeAppService();
                List <People>   searchResult  = await searchService.SearchByNamePeople(message.Text);

                if (searchResult.Count > 0)
                {
                    CardUtil.ShowPeopleHeroCard(message, searchResult);
                    await SelectedConfirm(context);
                }
                else
                {
                    await context.PostAsync(string.Format(CultureInfo.CurrentCulture, "No hemos encontrado información. Por favor intente de nuevo"));
                    await StartAsync(context);
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine($"Error when searching for people: {e.Message}");
            }
            // context.Done<object>(null);
        }
예제 #22
0
 public void CardUtil_GetFace()
 {
     Assert.AreEqual(CardType.QUEEN, CardUtil.GetFace(SheepCard.QUEEN_CLUBS));
     Assert.AreEqual(CardType.QUEEN, CardUtil.GetFace(SheepCard.QUEEN_DIAMONDS));
     Assert.AreEqual(CardType.N7, CardUtil.GetFace(SheepCard.N7_CLUBS));
     Assert.AreEqual(CardType.N7, CardUtil.GetFace(SheepCard.N7_DIAMONDS));
 }
예제 #23
0
        public virtual async Task MessageRecievedAsync(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            var message = await result;

            try
            {
                PeopeAppService searchService = new PeopeAppService();
                List <People>   searchResult  = await searchService.SearchByNamePeople(message.Text);

                if (searchResult.Count > 0)
                {
                    CardUtil.ShowPeopleHeroCard(message, searchResult);
                    Thread.Sleep(4000);
                    await SelectedConfirm(context);
                }
                else
                {
                    await context.PostAsync(string.Format(CultureInfo.CurrentCulture, "¡LO SIENTO...! No encontré la información. Por favor,  intente nuevamente"));
                    await StartAsync(context);
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine($"Error when searching for people: {e.Message}");
                await context.PostAsync("¡LO SIENTO...! Por el momento no esta disponible este servicio. Por favor, intente más tarde.");

                context.Done <object>(null);
            }
        }
예제 #24
0
        public void GetBestRankHandAndDeckTest()
        {
            IReadOnlyList <Card> hand = CardUtil.GetCards("2H 2S 3H 3S 3C");
            IReadOnlyList <Card> deck = CardUtil.GetCards("2D 3D 6C 9C TH");

            Assert.AreEqual(HandRank.FourOfAKind, HandChecker.GetBestRank(hand, deck));
        }
예제 #25
0
        public SheepCard PlayWeakestWin(IPlayer thisPlayer, ITrick trick)
        {
            var legalCards    = thisPlayer.Cards.Where(c => trick.IsLegalAddition(c, thisPlayer));
            var winnableCards = GameStateUtils.GetCardsThatCouldWin(trick, legalCards);

            return(winnableCards.OrderByDescending(c => CardUtil.GetRank(c)).First());
        }
예제 #26
0
        public TrickWinner Winner()
        {
            var moves = OrderedMoves;

            if (!moves.Any())
            {
                return(null);
            }
            var firstSuite = CardUtil.GetSuit(moves.First().Value);
            var validCards = new List <KeyValuePair <IPlayer, SheepCard> >();

            foreach (var keyValuePair in moves)
            {
                var suite = CardUtil.GetSuit(keyValuePair.Value);
                if (suite == firstSuite || suite == Suit.TRUMP)
                {
                    validCards.Add(keyValuePair);
                }
            }
            return(new TrickWinner()
            {
                Player = validCards.OrderBy(kvp => CardUtil.GetRank(kvp.Value)).First().Key,
                Points = moves.Sum(c => CardUtil.GetPoints(c.Value))
            });
        }
예제 #27
0
        public void SetData(DrawCardResultVo vo)
        {
            _data = vo;

            if (vo.IsNew)
            {
                transform.Find("NewImage").gameObject.Show();
            }
            else
            {
                transform.Find("NewImage").gameObject.Hide();
            }
            //todo
            bool isPuzzle;

            isPuzzle = vo.Resource == ResourcePB.Puzzle ? true : false;
            transform.Find("NameText").GetComponent <Text>().text = isPuzzle?$"{vo.Name}({I18NManager.Get("Card_PuzzleTap")})": vo.Name;
            transform.Find("PuzzleRawImage").gameObject.SetActive(isPuzzle);
            transform.Find("RawImage").gameObject.SetActive(isPuzzle);
            _cardQualityImage.sprite = AssetManager.Instance.GetSpriteAtlas(CardUtil.GetNewCreditSpritePath(vo.Credit));
            // _cardQualityImage.SetNativeSize();

            RawImage cardImage = transform.Find("Mask/CardImage").GetComponent <RawImage>();
            Texture  texture   = ResourceManager.Load <Texture>(vo.CardPath, ModuleConfig.MODULE_DRAWCARD);

            if (texture == null)
            {
                texture = ResourceManager.Load <Texture>("Card/Image/SmallCard/1000", ModuleConfig.MODULE_DRAWCARD);
            }
            cardImage.texture = texture;
        }
예제 #28
0
        public ActionResult SaveBoard([FromBody] BoardDto board)
        {
            _boardReository.SaveBoard(board);
            var hashId = CardUtil.GetHashId(User.Identity.Name, board.boardSeq);

            return(Ok(hashId));
        }
예제 #29
0
        public async Task StartAsync(IDialogContext context)
        {
            if (string.IsNullOrWhiteSpace(this.category))
            {
                FacetResult facetResult = await this.searchService.FetchFacets();

                if (facetResult.Facets.Category.Length != 0)
                {
                    List <string> categories = new List <string>();
                    foreach (Category category in facetResult.Facets.Category)
                    {
                        categories.Add($"{category.Value} ({category.Count})");
                    }

                    PromptDialog.Choice(context, this.AfterMenuSelection, categories, "Let\'s see if I can find something in the knowledge for you. Which category is your question about?");
                }
            }
            else
            {
                SearchResult searchResult = await this.searchService.SearchByCategory(this.category);

                await CardUtil.ShowSearchResults(context, searchResult, $"Sorry, I could not find any results in the knowledge base for _'{this.category}'_");

                context.Done <object>(null);
            }
        }
        public async Task Weather(IDialogContext context, LuisResult result)
        {
            // OpenWeatherAPI openWeatherAPI = new OpenWeatherAPI(WebConfigurationManager.AppSettings["OpenWeatherAPI"]);
            //OpenWeatherAPI openWeatherAPI = new OpenWeatherAPI("bd5e378503939ddaee76f12ad7a97608");
            string          entity = "";
            QureyController qc     = new QureyController();

            qc.PostQuestionOne(result.Query, result.TopScoringIntent.Intent, result.TopScoringIntent.Score.ToString(), "0");

            if (result.Entities.Count > 0)
            {
                entity = result.Entities[0].Entity;
            }

            if (entity == "" || WeatherData.getWeatherData(entity) == null)
            {
                context.Call(new WeatherDialog(), this.ResumeAfterOptionDialog);
            }
            else
            {
                try
                {
                    CardUtil.showWeatherHeroCard((IMessageActivity)context.Activity, WeatherData.getWeatherData(entity));
                    string res = "Weather for entity";
                    qc.PostAnswerOne(res, result.TopScoringIntent.Intent);
                }
                catch (Exception e)
                {
                    Debug.WriteLine($"Error when generating data: {e}");
                    await context.PostAsync($"I couldn't find a weather forecast :( You can try again. ");
                }
            }
        }