コード例 #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            int count_A = 0;
            int count_B = 0;

            int[] GuessNum = new int[4];

            StringProcessing stringKeyIn = new StringProcessing(keyInBox.Text);

            GuessNum = stringKeyIn.CheckAndConvert();

            if (GuessNum != null)
            {
                GuessNum guessNum = new GuessNum(GuessNum);
                guessNum.CheckMyself(ref count_A, ref count_B);
                var listView = new ListViewItem(keyInBox.Text);     //將資料新增到LListViewItem
                listView.SubItems.Add(count_A + "A" + count_B + "B");
                listView1.Items.Add(listView);
                keyInBox.Text = "";

                if (count_A == 4)
                {
                    MessageBox.Show("You Win!", "Congradulations");
                    SecretNumUpdate();
                    //testLabel.Text = secretNum[0].ToString() + secretNum[1].ToString() + secretNum[2].ToString() + secretNum[3].ToString();
                    listView1.Items.Clear();
                    keyInBox.Text = "";
                }
            }
            else
            {
                keyInBox.Text = "";
            }
        }
コード例 #2
0
        public ActionResult GuessingGame()
        {
            int rnd = rng.Next(1, 100);

            this.Session["Answer"]    = rnd;
            this.Session["GuessList"] = new List <int>();
            GuessNum guess = new GuessNum
            {
                Answer = (int)this.Session["Answer"],
            };

            return(View(guess));
        }
コード例 #3
0
 public ActionResult GuessingGame(GuessNum guess)
 {
     guess.Answer = (int)this.Session["Answer"];
     guess.CompareNum();
     return(View(guess));
 }
