wpf首次项目开发总结之人机交互模式
2013-05-10 23:09
609 查看
我们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秒后才机器人给出答案,机器人答完题后在延迟变回人答题状态。就接下来编译机器人答题过程核心代码:
在这段代码中我们是对机器人答题代码进行细致编写,首先我们根据选择对手那个页面传来的级别模式进行正确率的设定,设有三个不同等级对手,保证正确率分别为70%,80%,90%。在定义一个随机数产生1-10的随机数,这个随机数是控制正确率的。在正确率范围内的直接读取正确答案给机器人对出正确的答案,不在正确率范围的我们在定义一个随机数,机器人随机产生答案,这个我们就做到机器人答题,当执行这些代码后表关闭延迟,开始另一个定时器Bottime.Stop(); delay.Start();然后改变为人答题状态,更新题目,就这样循环进行实现这一功能。
我们首先对其画出我们思路流程图,页面载入,即从数据库中随机读取题目,一开始是人答题环节,在每个答案按钮事件中都对其答案进行判断,当答案正确就进入机器人答题环节,在机器人答题中我们对机器人代码首先做了一个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();然后改变为人答题状态,更新题目,就这样循环进行实现这一功能。
相关文章推荐
- wpf首次项目开发技术总结之access数据库
- wpf首次项目开发技术总结wpf页面
- wpf首次项目开发总结之音频
- wpf首次项目开发技术总结之app.xaml
- wpf首次项目开发技术总结之不规则界面设计
- wpf中使用MVVM模式进行开发,View与ViewModule的交互个人总结
- 基于ASP.NET WPF技术及MVP模式实战太平人寿客户管理项目开发(Repository模式)
- WPF中的MVVM模式:View与ViewModule的交互个人总结
- 基于ASP.NET WPF技术及MVP模式实战太平人寿客户管理项目开发(Repository模式)课程分享
- 项目后回顾总结mvc开发模式
- 基于ASP.NET WPF技术及MVP模式实战太平人寿客户管理项目开发(Repository模式)
- 周报(关于项目开发模式的一点总结)
- 基于ASP.NET WPF技术及MVP模式实战太平人寿客户管理项目开发视频教程
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- ios项目总结一:开发中常用的设计模式
- c#/.NET项目开发有哪些设计模式?
- atitit.项目设计模式---ioc attilax总结
- 【项目分享】赶集团购Web App开发总结
- 总结开发Silverlight项目准则
- atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform