zoukankan      html  css  js  c++  java
  • wpf首次项目开发总结之人机交互模式

        我们wpf项目有一个人机交互答题模式,即人在答对题后换机器答题,机器人答对题后换人答题,这种两种模式是换不干扰的,这是我们遇到一个比较大的问题,怎样实现这样的一个人机交互的模式。

        我们首先对其画出我们思路流程图,页面载入,即从数据库中随机读取题目,一开始是人答题环节,在每个答案按钮事件中都对其答案进行判断,当答案正确就进入机器人答题环节,在机器人答题中我们对机器人代码首先做了一个DispatcherTimer delay = new DispatcherTimer();DispatcherTimer Bottime = new DispatcherTimer();定时运行和延迟时钟,他会对机器人答题环节进行时间限制,首先对时钟进行属性设置, delay.Tick += new EventHandler(delay_Tick);  delay.Interval = TimeSpan.FromSeconds(1.00);Bottime.Tick += new EventHandler(bot_timer);
       Bottime.Interval = TimeSpan.FromSeconds(3.00);Bottime.Tick += new EventHandler(bot_timer); Bottime.Interval = TimeSpan.FromSeconds(3.00);分别时间过后的改变事件和时钟时间长短,即机器人题目载入后延迟3秒后才机器人给出答案,机器人答完题后在延迟变回人答题状态。就接下来编译机器人答题过程核心代码:

    public void bot_timer(object sender, EventArgs e)  //机器人运行时种函数
            {
                int a;
                if (Application.Current.Properties["core"].ToString() == "c1")
                    a = 7;
                else if (Application.Current.Properties["core"].ToString() == "c2")
                    a = 8;
                else
                    a = 9;
                Random rand = new Random();
                int randkey = rand.Next(10);
                if (randkey <= a)
                {
    
                    string flag = answer;
                    flag = flag.ToLower();
                    switch (flag)
                    {
                        case "a":
    
                            btn_A.Background = Brushes.Yellow;
    
                            break;
                        case "b":
    
                            btn_B.Background = Brushes.Yellow;
    
                            break;
                        case "c":
    
                            btn_C.Background = Brushes.Yellow;
    
                            break;
                        case "d":
    
                            btn_D.Background = Brushes.Yellow;
    
                            break;
                    }
    
    
                }
                else
                {
    
                    Random rand2 = new Random();
                    int randkey1 = rand2.Next(1, 4);
                    switch (randkey1)
                    {
                        case 1:
    
                            btn_A.Background = Brushes.Yellow;
                            if (answer == "A")
                            {
    
    
                            }
                            else
                            {
    
                                NavigationService.Navigate(new Uri("lose.xaml", UriKind.Relative));
                                Application.Current.Properties["lose"] = "succes";
    
    
                            }
    
                            break;
                        case 2:
    
                            btn_B.Background = Brushes.Yellow;
                            if (answer == "B")
                            {
    
    
                            }
                            else
                            {
    
                                NavigationService.Navigate(new Uri("lose.xaml", UriKind.Relative));
                                Application.Current.Properties["lose"] = "succes";
    
                            }
    
                            break;
                        case 3:
    
                            btn_C.Background = Brushes.Yellow;
                            if (answer == "C")
                            {
    
    
                            }
                            else
                            {
    
                                NavigationService.Navigate(new Uri("lose.xaml", UriKind.Relative));
                                Application.Current.Properties["lose"] = "succes";
    
                            }
    
                            break;
                        case 4:
    
                            btn_D.Background = Brushes.Yellow;
                            if (answer == "D")
                            {
    
    
                            }
                            else
                            {
    
                                NavigationService.Navigate(new Uri("lose.xaml", UriKind.Relative));
                                Application.Current.Properties["lose"] = "succes";
    
                            }
    
                            break;
                    }
    
                }
    
    
                Bottime.Stop();
                delay.Start();
            }
    

       在这段代码中我们是对机器人答题代码进行细致编写,首先我们根据选择对手那个页面传来的级别模式进行正确率的设定,设有三个不同等级对手,保证正确率分别为70%,80%,90%。在定义一个随机数产生1-10的随机数,这个随机数是控制正确率的。在正确率范围内的直接读取正确答案给机器人对出正确的答案,不在正确率范围的我们在定义一个随机数,机器人随机产生答案,这个我们就做到机器人答题,当执行这些代码后表关闭延迟,开始另一个定时器Bottime.Stop(); delay.Start();然后改变为人答题状态,更新题目,就这样循环进行实现这一功能。

  • 相关阅读:
    c语言指针讲解第一节初识指针
    linux的的一些入门常识
    sql手注的思路
    mysql主从备份配置
    CentOS 6.5 nginx+tomcat+ssl配置
    mysql 5.7.18安装教程
    minIO分布式集群搭建+nginx负载均衡
    Linux常用命令
    使用python连接mysql数据库——pymysql模块的使用
    with与上下文管理器
  • 原文地址:https://www.cnblogs.com/nghygaojun/p/3072225.html
Copyright © 2011-2022 走看看