1:游戏要求

1. 随机显示 一个名字 与 若干张相片(如3张)。选择正确的相片。

2. 记录老师对每一个学生的认识概率P。并依据认识概率,确定“猜猜看”游戏中学生出现的频率。

认识概率P = 识别的准确次数/(识别的准确次数+识别的错误次数

a)   原则1:认识概率 高的学生,在猜猜看游戏中出现的频率相对低一些。

b)   原则2:认识概率 低的学生。在猜猜看游戏中出现的频率相对高一些。

c)   原则3:认识概率 100%的学生。也有出现的可能性。

d)   原则4:认识概率 0%的学生,也不必每次都出现。
请设计一个算法来实现上述原则。

3. 实现课堂考勤的功能,可以依据相片与姓名对部分学生进行考勤(设置一个比例。如考勤30%,50%等)。设置可以设计一个算法。类似于目标3,既有随机性,同一时候每一个学生的考勤频率有差异(依据之前考勤的经验)。

2、设计描写叙述:

此系统为猜猜看游戏兼考勤系统

採用了windows窗口界面设计创建了此系统。

系统功能包含:

1、从已设置的学生编号中随机抽取3个编号。并随机显示这三个学生的相片。

2、在设定的文本文件里选取被选中的学生的信息。

2、记录某一个学号每次被猜的信息及被点名信息。

3、显示当前被点学号的被猜和被点的信息,以及全部同学被猜和被点信息。

4、每个同学最多被点三次,当被点次数超过3时,显示警告窗体,提示用户

又一次点名。

5.每次猜对或猜错总数超过10。显示窗体信息,游戏自己主动结束。

3、系统具体设计——控件选取:

1、listBox1:用来存放及显示全部同学被点信息。

2、Button1:就是開始点名button。用来控制随机抽数。当点下開始button,其会变成停止button,按下停止button。显示终于被选中的编号和显示选中的学生相片。

3、Button2:就是用来显示当前被点同学的被点情况。

4、Button3:就是重置button,用来清除listBox1中的数据信息。

5、Button4:就是显示listBox1中记录的全部同学被点情况。

6、timer1:用来控制抽取过程中数据在空白处闪动。

7、label1:用来显示被选编号和学生信息。

8、label2:用来显示猜对的总次数。

9、label3:用来显示猜错的总次数。

10、label4:用来显示游戏名字“猜猜看” 。

11、label5:用来显示编号、个人被点总次数、个人被猜对总次数、个人被猜错总次数的文段。

12、pictureBox1:用来显示arry1[i]数组的图片。

13、pictureBox2:用来显示arry2[i]数组的图片。

14、pictureBox3:用来显示arry3[i]数组的图片。

15、imageList1:用来存储和显示相片

4、系统具体设计——代码实现:

1.timer1事件:控制随机选取学号编号,为每个存储相片的数组抽取一个随机数。并在选出的编号中再随机选取一个编号,作为被猜的编号,同一时候在已创建的文件里。相相应的读取编号相应的学号的信息。

private void timer1_Tick(object sender, EventArgs e){long tick = DateTime.Now.Ticks;Random ran = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));for (int i = 0; i < arry1.Length && i < arry2.Length && i < arry3.Length; i++){arry1[i] = ran.Next(0, imageList1.Images.Count-1 );arry2[i] = ran.Next(0, imageList1.Images.Count-1 );arry3[i] = ran.Next(0, imageList1.Images.Count-1 );int[] ary = new int[3] { arry1[i], arry2[i], arry3[i] };d = r.Next(0, 2);x = ary[d];num = ary[d].ToString();// p = (double)c1[x] / (c1[x] + c2[x]);string[] line = File.ReadAllLines(@"C:\Users\Administrator\Desktop\c#\a.txt", UnicodeEncoding.GetEncoding("GB2312"));label1.Text = "编号" + ary[d].ToString() + "," + "学生信息" + line[ary[d]];}}

2.button1事件:開始猜猜看按钮。用来控制timer1的执行,三张图片的显示和listBox1里面的信息以及提示警告

private void button1_Click(object sender, EventArgs e){   int[] ary = new int[3] { arry1[i], arry2[i], arry3[i] };d = r.Next(0, 3);first_click = !first_click;if (!first_click){timer1.Start();button1.Text = "停止";}else {timer1.Stop();button1.Text = "開始";new System.Drawing.Size(30, 30);pictureBox1.Image = imageList1.Images[arry1[i]];pictureBox2.Image = imageList1.Images[arry2[i]];pictureBox3.Image = imageList1.Images[arry3[i]];c[x]++;if (c[x] > 3) {   MessageBox.Show("警告:该同学超过三次被点名,请又一次点名");timer1.Start();button1.Text = "停止";}this.listBox1.Items.Add(num + "    " + c[x]+"      "+count+"    "+count1);}}

3.pictureBox1事件:发生点击图片事件,推断图片与学生信息是否相相应,并计算猜对或猜错的总次数和个人猜对或猜错的总次数及提示猜对或猜错和游戏结束或通过。(以此类推pictureBox2事件,pictureBox3事件)

 private void pictureBox1_Click(object sender, EventArgs e){int[] ary = new int[3] { arry1[i], arry2[i], arry3[i] };d = r.Next(0, 2);if (arry1[i] == x){MessageBox.Show("主人,恭喜你,答对了");count++;c1[x]++;label2.Text = "猜对总次数" + count;this.listBox1.Items.Add(num + "    " + c[x] + "      " + c1[x] + "    " + c2[x]);while(count==10){MessageBox.Show("主人,恭喜你通过了游戏");}}else {MessageBox.Show("主人,错了哦,继续努力");count1++;c2[x]++;label3.Text = "猜错总次数" + count1;this.listBox1.Items.Add(num + "    " + c[x] + "      " + c1[x] + "    " + c2[x]);while (count1 == 10){MessageBox.Show("主人,非常遗憾,你没通过游戏");}}}

4.button2事件:用作“显示该同学信息”显示当前同学被点信息,用作考勤功能

 private void button2_Click(object sender, EventArgs e){if (c[x] == 3){MessageBox.Show("该同学第三次被点名");}if (c[x] == 2){MessageBox.Show("该同学第二次被点名");}if (c[x] == 1){MessageBox.Show("该同学第一次被点名");}}

5. button3事件:用作重置按钮,清除listBox1里面记录的信息

 private void button3_Click(object sender, EventArgs e){this.listBox1.Items.Clear();result.Clear();}

6. button4事件:用作“显示全部被猜及被点信息”按钮,显示全部同学当前被猜和被点的详细信息

private void button4_Click(object sender, EventArgs e){this.listBox1.Visible = !this.listBox1.Visible;this.button3.Visible = !this.button3.Visible;}

5、系统实现

1、点击開始执行

2、点击開始点名button,開始点名button变成停止button:

               

3、点击停止button:显示当前随机抽取的三张相片和的学生信息

4、点击图片。若猜对了。弹窗显示

5、点击图片,若猜错了,弹窗显示

6.若是随机点名抽取的编号超过三次。弹窗警告。

7.若猜图片猜错十次,弹窗显示。猜图片失败

8.若猜图片猜对十次,弹窗显示,猜图片成功

9.按一下“该同学被点信息”的button,弹窗显示该同学被点的信息

10. 分别按一下“全部被猜及被点次数”和“重置”button,全部同学被点名的全部信息在列表框中显示,重置button则是清除列表框的内容。

            

11. 文本中的学生信息

6、小结:

弄这个游戏断断续续的花了挺多时间的,大概半个月吧。当然这中间穿插了很多杂七杂八的事情,从非常久之前就開始做了,但对于c#还是太陌生了。这和我这学期没有花足够的时间去学有关,所以一開始设计时,脑袋一片空白。一点头绪都没有,仅仅能从之前作业的内容里找一些灵感。一開始我在选取图片的方式上花了好多时间,由于对pictureBox接触不多。还没能全然会用,这给我一开头造成好多麻烦,一直卡在这里进退不得,那时心里特别烦躁,上网搜资料都是迷迷糊糊的。像一头盲头苍蝇一样。无从下手。后来把它又搁置了几天后。这时心里也平静了很多,脑袋也開始慢慢进入主题。開始认真思考问题。

由于我读取图片使用的是文件流函数。从既定的路径中读取图片,可是我又发现,我无法将图片里的学生信息显示出来。所以我就将图片的名字改成自然数,把里面的学生信息提取出来放进一个txt文件中面,用lable标签控件显示出来,但这样另一个问题又来了,我无法确保图片和lable标签里的内容仅仅有一对相相应,于是这个问题又困扰了我一天,后来问了一下舍友。经她提示,把选出来的那三个图片编号放进一个数组里,在这个数组里再用随机函数随机选取一个,就能保证图片和学生信息的一一相应了。可是我发现被改成自然序号的图片编号和学生信息之间没有共同点。这样就连不起来了;经过一番思考,我想到了数据库,我的想法是把学生信息和图片编号存进数据库。从数据库中读取就能有共同的链接点了。于是我又把读取相片的方式从文件流换成了从数据库读取,可是问题非常快出现了。由于我对链接数据库的操作全然陌生。尽管之前作业有试过连接,但当时由于电脑软件问题一直没连接上,后来就一直搁置了这个操作,在尝试了一晚以后,我就放弃了用数据库这个念头。问题似乎又回到了最開始的时候,相片究竟要如何引进才干和标签信息同步。由于没想法,我開始去网上搜搜各类资料,后来我又发现了用imageList的方法。它用是用数组存储相片的方法,这样我就能共用这个数组,引进每一个pictureBox里面了,经过多次測试、改动。最终把相片编码和标签同步显示出来了。那时心情真是激动到极点,最终完毕了第一步,果然是万事开头难啊。入门了其它事情就能循序渐进了,所以我下一步就開始点击图片事件了,刚写这部分时事实上还不是非常有想法的,由于我一直在想的是点击图片和标签信息时,相片是会跳动或翻转的,结果就钻了牛角尖,一直挣扎怎么让相片在点击后能够自己动,后来写完程序,调试后才知道,仅仅要相片的编号和标签信息有一一相应的关系了,就能发生事件了。所以我在每一个pictureBox事件里写了三个相同的程序,仅仅要把if语句里的条件语句换成和每一个pictureBox相相应的语句即可了,然后在if语句里面相相应的加入了messageBox、猜对/猜错的总次数等语句,经过不断的改动、加入考勤功能等步骤。最终完毕了初具规模的猜猜看游戏,尽管功能上另一些不完好,可是我还是挺惬意的。从一窍不通,到自己亲自作出一个小游戏,在这过程中收获的知识非常多,这就像一种积累的財富。一点一点的积累。最后所拥有的一定是别人无法给予的,实践才是真理,事实上我也能够做到。

我的百度网盘的地址:http://pan.baidu.com/s/1kTszg7H

c#课程设计---猜猜看游戏相关推荐

  1. c语言射击类小游戏任务书,(c语言课程设计报告小游戏“石头剪子布”.doc

    (c语言课程设计报告小游戏"石头剪子布" <C语言课程设计>报告 题目:石头剪子布 班级: 学号: 姓名: 指导教师: 成绩: 目 录: 一.选题背景- 3 - 二.设 ...

  2. 猜数字java程序设计分析_JAVA程序设计课程设计-猜数字游戏设计

    JAVA程序设计课程设计-猜数字游戏设计 课 程 设 计 报 告课程设计名称 Java 程序设计 专 业 计算机科学与技术 班 级 2 班 学 号 08030212 姓 名 指导教师 成 绩 2011 ...

  3. 贪吃蛇c语言课程设计报告下载,c语言课程设计-贪吃蛇游戏

    c语言课程设计-贪吃蛇游戏 C 语言课程设计 1 山东交通学院 C 语言课程设计 贪吃蛇游戏 院(系)别 交通与物流工程学院 班 级 物联 131 学 号 130516122 姓 名 王赛 指导教师 ...

  4. c语言课程设计猜数字游戏报告,C语言课程设计猜数字游戏报告

    C语言课程设计猜数字游戏报告 C 语言课程设计----猜数字1摘 要该 软 件 在 Windows 系 统 上 为 玩 家 提 供 猜 数 字 游 戏的 基 本 功 能 , 游 戏 用 户 可 以 选 ...

  5. 面向对象程序设计(Java)课程设计——五子棋小游戏

    目录 一.团队成员及任务 二.项目简介 三.功能设计图 四.运行结果截图 五.核心源码 六.课程设计感想与展望 一.团队成员及任务 队长:管俊杰  计科(智能)22-1 202203200037 负责 ...

  6. 1到100猜数字游戏规则c语言,[C语言课程设计猜数字游戏1.doc

    [C语言课程设计猜数字游戏1 课 程 设 计 报 告 课程名称 C语言程序设计报告 课题名称 猜数字游戏 专 业 电气工程及其自动化 班 级 1104 学 号 33 姓 名 张腾 指导教师 黄晓宇 丁 ...

  7. Rust小试牛刀之猜猜看游戏

    Time: 20190919 学习主题 直接进入Rust实践阶段,涉及到如下几个概念: let match methods associated functions 使用外部包等 新建项目 cargo ...

  8. HTML期末大作业课程设计~仿阴阳师游戏官网首页html模板(HTML+CSS)~动漫主题html5网页模板-HTML期末作业课程设计期末大作业动漫主题html5网页模板-html5网页设计源码...

    HTML期末大作业课程设计~仿阴阳师游戏官网首页html模板(DIV+CSS) 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总数量太多?没 ...

  9. HTML期末大作业课程设计~仿阴阳师游戏官网首页html模板(HTML+CSS)~动漫主题html5网页模板-HTML期末作业课程设计期末大作业动漫主题html5网页模板-html5网页设计源码

    HTML期末大作业课程设计~仿阴阳师游戏官网首页html模板(DIV+CSS) 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总数量太多?没 ...

最新文章

  1. 数学建模学习笔记——预测模型
  2. [JavaWeb-MySQL]多表查询练习
  3. gridview 强制过长数据进行换行
  4. LeetCode 834. 树中距离之和(树上DP)*
  5. 基于spring注解AOP的异常处理
  6. Bootstrap 导航条
  7. SVM 多分类分类边界可视化
  8. 新中大财务软件-A3中怎样更改IP地址
  9. 解决安装MathType后Word不能复制粘贴问题
  10. 2022-2027年中国婴幼儿床上用品市场竞争态势及行业投资前景预测报告
  11. wuauclt.exe进程和wuauclt病毒的查杀清理方法
  12. 宁西铁路线 宁合线 宁西铁路
  13. MOS管开启过程中VGS的台阶——米勒平台?
  14. Mac 下 Docker搭建RAP2 记录
  15. 在linux系统下运行jar包的命令如下:
  16. 第979期机器学习日报(2017-05-24)
  17. HTML制作简易百度下拉菜单栏
  18. 关于抽象类说法以下哪些是正确的?
  19. Win10系统下语音识别聆听功能使用方法
  20. 文档向量表示入坑 (持续 更新中)

热门文章

  1. How to Delete and Recreate the _msdcs DNS zone on a Windows DNS Server
  2. 【转】[C# 基础知识系列]专题四:事件揭秘
  3. 梁佳玉 - 昨天的爱
  4. 国内ntp服务器ip地址
  5. MasterPage.master文件
  6. 必看,经典sql面试题(学生表_课程表_成绩表_教师表)
  7. 【JVM调优系列】----NewRatio与SurvivorRatio
  8. 用hmmlearn学习隐马尔科夫模型HMM
  9. 如何在 Linux 中创建一个共享目录
  10. Discuz常见大问题-如何使用云采集插件