作业六:猜猜看,检验朋友熟悉度——Winform程序
2015-07-08 07:29
489 查看
1.目的
以最快的速度认识、了解身边的人; 促进人与人之间的互动交流;
2.目标
满足基本功能;对原型进行简单的验证;
3.内容
功能:
随机显示一个名字与 3张相片,选择相片,提示结果,显示图片正确信息;
![](http://img.blog.csdn.net/20150706233006801)
随机显示 一张相片与若3个名字,选择名字,提示结果;
![](http://img.blog.csdn.net/20150706233209915)
4.重点——随机概率
概率计算:记录对每个人的认识概率P,并根据认识概率,确定“猜猜看”游戏中学生出现的频率。
认识概率P = 识别的准确次数/(识别的准确次数+识别的错误次数)
原则1:认识概率 高的学生,在猜猜看游戏中出现的频率相对低一些。
原则2:认识概率 低的学生,在猜猜看游戏中出现的频率相对高一些。
原则3:认识概率 100%的学生,也有出现的可能性。
原则4:认识概率 0%的学生,也不必每次都出现。
5.效果
【显示主页面——选择图片路径】
DialogResult result = folderBrowserDialog1.ShowDialog();
if (result == DialogResult.OK)
{
folderName = folderBrowserDialog1.SelectedPath;
lblImg.Text = folderName;
lblImg.Show();
btnChoiceName.Show();
}
![](http://img.blog.csdn.net/20150708072449382)
【显示主页面——选择名单路径(采取默认路径和默认文件类型)】
openFileDialog1.InitialDirectory = “E:/Fighting/C#/实验/第六次作业——猜猜看/name_file”;
openFileDialog1.Filter = “txt files (.txt)|.txt|All files (.)|.“;
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
lblName.Text = openFileDialog1.FileName;
strClassFilename = openFileDialog1.FileName;
}
![](http://img.blog.csdn.net/20150708072515884)
【显示主页面——功能模块】
![](http://img.blog.csdn.net/20150708072529653)
【看图猜名】
//
//看名字,猜图片
// 产生三个不重复的随机数字组成数组
//并从其中产生一个待猜测的数字
//更新图片
//
Hashtable hashtable = new Hashtable();
//
//点击事件
//
//显示答案
lbl4.Show();
lbl5.Show();
lbl6.Show();
![](http://img.blog.csdn.net/20150708072609251)
【看图猜名效果(揭示答案)】
![](http://img.blog.csdn.net/20150708072626366)
【看图猜名】
![](http://img.blog.csdn.net/20150708072648161)
【看图猜名效果(揭示答案)】
![](http://img.blog.csdn.net/20150708072705836)
【看名猜图】
注:实现算法类似看图猜名,就不在赘述。
![](http://img.blog.csdn.net/20150708072727091)
【看名猜图(揭示答案)】
![](http://img.blog.csdn.net/20150708072752370)
【看名猜图】
![](http://img.blog.csdn.net/20150708072809540)
【看名猜图(揭示答案)】
![](http://img.blog.csdn.net/20150708072824138)
6.作业总结
通过该程序的分析与实施过程中,观察现象,分析问题,思考解决方法,个人在C#语言程序设计领域,能够更加熟练的运用可视化编程相关知识,加深了知识的映像,加强了动手操作能力。
尽管程序功能有待提高,仍存在一定的问题,诸如数据库联通、文件存储等,但是,有问题就意味着有提升的空间,挫折才能衬托成功的可贵,我们应当珍惜每次的挫折考验。只有不断的发现不足,开动思维,收集资料解答疑问,这样才能在任何一个领域内越走越远,越走越好。
以最快的速度认识、了解身边的人; 促进人与人之间的互动交流;
2.目标
满足基本功能;对原型进行简单的验证;
3.内容
功能:
随机显示一个名字与 3张相片,选择相片,提示结果,显示图片正确信息;
随机显示 一张相片与若3个名字,选择名字,提示结果;
4.重点——随机概率
概率计算:记录对每个人的认识概率P,并根据认识概率,确定“猜猜看”游戏中学生出现的频率。
认识概率P = 识别的准确次数/(识别的准确次数+识别的错误次数)
原则1:认识概率 高的学生,在猜猜看游戏中出现的频率相对低一些。
原则2:认识概率 低的学生,在猜猜看游戏中出现的频率相对高一些。
原则3:认识概率 100%的学生,也有出现的可能性。
原则4:认识概率 0%的学生,也不必每次都出现。
5.效果
【显示主页面——选择图片路径】
DialogResult result = folderBrowserDialog1.ShowDialog();
if (result == DialogResult.OK)
{
folderName = folderBrowserDialog1.SelectedPath;
lblImg.Text = folderName;
lblImg.Show();
btnChoiceName.Show();
}
【显示主页面——选择名单路径(采取默认路径和默认文件类型)】
openFileDialog1.InitialDirectory = “E:/Fighting/C#/实验/第六次作业——猜猜看/name_file”;
openFileDialog1.Filter = “txt files (.txt)|.txt|All files (.)|.“;
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
lblName.Text = openFileDialog1.FileName;
strClassFilename = openFileDialog1.FileName;
// 根据班级文件名,得到保存结果的文件名名称:result_班级文件名 strResultFilename = "result_" + openFileDialog1.SafeFileName; // 获取文件流 StreamReader srReadFile = new StreamReader(strClassFilename, System.Text.Encoding.Default); // 读取流直至结束 while (!srReadFile.EndOfStream) { //读取每行数据 String strReadLine = srReadFile.ReadLine(); //按照空格进行分割 String[] sArray = strReadLine.Split(' '); ListId.Add(sArray[1]); ListName.Add(sArray[2]); //学生人数 countStu = countStu + 1; } // 关闭读取流文件 srReadFile.Close(); //选择功能模块 lblName.Show(); btnGuessImg.Show(); btnGuessName.Show();
}
【显示主页面——功能模块】
【看图猜名】
//
//看名字,猜图片
// 产生三个不重复的随机数字组成数组
//并从其中产生一个待猜测的数字
//更新图片
//
Hashtable hashtable = new Hashtable();
//随机数组,4位 int[] rmArray = new int[RmNum + 1]; //待猜随机数 Random rm = new Random(); //产生RmNum个随机数 for (int i = 0; hashtable.Count < RmNum; i++) { int nValue = rm.Next(0, countStu); if (!hashtable.ContainsValue(nValue)) { rmArray[i] = nValue; hashtable.Add(nValue, nValue); } } //猜测数,在数组前3位取,置于第4位 rmArray[RmNum] = rm.Next(0, RmNum); // 产生相关的相片 lbl2.Text = ListId[rmArray[rmArray[RmNum]]].ToString() + ListName[rmArray[rmArray[RmNum]]].ToString(); lbl4.Text = ListId[rmArray[0]].ToString() + ListName[rmArray[0]].ToString(); lbl5.Text = ListId[rmArray[1]].ToString() + ListName[rmArray[1]].ToString(); lbl6.Text = ListId[rmArray[2]].ToString() + ListName[rmArray[2]].ToString(); lbl2.Show(); lbl4.Hide(); lbl5.Hide(); lbl6.Hide(); // 更新图片,需要判断图片是否存在;若不存在则使用一幅画来替代test.jpg String strTest = folderName + "/" + "test.jpg"; String strImg = folderName + "/" + lbl4.Text + ".jpg"; pictureBox1.Image = new Bitmap(GetPhoteFilename(strImg, strTest)); strImg = folderName + "/" + lbl5.Text + ".jpg"; strTest = folderName + "/" + "test.jpg"; pictureBox2.Image = new Bitmap(GetPhoteFilename(strImg, strTest)); strImg = folderName + "/" + lbl6.Text + ".jpg"; strTest = folderName + "/" + "test.jpg"; pictureBox3.Image = new Bitmap(GetPhoteFilename(strImg, strTest)); pictureBox1.Show(); pictureBox2.Show(); pictureBox3.Show();
//
//点击事件
//
//显示答案
lbl4.Show();
lbl5.Show();
lbl6.Show();
// 正确的答案 string message; if (lbl4.Text == lbl2.Text) { message = "哇,记忆力真棒!是否继续?"; } else { message = "哈哈,猜错了!是否继续?"; } string caption = "猜猜看游戏结果"; MessageBoxButtons buttons = MessageBoxButtons.YesNo; // Displays the MessageBox. DialogResult result = MessageBox.Show(message, caption, buttons); //是否继续 if (result == System.Windows.Forms.DialogResult.Yes) { // 更换 guessImg_method(3); } else { this.Close(); }
【看图猜名效果(揭示答案)】
【看图猜名】
【看图猜名效果(揭示答案)】
【看名猜图】
注:实现算法类似看图猜名,就不在赘述。
【看名猜图(揭示答案)】
【看名猜图】
【看名猜图(揭示答案)】
6.作业总结
通过该程序的分析与实施过程中,观察现象,分析问题,思考解决方法,个人在C#语言程序设计领域,能够更加熟练的运用可视化编程相关知识,加深了知识的映像,加强了动手操作能力。
尽管程序功能有待提高,仍存在一定的问题,诸如数据库联通、文件存储等,但是,有问题就意味着有提升的空间,挫折才能衬托成功的可贵,我们应当珍惜每次的挫折考验。只有不断的发现不足,开动思维,收集资料解答疑问,这样才能在任何一个领域内越走越远,越走越好。
相关文章推荐
- 利用GCD实现延迟(实现延迟的几种方法)
- JSP九大内置对象及四个作用域
- 无理数e
- 数学常数e的含义
- 图像处理之高斯一阶及二阶导数计算
- 导数概念
- 深入理解 CocoaPods
- loadrunner场景中Erro.. Failed to connect to load generator.Check the output windows for more details
- 然并卵
- OSChina 周三乱弹 —— 打醒精神去瞌睡
- 小米手机困境,米粉伤心,黄牛伤钱
- 贝克莱悖论:已死量的幽灵(微积分危机)
- Linux内核3.11的socket busy poll机制避免睡眠切换
- Linux内核3.11的socket busy poll机制避免睡眠切换
- 史上最全的程序员求职渠道总结
- 最近在看 ASP.NET 5,有关官方实现的 OAuth 2 包
- 虚幻引擎4 DEMO打包下载
- 公司项目NODEJS实践0.3[ mongo / session ...]
- Genymotion遇上Eclipse
- 极路由3与存储的适配规划