c#课程设计——猜猜看
来源:互联网 发布:淘宝上什么零食好吃 编辑:程序博客网 时间:2024/05/16 17:35
一.最终成果
打开软件,初始界面
点击开始游戏,随机出现一张相片,并出现三个选项:
选择一个答案,出现如下界面点击答案,界面如下:
点击答案按钮,界面如下:
点击继续游戏,又可以开始新一轮游戏:
相关下载包括源程序、一份注意事项和一份学生信息文档
百度云下载链接:链接:http://pan.baidu.com/s/1eQlNGJK
提取码:ram8
二、游戏开发过程介绍
一开始我是完全没有思路的,不知道怎么去弄。自从结课又进入考试月后,这门课就让我给丢一边了,所以一开始在没有思路后,我选择最懒最笨的方法,把丁老师做的游戏代码敲一遍,研究每一行代码的功能,怎么实现游戏的功能的之后,我才开始去想去做,这次的课程设计大概弄了四五天,主要还是自己对C#语言不熟悉,在渐渐有了思路后,先把界面做出来,对应界面的控件写出实现该控件功能的代码,在实现了最基本的功能之后,再去设置算法,使选择错误频率高的出现频率高一点,错误频率低的出现频率低一点。
三、开发时的学习收获
在做这次c#课程设计,我对本学期所学的知识做了一个回顾也做了一个整理,对C#程序语言也有了更深的理解和认识。这几天的开发学到的知识感觉比这个学期学的还要多,还要深,可能是因为有实践的原因吧!总体来说就是学编程就是要动手,要多练。每当自己写的代码不能运行时,自己总是特别的难受,不停地问为什么,不停地查阅资料,百度,不停地修改,而一旦可以运行,就可以开心那么小半天。这个过程我觉得特别地享受,因为学到的东西特别多,不仅仅是那一小块知识,还有自学的能力,还有自己的心理承受能力。很多时候,我们只要再多坚持一会,别放弃,就可以见到阳光!这是我最深的体会!我想这是我做这次c#程序设计最大的收获!
四、开发后的感受与体会
这次的c#课程设计让我想起丁老师第一节课讲的一句话,不管在哪个方面,其实并没有天才,要想精通一门语言,你就得学习10000个小时。这也就是所谓的10000小时定律,也就是勤能补拙。再聪明的人如果没有努力,那也干不成事的。通过这次课程设计,我更好地认识自己,我觉得自己在程序方面一直未有突破就是一直太懒了,敲代码比较少,思考也比较少。经过这次开发,我觉得班上同学的编程能力还是比较好的,自己与他们还是有一定发的差距。我觉得接下来的商家自己还得继续努力才能更好地掌握这门语言,否则这门课的学习成果也就仅此而已。
五、核心代码解读
(1)开始游戏按钮代码:
private void Startbtn_Click(object sender, EventArgs e) { randomStu(); // 得到随机图片 cleanRadio123(); // 清空radiobutton选项 getThreeChecked(); // 得到三个选项的值 continueGame.Visible = false; // 隐藏继续游戏按钮 correctResult.Visible = false; // 隐藏查看正确答案按钮 this.label1.Text = "请选择答案"; re_elect = false; // 默认没有重选 label5.Text = "选择答案查看"; }
<span style="font-size:18px;">(2)第一个按钮代码:</span>
private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (re_elect == true) //检测是否重选 { label1.Text = "只能选择一次"; } else { if (num[x1] == t) { label1.Text = "正确"; trueGuessNum[num[x1]]++; } else { label1.Text = "错误"; } } continueGame.Visible = true; // 显示继续游戏按钮 correctResult.Visible = true; // 查看正确答案按钮 re_elect = true; // 打开检查重选 //计算认识率 percent[t] = (float)trueGuessNum[t] / (sumStuPhoto[t] + 2); label5.Text = percent[t].ToString("0.00%"); }
<p><span style="font-size:18px;">解读:选择第一个按钮,判断它是否是正确答案,之后显示继续游戏按钮和答案按钮供用户选择,并计算姓名与相片匹配的概率。同理写出第二、三个按钮的功能。</span></p><p></p><p><span style="font-size:18px;">(3)代码:</span></p><p><span style="font-size:18px;"></span><pre name="code" class="csharp"> void getThreeChecked() { Random rn = new Random(); int p = randomStuName1(); int q = randomStuName2(); num[0] = t; num[1] = p; num[2] = q; // 生成第一个选项 x1 = rn.Next(3); radioButton1.Text = sumStuNames[num[x1]].ToString(); // 生成第二个选项 x2 = rn.Next(3); while (x2 == x1) // 排除重复 { x2 = rn.Next(3); } radioButton2.Text = sumStuNames[num[x2]].ToString(); // 生成第三个选项 x3 = rn.Next(3); while (x3 == x1 || x3 == x2) // 排除重复 { x3 = rn.Next(3); } radioButton3.Text = sumStuNames[num[x3]].ToString(); }
解读:生成随机的不重复的三个选项,并显示
(4)代码:
void cleanRadio123() { radioButton1.Checked = false; radioButton2.Checked = false; radioButton3.Checked = false; }
解读:清除三个选项的选择记录
(5)代码:
void randomStu() { bool boo = new bool(); boo = true; Random ran = new Random(); t = ran.Next(56); while (t == m || t == n) { t = ran.Next(56); } //imageList1.ImageSize = new Size(120, 120); // 判断学生认识率是否大于 60% while (boo) { if (percent[t] >= 0.6) { // 英雄认识率高于99%时,出现的概率为原来的1/10 if (percent[t] >= 0.99) { m5++; if (tp[t] == 9) { pictureBox1.Image = imageList1.Images[t]; sumStuPhoto[t]++; this.label3.Text = sumStuPhoto[t].ToString(); tp[t] = 0; boo = false; } else { tp[t]++; t = ran.Next(56); } } // 学生认识率在90%到99%之间,出现的概率为原来的1/5 if (percent[t] >= 0.9 && percent[t] < 0.99) { m4++; if (tp[t] == 4) { pictureBox1.Image = imageList1.Images[t]; sumStuPhoto[t]++; this.label3.Text = sumStuPhoto[t].ToString(); tp[t] = 0; boo = false; } else { tp[t]++; t = ran.Next(56); } } // 学生认识率在80%到90%之间,出现的概率为原来的1/4 if (percent[t] >= 0.8 && percent[t] < 0.9) { m3++; if (tp[t] == 3) { pictureBox1.Image = imageList1.Images[t]; sumStuPhoto[t]++; this.label3.Text = sumStuPhoto[t].ToString(); tp[t] = 0; boo = false; } else { tp[t]++; t = ran.Next(56); } } // 学生认识率在70%到80%之间,出现的概率为原来的1/3 if (percent[t] >= 0.7 && percent[t] < 0.8) { m2++; if (tp[t] == 2) { pictureBox1.Image = imageList1.Images[t]; sumStuPhoto[t]++; this.label3.Text = sumStuPhoto[t].ToString(); tp[t] = 0; boo = false; } else { tp[t]++; t = ran.Next(56); } } // 学生认识率在60%到70%之间,出现的概率为原来的1/2 if (percent[t] >= 0.6 && percent[t] < 0.7) { m1++; if (tp[t] == 1) { pictureBox1.Image = imageList1.Images[t]; sumStuPhoto[t]++; this.label3.Text = sumStuPhoto[t].ToString(); tp[t] = 0; boo = false; } else { tp[t]++; t = ran.Next(56); } } } //学生认识率低于60%,出现的概率为1/125 else { pictureBox1.Image = imageList1.Images[t]; sumStuPhoto[t]++; boo = false; } } this.label3.Text = sumStuPhoto[t].ToString(); }
解读:随机显示图片,并判断图片与名字配对的概率,根据概率的高低,使使选择错误频率高的出现频率高一点,错误频率低的出现频率低一点。
(6)代码:
int randomStuName1() { Random ran = new Random(); m = ran.Next(56); while (m == n || m == t) { m = ran.Next(56); } return m; }
解读:随机产生为错误答案的名字
- c#课程设计——猜猜看
- C#课程设计——“猜猜看”开发总结
- C#课程设计---猜猜看
- c#课程设计---猜猜看游戏
- C#程序设计——猜猜看
- C#课程设计:《猜猜看》游戏开发总结
- C#课程设计:《猜猜看》游戏开发总结
- 《JAVA课程设计》实训第四天——《猜猜看》游戏
- C#课程考核——猜猜看.
- Java课程设计实训第三天——实现猜猜看游戏的基本要求
- Java课程设计实训第四天——实现猜猜看游戏的达成
- c#猜猜看
- 《java课程设计》之猜猜看游戏(一)
- 《java课程设计》之猜猜看游戏(二)
- 《java课程设计》之猜猜看游戏(三)
- 《java课程设计》之猜猜看游戏(四)
- c#程序设计 猜猜看
- C#程序设计-猜猜看
- Android中Matrix的相关变换
- MD5加密
- 黑马程序员——Java基础---线程的另一个总结(6)--线程读写锁,缓存小例子
- Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法
- Ajax实现用户注册功能
- c#课程设计——猜猜看
- 4. 对象与类
- 黑马程序员-面向对象
- 优化实战案例:被K(拔毛)网站成功恢复案例
- 计算机网络基础知识整理(三)
- 二叉树遍历
- jdbc数据库连接
- 一个字符串中查找另一个字符串出现的次数
- shell字段分隔符IFS