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;        }

解读:随机产生为错误答案的名字










0 0
原创粉丝点击