コード例 #4
0
        public async Task <IHttpActionResult> POST()
        {
            string postData = Request.Content.ReadAsStringAsync().Result;
            //剖析JSON
            var messageObject = isRock.LineBot.Utility.Parsing(postData).events.FirstOrDefault();

            if (!await VaridateSignature(Request))
            {
                isRock.LineBot.Utility.ReplyMessage(messageObject.replyToken, "驗證失敗", ChannelAccessToken);
                return(Ok());
            }

            //取得user說的話
            string message = messageObject.message.text;
            //回覆訊息
            string reply = string.Empty;
            //Message = "你說了:" + item.message.text;

            string       id       = string.Empty;
            LineUserInfo userInfo = GetUserInfoAndId(messageObject, out id);
            string       ownKey   = userInfo.userId + "Own";
            var          regex    = new Regex("\\D", RegexOptions.IgnoreCase);

            try
            {
                if (message == "大樂透")
                {
                    var numbers  = GetLetou();
                    var letouMsg = Letou.Instance.Compare(numbers);
                    reply  = $"給你一組幸運號碼: {numbers}\\n";
                    reply += letouMsg;
                }
                else if (message == "安安9527" || message == "9527安安" || message == "安安")
                {
                    Utility.ReplyMessageWithJSON(messageObject.replyToken, Demo.Show(), ChannelAccessToken);
                }
                else if (message.Contains("抽"))
                {
                    var beauty = Beauty.GetBeauty();
                    var random = new Random(new Random().Next(1, beauty.Count()));
                    var image  = beauty[random.Next(1, beauty.Count())];
                    Utility.ReplyImageMessage(messageObject.replyToken, image, image, ChannelAccessToken);
                    return(Ok());
                }
                else if (message.Contains("美食"))
                {
                    var eat  = new Eat();
                    var data = await eat.GetEatData(message.Replace("美食", ""));

                    var list = new List <TemplateModel>();

                    var model = new TemplateModel();
                    model.template         = new CarouselModel();
                    model.template.columns = new List <ThumbnailImageModel>();

                    foreach (var item in data.response.Where(x => x.restaurant != null).Take(10))
                    {
                        model.template.columns.Add(new ThumbnailImageModel()
                        {
                            thumbnailImageUrl = item.restaurant.cover_url,
                            title             = item.restaurant.name,
                            text          = item.address,
                            defaultAction = new UriModel()
                            {
                                label = "瀏覽網誌",
                                uri   = item.url.IndexOf('-') > 0 ? item.url.Substring(0, item.url.IndexOf('-')) : item.url
                            },
                            actions = new List <ActionModel>()
                            {
                                new UriModel()
                                {
                                    label = "導航",
                                    uri   = $"https://www.google.com.tw/maps/place/{item.restaurant.address}"
                                }
                            }
                        });
                    }
                    list.Add(model);

                    if (model.template.columns.Count > 0)
                    {
                        Utility.ReplyMessageWithJSON(messageObject.replyToken, JsonConvert.SerializeObject(list), ChannelAccessToken);
                    }
                    else
                    {
                        reply = "查無資料...";
                    }
                }
                else if (message.Contains("天氣"))
                {
                    var area = message.Replace("天氣", "").Replace("台", "臺").Trim();
                    var data = (await Weather.Instance.GetData()).records.location.FirstOrDefault(x => x.locationName.Contains(area));
                    var dic  = new Dictionary <string, string>();
                    foreach (var item in data.weatherElement.OrderBy(x => x.elementName))
                    {
                        foreach (var time in item.time)
                        {
                            var key = $"{time.startTime}~{time.endTime}";
                            if (!dic.Keys.Contains(key))
                            {
                                dic.Add(key, "");
                            }

                            switch (item.elementName)
                            {
                            case "Wx":
                                dic[key] += $"天氣:{time.parameter.parameterName}\\n";
                                break;

                            case "PoP":
                                dic[key] += $"降雨機率:{time.parameter.parameterName}%\\n";
                                break;

                            case "MinT":
                                dic[key] += $"低溫:{time.parameter.parameterName}C\\n";
                                break;

                            case "CI":
                                dic[key] += $"適度:{time.parameter.parameterName}\\n";
                                break;

                            case "MaxT":
                                dic[key] += $"高溫:{time.parameter.parameterName}C\\n";
                                break;

                            default:
                                break;
                            }
                        }
                    }

                    foreach (var item in dic)
                    {
                        reply += $"{item.Key}\\n{item.Value}";
                    }

                    if (reply == string.Empty)
                    {
                        reply = "查無資料... 試試台北天氣";
                    }
                }
                else if (message.ToLower().Contains("ubike"))
                {
                    var data = await UBike.Instance.GetAllData();

                    var mday        = data.FirstOrDefault().mday;
                    var refreshTime = new DateTime(Convert.ToInt16(mday.Substring(0, 4)), Convert.ToInt16(mday.Substring(4, 2)),
                                                   Convert.ToInt16(mday.Substring(6, 2)), Convert.ToInt16(mday.Substring(8, 2)),
                                                   Convert.ToInt16(mday.Substring(10, 2)), Convert.ToInt16(mday.Substring(12, 2)));
                    var location = message.ToLower().Replace("ubike", "").Trim();
                    if (location == "三重家")
                    {
                        foreach (var item in data.Where(x => x.sno == "1008" || x.sno == "1010"))
                        {
                            reply += $"[{item.sarea}-{item.sna}]車{item.sbi}空{item.bemp}\\n";
                        }

                        if (reply == string.Empty)
                        {
                            reply = "查無資料...";
                        }
                        else
                        {
                            reply += $"更新時間{refreshTime.ToString("yyyy/MM/dd HH:mm:ss")}";
                        }
                    }
                    else if (location.Contains("區"))
                    {
                        foreach (var item in data.Where(x => x.sarea == location))
                        {
                            reply += $"[{item.sarea}-{item.sna}]車{item.sbi}空{item.bemp}\\n";
                        }

                        if (reply == string.Empty)
                        {
                            reply = "查無資料...";
                        }
                        else
                        {
                            reply += $"更新時間{refreshTime.ToString("yyyy/MM/dd HH:mm:ss")}";
                        }
                    }
                    else if (location != string.Empty)
                    {
                        foreach (var item in data.Where(x => x.sna.Contains(location)))
                        {
                            reply += $"[{item.sarea}-{item.sna}]車{item.sbi}空{item.bemp}\\n";
                        }

                        if (reply == string.Empty)
                        {
                            reply = "查無資料...";
                        }
                        else
                        {
                            reply += $"更新時間{refreshTime.ToString("yyyy/MM/dd HH:mm:ss")}";
                        }
                    }
                }
                else if (message == "大樂透機率")
                {
                    reply = Letou.Instance.GetHighRateNumbers();
                }
                else if (message.Contains("大樂透"))
                {
                    var numbers = message.Split(' ')?[1];
                    if (numbers != null && numbers.Split(',').Count() == 6)
                    {
                        reply = Letou.Instance.Compare(numbers);
                    }
                }
                //else if (LuisMaster.HitLuis(message,out string luisMessage))
                //{
                //    reply = $"{luisMessage}";
                //}
                else if (message.Contains("打球了"))
                {
                    bool     isFriday = false;
                    DateTime date     = DateTime.Now;

                    if (date.DayOfWeek == DayOfWeek.Friday)
                    {
                        reply = $"今晚7點半,高品打老虎";
                    }
                    else
                    {
                        while (!isFriday)
                        {
                            if (date.DayOfWeek == DayOfWeek.Friday)
                            {
                                isFriday = true;
                            }
                            else
                            {
                                date = date.AddDays(1);
                            }
                        }

                        reply = $"{date.ToString("yyyy/M/d")} 星期五 晚上7點半, 高品集合~~";
                    }
                }
                else if (message == "猜數字")
                {
                    reply = $"{userInfo.displayName} 開始猜數字 , 請輸入: 4位數字 (ex:1234) , 時間20分鐘";
                    var number = new GuessNum().GenNum();
                    var policy = new CacheItemPolicy
                    {
                        AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(20)
                    };
                    cache.Set(ownKey, number, policy);
                    cache.Set($"{ownKey}Count", 0, policy);
                    cache.Remove(id);
                }
                else if (!regex.IsMatch(message) && message.Length == 4 && cache[ownKey] != null && cache[id] == null)
                {
                    var ans = cache[ownKey].ToString();
                    int.TryParse(cache[$"{ownKey}Count"].ToString(), out int count);
                    count++;
                    var compare = new GuessNum().Compare(ans, message, out string errorMessage);
                    if (compare.A == 4)
                    {
                        reply = $"恭喜你猜對了 : {message} [你一共猜了{count}次]";
                        cache.Remove(ownKey);
                        cache.Remove($"{ownKey}Count");
                    }
                    else if (errorMessage != string.Empty)
                    {
                        reply += $"{errorMessage}";
                    }
                    else
                    {
                        reply += $"{message}==>{compare.A} A {compare.B} B ...己經猜了{count}次";
                        cache[$"{ownKey}Count"] = count;
                    }
                }
                else if (message == "一起猜")
                {
                    reply = $"大家開始猜數字 , 請輸入: 4位數字 (ex:1234) , 時間20分鐘";
                    var number = new GuessNum().GenNum();
                    var policy = new CacheItemPolicy
                    {
                        AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(20)
                    };
                    cache.Set(id, number, policy);
                    cache.Set($"{id}Count", 0, policy);
                }
                else if (!regex.IsMatch(message) && message.Length == 4 && cache[id] != null)
                {
                    var ans = cache[id].ToString();
                    int.TryParse(cache[$"{id}Count"].ToString(), out int count);
                    count++;
                    var compare = new GuessNum().Compare(ans, message, out string errorMessage);
                    if (compare.A == 4)
                    {
                        reply += $"恭喜猜對了 : {message} [一共猜了{count}次]" +
                                 cache.Remove(id);
                        cache.Remove($"{id}Count");
                    }
                    else if (errorMessage != string.Empty)
                    {
                        reply += $"{errorMessage}";
                    }
                    else
                    {
                        reply += $"{message}==>{compare.A} A {compare.B} B ...己經猜了{count}次";
                        cache[$"{id}Count"] = count;
                    }
                }
                else if (message.Contains("PM2.5"))
                {
                    var word = message.Split('的');
                    if (word.Length == 2 && word[1].Contains("PM2.5"))
                    {
                        var area  = word[0].Replace("台", "臺");
                        var air   = new AirQuality();
                        var model = air.GetList().Where(x => x.county.Contains(area) || x.Site.Contains(area));
                        if (model.Count() > 0)
                        {
                            foreach (var item in model)
                            {
                                reply += $"{item.county}{item.Site}的PM2.5為[{item.PM25}], {item.Status}\\n";
                            }
                            reply += $"更新時間:{model.FirstOrDefault().DataCreationDate.Value}";
                        }
                        else
                        {
                            reply = "查無資料 , 有可能打錯關鍵字, 可以試試 新北市的PM2.5 或 三重的PM2.5";
                        }
                    }
                }

                //回覆API OK
                isRock.LineBot.Utility.ReplyMessage(messageObject.replyToken, $"{reply}", ChannelAccessToken);

                //Utility.ReplyMessageWithJSON(messageObject.replyToken,FlexMessage(), ChannelAccessToken);
                return(Ok());
            }
            catch (Exception ex)
            {
                //isRock.LineBot.Utility.ReplyMessage(messageObject.replyToken, $"{ex.Message}  \nitem.source.type {messageObject.source.type}", ChannelAccessToken);
                return(Ok());
            }
        }