【c#第六次作业】猜猜看游戏

以下是图片资料

以下是图片对应的名字,顺序要和图片一样

以下是界面设计

以下是源代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlClient;

namespace 猜猜看
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int model = new int();                              // 判断是模式几
        int[] sumHeroPhoto = new int[125];                  // 记录imagelist1的数组,图片出现的总数
        int[] modelTwoName = new int[125];                  // 记录模式二随机出现的名字出现的总次数

        String[] sumHeroNames=new String[125];      // 记录英雄的名字
        int m,n ;                                   // 记录两个错误名字选项的下标
        int p1, p2;                                 // 记录两个错误图片选项的下标
        int t = 0;                                  // 记录正确答案数组的下标
        int t2 = 0;                                 // 记录模式二正确答案数组的下标

        int x1,x2,x3;              // 三个选项的参数
        int[] num = new int[3];    // 获得模式一 三个选项的名字数组的下标
        int[] num2 = new int[3];   // 获得模式二 三个选项的名字数组的下标
        bool re_elect=new bool();  // 坚持玩家是否重选了

        float[] percent = new float[125];       // 认识率
        float[] percent2 = new float[125];      //模式二认识率
        int[] trueGuessNum = new int[125];      // 记录每张图片猜对的次数
        int[] trueGuessPhoto = new int[125];    // 记录每个名字猜对的次数
        int[] tp = new int[125];                // 控制高认识率英雄出现的概率
        int[] tp2 = new int[125];               // 模式二控制高认识率英雄出现的概率

        int m0, m1, m2, m3, m4, m5;              // 显示认识程度变量
        int n0, n1, n2, n3, n4, n5;              // 模式二认识度变量

        // 筛选英雄类型数组
        int[] ci_keNum = new int[15];
        int[] tan_keNum = new int[16];
        int[] she_shouNum = new int[19];
        int[] zhan_shiNum = new int[36];
        int[] fa_shiNum = new int[28];
        int[] fu_zhuNum = new int[11];

        // 模式二筛选英雄类型数组
        int[] ci_keNum2 = new int[15];
        int[] tan_keNum2 = new int[16];
        int[] she_shouNum2 = new int[19];
        int[] zhan_shiNum2 = new int[36];
        int[] fa_shiNum2 = new int[28];
        int[] fu_zhuNum2 = new int[11];

        private void Form1_Load(object sender, EventArgs e)
        {
            modelOneVisible(false);
            modelTwoVisible(false);
            textBox1.ReadOnly = true;              //     文本框不可修改
            // 将名字存入数组
            getHeroName();
            comboBox1.SelectedIndex=0;         // 默认显示"全部"
            comboBox1.SelectionChangeCommitted += new System.EventHandler(this.scc_Click);
        }

        // 模式一按钮
        private void modelOne_Click(object sender, EventArgs e)
        {
            model = 1;              //模式一
            // 连接数据库
            String con = (@"server=LONG-PC\LONG;database=caicaikan;user id=sa;password=123456");
            SqlConnection conn = new SqlConnection(con);
            // 读取数据库数据
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "select * from modelOne";
            cmd.Connection = conn;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            DataTable dt = new DataTable();
            dt = ds.Tables[0].Copy();
            double[] a = new double[125];
            for (int i = 0; i < 125; i++)
            {
                sumHeroPhoto[i] = (int)dt.Rows[i].ItemArray[0];
                trueGuessNum[i] = (int)dt.Rows[i].ItemArray[1];

                // 先将数据库中的float转换为c#中的double
                a[i] = (double)dt.Rows[i].ItemArray[2];
                percent[i] = (float)a[i];

                tp[i] = (int)dt.Rows[i].ItemArray[3];
            }
            conn.Close();
            conn.Dispose();                  //释放内存空

            // 显示模式一的控件
            modelOneVisible(true);
            // 隐藏模式二相关控件
            aRandomName.Visible = false;
            pictureBox2.Visible = false;
            pictureBox3.Visible = false;
            pictureBox4.Visible = false;

            randomHero();                           // 得到随机图片
            messageRecord();                        // 显示英雄认识度信息

            cleanRadio123();                        // 清空radiobutton选项
            getThreeChecked();                      // 得到三个选项的值
            continueGame.Visible = false;           // 隐藏继续游戏按钮
            correctResult.Visible = false;          // 隐藏查看正确答案按钮
            this.textBox1.Text = "请选择答案";
            re_elect = false;                       // 默认没有重选
            label4.Text = "选择答案查看";

        }

        // 第一个选项按钮
        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (re_elect == true)    //检测是否重选
            {
                textBox1.Text = "只能选择一次";
            }
            else
            {
                if (num[x1] == t)
                {
                    textBox1.Text = "正确";
                    trueGuessNum[num[x1]]++;
                }
                else
                {
                    textBox1.Text = "错误";
                }
            }
            continueGame.Visible = true;    // 显示继续游戏按钮
            correctResult.Visible = true;   // 查看正确答案按钮
            re_elect = true;                // 打开检查重选
            //计算认识率
            percent[t] = (float)trueGuessNum[t] / (sumHeroPhoto[t] + 2);
            label4.Text = percent[t].ToString("0.00%");
        }

        // 第二个选项按钮
        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            if (re_elect == true)
            {
                textBox1.Text = "只能选择一次";
            }
            else
            {
                if (num[x2] == t)
                {
                    textBox1.Text = "正确";
                    trueGuessNum[num[x2]]++;
                }
                else
                {
                    textBox1.Text = "错误";
                }
            }

            continueGame.Visible = true;
            correctResult.Visible = true;
            re_elect = true;

            //计算认识率
            percent[t] = (float)(trueGuessNum[t]) / (sumHeroPhoto[t] + 2);
            label4.Text = percent[t].ToString("0.00%");
        }

        // 第三个选项按钮
        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {
            if (re_elect == true)
            {
                textBox1.Text = "只能选择一次";
            }
            else
            {
                if (num[x3] == t)
                {
                    textBox1.Text = "正确";
                    trueGuessNum[num[x3]]++;
                }
                else
                {
                    textBox1.Text = "错误";
                }
            }

            continueGame.Visible = true;
            correctResult.Visible = true;
            re_elect = true;
            //计算认识率
            percent[t] =(float) trueGuessNum[t] / (sumHeroPhoto[t] + 2);
            label4.Text = percent[t].ToString("0.00%");
        }

        // 继续游戏按钮
        private void continueGame_Click(object sender, EventArgs e)
        {
            this.textBox1.Text = "请选择答案";
            this.label4.Text = "选择答案查看";
            re_elect = false;
            if (model == 1)
            {
                switch (comboBox1.SelectedIndex)
                {
                    case 0:
                         randomHero();
                         getThreeChecked();
                         cleanRadio123();
                         messageRecord();
                         this.textBox1.Text = "请选择答案";
                         this.label4.Text = "选择答案查看";
                         re_elect = false;
                         break;

                    case 1:
                        getCi_ke();
                        getThreeChecked();
                        cleanRadio123();
                        ci_keMessage();
                        this.textBox1.Text = "请选择答案";
                        this.label4.Text = "选择答案查看";
                        re_elect = false;
                        break;

                    case 2:
                        getTan_ke();
                        getThreeChecked();
                        cleanRadio123();
                        tan_keMessage();
                        this.textBox1.Text = "请选择答案";
                        this.label4.Text = "选择答案查看";
                        re_elect = false;
                        break;

                    case 3:
                        getShe_shou();
                        getThreeChecked();
                        cleanRadio123();
                        she_shouMessage();
                        this.textBox1.Text = "请选择答案";
                        this.label4.Text = "选择答案查看";
                        re_elect = false;
                        break;

                    case 4:
                        getZhan_shi();
                        getThreeChecked();
                        cleanRadio123();
                        zhan_shiMessage();
                        this.textBox1.Text = "请选择答案";
                        this.label4.Text = "选择答案查看";
                        re_elect = false;
                        break;

                    case 5:
                        getFa_shi();
                        getThreeChecked();
                        cleanRadio123();
                        fa_shiMessage();
                        this.textBox1.Text = "请选择答案";
                        this.label4.Text = "选择答案查看";
                        re_elect = false;
                        break;

                    case 6:
                        getFu_zhu();
                        getThreeChecked();
                        cleanRadio123();
                        fu_zhuMessage();
                        this.textBox1.Text = "请选择答案";
                        this.label4.Text = "选择答案查看";
                        re_elect = false;
                        break;
                }

            }
            else
            {
                switch (comboBox1.SelectedIndex)
                {
                    case 0:
                        getName();                                  // 获得随机名字
                        getThreeChecked2();                         // 获得3个选项
                        messageRecord2();
                        break;

                    case 1:
                        getCi_ke2();
                        getThreeChecked2();                         // 获得3个选项
                        ci_keMessage2();
                        break;

                    case 2:
                        getTan_ke2();
                        getThreeChecked2();
                        tan_keMessage2();
                        break;

                    case 3:
                        getShe_shou2();
                        getThreeChecked2();
                        she_shouMessage2();
                        break;

                    case 4:
                        getZhan_shi2();
                        getThreeChecked2();
                        zhan_shiMessage2();
                        break;

                    case 5:
                        getFa_shi2();
                        getThreeChecked2();
                        fa_shiMessage2();
                        break;

                    case 6:
                        getFu_zhu2();
                        getThreeChecked2();
                        fu_zhuMessage2();
                        break;
                }
            }
        }

        // 随机产生三个选项
        void getThreeChecked()
        {
            Random rn=new Random();
            int p = randomHeroName1();
            int q = randomHeroName2();

            num[0] = t;
            num[1] = p;
            num[2] = q;

            // 生成第一个选项
            x1 = rn.Next(3);
            radioButton1.Text = sumHeroNames[num[x1]].ToString();

            // 生成第二个选项
            x2 = rn.Next(3);
            while (x2 == x1)     // 排除重复
            {
                x2 = rn.Next(3);
            }
            radioButton2.Text = sumHeroNames[num[x2]].ToString();

            // 生成第三个选项
            x3 = rn.Next(3);
            while (x3 == x1 || x3 == x2)       // 排除重复
            {
                x3 = rn.Next(3);
            }
            radioButton3.Text = sumHeroNames[num[x3]].ToString();
        }

        // 模式一可见性函数
        void modelOneVisible(bool mv)
        {
            if (mv == true)
            {
                pictureBox1.Visible = true;
                label1.Visible = true;
                label2.Visible = true;
                label3.Visible = true;
                label4.Visible = true;
                radioButton1.Visible = true;
                radioButton2.Visible = true;
                radioButton3.Visible = true;
                textBox1.Visible = true;
                continueGame.Visible = false;
                correctResult.Visible = false;
                label6.Visible = true;
                label7.Visible = true;
                label8.Visible = true;
                label9.Visible = true;
                label10.Visible = true;
                label11.Visible = true;
                label12.Visible = true;
                label13.Visible = true;
                label14.Visible = true;
                label15.Visible = true;
                label16.Visible = true;
                label17.Visible = true;
                label18.Visible = true;
                label19.Visible = true;
            }
            else
            {
                pictureBox1.Visible = false;
                label1.Visible = false;
                label2.Visible = false;
                label3.Visible = false;
                label4.Visible = false;
                radioButton1.Visible = false;
                radioButton2.Visible = false;
                radioButton3.Visible = false;
                textBox1.Visible = false;
                continueGame.Visible = false;
                correctResult.Visible = false;
                label6.Visible = false;
                label7.Visible = false;
                label8.Visible = false;
                label9.Visible = false;
                label10.Visible = false;
                label11.Visible = false;
                label12.Visible = false;
                label13.Visible = false;
                label14.Visible = false;
                label15.Visible = false;
                label16.Visible = false;
                label17.Visible = false;
                label18.Visible = false;
                label19.Visible = false;
            }
        }

        // 清除三个选项的选择记录
        void cleanRadio123()
        {
            radioButton1.Checked = false;
            radioButton2.Checked = false;
            radioButton3.Checked = false;
        }

        // 随机显示英雄
        void randomHero()
        {
            bool boo=new bool();
            boo = true;
            Random ran = new Random();
            t = ran.Next(125);
            while (t == m || t == n)
            {
                t = ran.Next(125);
            }
            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];
                            sumHeroPhoto[t]++;
                            this.label3.Text = sumHeroPhoto[t].ToString();
                            tp[t] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp[t]++;
                            t = ran.Next(125);
                        }
                    }
                    // 英雄认识率在90%到99%之间,出现的概率为原来的1/5
                    if (percent[t] >= 0.9 && percent[t] < 0.99)
                    {
                        m4++;
                        if (tp[t] == 4)
                        {
                            pictureBox1.Image = imageList1.Images[t];
                            sumHeroPhoto[t]++;
                            this.label3.Text = sumHeroPhoto[t].ToString();
                            tp[t] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp[t]++;
                            t = ran.Next(125);
                        }
                    }
                    // 英雄认识率在80%到90%之间,出现的概率为原来的1/4
                    if (percent[t] >= 0.8 && percent[t] < 0.9)
                    {
                        m3++;
                        if (tp[t] == 3)
                        {
                            pictureBox1.Image = imageList1.Images[t];
                            sumHeroPhoto[t]++;
                            this.label3.Text = sumHeroPhoto[t].ToString();
                            tp[t] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp[t]++;
                            t = ran.Next(125);
                        }
                    }
                    // 英雄认识率在70%到80%之间,出现的概率为原来的1/3
                    if (percent[t] >= 0.7 && percent[t] < 0.8)
                    {
                        m2++;
                        if (tp[t] == 2)
                        {
                            pictureBox1.Image = imageList1.Images[t];
                            sumHeroPhoto[t]++;
                            this.label3.Text = sumHeroPhoto[t].ToString();
                            tp[t] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp[t]++;
                            t = ran.Next(125);
                        }
                    }
                    // 英雄认识率在60%到70%之间,出现的概率为原来的1/2
                    if (percent[t] >= 0.6 && percent[t] < 0.7)
                    {
                        m1++;
                        if (tp[t] == 1)
                        {
                            pictureBox1.Image = imageList1.Images[t];
                            sumHeroPhoto[t]++;
                            this.label3.Text = sumHeroPhoto[t].ToString();
                            tp[t] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp[t]++;
                            t = ran.Next(125);
                        }
                    }
                }
                //英雄认识率低于60%,出现的概率为1/125
                else
                {
                    pictureBox1.Image = imageList1.Images[t];
                    sumHeroPhoto[t]++;
                    boo = false;
                }
            }
            this.label3.Text = sumHeroPhoto[t].ToString();
        }

        // 将名字存入sumHeroName[]
        void getHeroName()
        {

            StreamReader reader = new StreamReader(@"D:\c#\GuessFile\names.txt", Encoding.GetEncoding("gb2312"));

            String line = reader.ReadLine();
            int i = 0;
            while (line != null)
            {
                sumHeroNames[i] = line;
                i++;
                line = reader.ReadLine();
            }
            reader.Close();
        }

        // 随机产生英雄名字1(错误答案)
        int randomHeroName1()
        {
            Random ran = new Random();
            m = ran.Next(125);
            while (m == n || m == t)
            {
                m = ran.Next(125);
            }
            return m;
        }

        // 随机产生英雄名字2(错误答案)
        int randomHeroName2()
        {
            Random ran = new Random();
            n = ran.Next(125);
            while(n == m||n==t)
            {
                n = ran.Next(125);
            }
            return n;
        }

        // 获取随机刺客
        void getCi_ke()
        {
            // 获取随机刺客
            int[] s = new int[] { 3, 4, 10, 12, 16, 22, 31, 33, 52, 87, 99, 107, 109, 115, 116 };
            for (int i = 0; i < 15; i++)
            {
                ci_keNum[i] = s[i];
            }
            int c = new int();
            Random ran = new Random();
            c = ran.Next(15);
            t = ci_keNum[c];
            imageList1.ImageSize = new Size(120, 120);
            pictureBox1.Image = imageList1.Images[t];
            sumHeroPhoto[t]++;
            this.label3.Text = sumHeroPhoto[t].ToString();

        }

        // 获取随机坦克
        void getTan_ke()
        {
            // 获取随机坦克
            int[] s = new int[] { 18, 55, 56, 65, 66, 67, 69, 75, 78, 80, 81, 84, 91, 96, 108, 121 };
            for (int i = 0; i < 16; i++)
            {
                tan_keNum[i] = s[i];
            }
            int c = new int();
            Random ran = new Random();
            c = ran.Next(16);
            t = tan_keNum[c];
            imageList1.ImageSize = new Size(120, 120);
            pictureBox1.Image = imageList1.Images[t];
            sumHeroPhoto[t]++;
            this.label3.Text = sumHeroPhoto[t].ToString();
        }

        // 获取随机射手
        void getShe_shou()
        {
            // 获取随机射手
            int[] s = new int[] { 1, 6, 13, 20, 24, 29, 35, 59, 70, 74, 79, 82, 85, 89, 94, 98, 113, 114, 118 };
            for (int i = 0; i < 19; i++)
            {
                she_shouNum[i] = s[i];
            }
            int c = new int();
            Random ran = new Random();
            c = ran.Next(19);
            t = she_shouNum[c];
            imageList1.ImageSize = new Size(120, 120);
            pictureBox1.Image = imageList1.Images[t];
            sumHeroPhoto[t]++;
            this.label3.Text = sumHeroPhoto[t].ToString();
        }

        // 获取随机战士
        void getZhan_shi()
        {
            // 获取随机战士
            int[] s = new int[] {2,15,17,19,25,30,34,38,40,42,43,44,
                                    47,48,49,53,54,58,60,61,62,68,71,72,
                                        77,83,88,90,92,97,100,101,106,119,120,124};
            for (int i = 0; i < 36; i++)
            {
                zhan_shiNum[i] = s[i];
            }
            int c = new int();
            Random ran = new Random();
            c = ran.Next(36);
            t = zhan_shiNum[c];
            imageList1.ImageSize = new Size(120, 120);
            pictureBox1.Image = imageList1.Images[t];
            sumHeroPhoto[t]++;
            this.label3.Text = sumHeroPhoto[t].ToString();
        }

        // 获取随机法师
        void getFa_shi()
        {
            // 获取随机法师
            int[] s = new int[] {0,7,8,9,11,14,21,23,28,32,36,41,
                                    45,46,50,51,57,63,64,76,93,95,103,105,
                                        110,111,117,122};
            for (int i = 0; i < 28; i++)
            {
                fa_shiNum[i] = s[i];
            }
            int c = new int();
            Random ran = new Random();
            c = ran.Next(28);
            t = fa_shiNum[c];
            imageList1.ImageSize = new Size(120, 120);
            pictureBox1.Image = imageList1.Images[t];
            sumHeroPhoto[t]++;
            this.label3.Text = sumHeroPhoto[t].ToString();
        }

        // 获取随机辅助
        void getFu_zhu()
        {
            // 获取随机战士
            int[] s = new int[] { 5, 26, 27, 37, 39, 73, 86, 102, 104, 112, 123 };
            for (int i = 0; i < 11; i++)
            {
                fu_zhuNum[i] = s[i];
            }
            int c = new int();
            Random ran = new Random();
            c = ran.Next(11);
            t = fu_zhuNum[c];
            imageList1.ImageSize = new Size(120, 120);
            pictureBox1.Image = imageList1.Images[t];
            sumHeroPhoto[t]++;
            this.label3.Text = sumHeroPhoto[t].ToString();
        }

        // 全部信息记录
        void messageRecord()
        {
            // 清空数据
            m0 = 0;
            m1 = 0;
            m2 = 0;
            m3 = 0;
            m4 = 0;
            m5 = 0;

            label13.Text = "125".ToString();      // 总英雄

            for (int i = 0; i < 125; i++)
            {
                // 初认识
                if (sumHeroPhoto[i] != 0)
                {
                    m0++;
                }
                // 较熟悉
                if (percent[i] >= 0.6 && percent[i] < 0.7)
                {
                    m1++;
                }
                // 已认识
                if (percent[i] >= 0.7 && percent[i] < 0.8)
                {
                    m2++;
                }
                // 很熟悉
                if (percent[i] >= 0.8 && percent[i] < 0.9)
                {
                    m3++;
                }
                // 完全熟悉
                if (percent[i] >= 0.9 && percent[i] < 0.99)
                {
                    m4++;
                }
                // 一眼辨认
                if (percent[i] >= 0.99)
                {
                    m5++;
                }
            }
            label14.Text = m0.ToString();
            label15.Text = m1.ToString();
            label16.Text = m2.ToString();
            label17.Text = m3.ToString();
            label18.Text = m4.ToString();
            label19.Text = m5.ToString();
        }

        // 刺客信息
        void ci_keMessage()
        {
            // 清空数据
            m0 = 0;
            m1 = 0;
            m2 = 0;
            m3 = 0;
            m4 = 0;
            m5 = 0;

            label13.Text = "15".ToString();      // 总英雄

            for (int i = 0; i < 15; i++)
            {
                // 初认识
                if (sumHeroPhoto[ci_keNum[i]] != 0)
                {
                    m0++;
                }
                // 较熟悉
                if (percent[ci_keNum[i]] >= 0.6 && percent[ci_keNum[i]] < 0.7)
                {
                    m1++;
                }
                // 已认识
                if (percent[ci_keNum[i]] >= 0.7 && percent[ci_keNum[i]] < 0.8)
                {
                    m2++;
                }
                // 很熟悉
                if (percent[ci_keNum[i]] >= 0.8 && percent[ci_keNum[i]] < 0.9)
                {
                    m3++;
                }
                // 完全熟悉
                if (percent[ci_keNum[i]] >= 0.9 && percent[ci_keNum[i]] < 0.99)
                {
                    m4++;
                }
                // 一眼辨认
                if (percent[ci_keNum[i]] >= 0.99)
                {
                    m5++;
                }
            }
            label14.Text = m0.ToString();
            label15.Text = m1.ToString();
            label16.Text = m2.ToString();
            label17.Text = m3.ToString();
            label18.Text = m4.ToString();
            label19.Text = m5.ToString();
        }

        // 坦克信息
        void tan_keMessage()
        {
            // 清空数据
            m0 = 0;
            m1 = 0;
            m2 = 0;
            m3 = 0;
            m4 = 0;
            m5 = 0;

            label13.Text = "16".ToString();      // 总英雄

            for (int i = 0; i < 16; i++)
            {
                // 初认识
                if (sumHeroPhoto[tan_keNum[i]] != 0)
                {
                    m0++;
                }
                // 较熟悉
                if (percent[tan_keNum[i]] >= 0.6 && percent[tan_keNum[i]] < 0.7)
                {
                    m1++;
                }
                // 已认识
                if (percent[tan_keNum[i]] >= 0.7 && percent[tan_keNum[i]] < 0.8)
                {
                    m2++;
                }
                // 很熟悉
                if (percent[tan_keNum[i]] >= 0.8 && percent[tan_keNum[i]] < 0.9)
                {
                    m3++;
                }
                // 完全熟悉
                if (percent[tan_keNum[i]] >= 0.9 && percent[tan_keNum[i]] < 0.99)
                {
                    m4++;
                }
                // 一眼辨认
                if (percent[tan_keNum[i]] >= 0.99)
                {
                    m5++;
                }
            }
            label14.Text = m0.ToString();
            label15.Text = m1.ToString();
            label16.Text = m2.ToString();
            label17.Text = m3.ToString();
            label18.Text = m4.ToString();
            label19.Text = m5.ToString();
        }

        // 射手信息
        void she_shouMessage()
        {
            // 清空数据
            m0 = 0;
            m1 = 0;
            m2 = 0;
            m3 = 0;
            m4 = 0;
            m5 = 0;

            label13.Text = "19".ToString();      // 总英雄

            for (int i = 0; i < 19; i++)
            {
                // 初认识
                if (sumHeroPhoto[she_shouNum[i]] != 0)
                {
                    m0++;
                }
                // 较熟悉
                if (percent[she_shouNum[i]] >= 0.6 && percent[she_shouNum[i]] < 0.7)
                {
                    m1++;
                }
                // 已认识
                if (percent[she_shouNum[i]] >= 0.7 && percent[she_shouNum[i]] < 0.8)
                {
                    m2++;
                }
                // 很熟悉
                if (percent[she_shouNum[i]] >= 0.8 && percent[she_shouNum[i]] < 0.9)
                {
                    m3++;
                }
                // 完全熟悉
                if (percent[she_shouNum[i]] >= 0.9 && percent[she_shouNum[i]] < 0.99)
                {
                    m4++;
                }
                // 一眼辨认
                if (percent[she_shouNum[i]] >= 0.99)
                {
                    m5++;
                }
            }
            label14.Text = m0.ToString();
            label15.Text = m1.ToString();
            label16.Text = m2.ToString();
            label17.Text = m3.ToString();
            label18.Text = m4.ToString();
            label19.Text = m5.ToString();
        }

        // 战士信息
        void zhan_shiMessage()
        {
            // 清空数据
            m0 = 0;
            m1 = 0;
            m2 = 0;
            m3 = 0;
            m4 = 0;
            m5 = 0;

            label13.Text = "36".ToString();      // 总英雄

            for (int i = 0; i < 36; i++)
            {
                // 初认识
                if (sumHeroPhoto[zhan_shiNum[i]] != 0)
                {
                    m0++;
                }
                // 较熟悉
                if (percent[zhan_shiNum[i]] >= 0.6 && percent[zhan_shiNum[i]] < 0.7)
                {
                    m1++;
                }
                // 已认识
                if (percent[zhan_shiNum[i]] >= 0.7 && percent[zhan_shiNum[i]] < 0.8)
                {
                    m2++;
                }
                // 很熟悉
                if (percent[zhan_shiNum[i]] >= 0.8 && percent[zhan_shiNum[i]] < 0.9)
                {
                    m3++;
                }
                // 完全熟悉
                if (percent[zhan_shiNum[i]] >= 0.9 && percent[zhan_shiNum[i]] < 0.99)
                {
                    m4++;
                }
                // 一眼辨认
                if (percent[zhan_shiNum[i]] >= 0.99)
                {
                    m5++;
                }
            }
            label14.Text = m0.ToString();
            label15.Text = m1.ToString();
            label16.Text = m2.ToString();
            label17.Text = m3.ToString();
            label18.Text = m4.ToString();
            label19.Text = m5.ToString();
        }

        // 法师信息
        void fa_shiMessage()
        {
            // 清空数据
            m0 = 0;
            m1 = 0;
            m2 = 0;
            m3 = 0;
            m4 = 0;
            m5 = 0;

            label13.Text = "28".ToString();      // 总英雄

            for (int i = 0; i < 28; i++)
            {
                // 初认识
                if (sumHeroPhoto[fa_shiNum[i]] != 0)
                {
                    m0++;
                }
                // 较熟悉
                if (percent[fa_shiNum[i]] >= 0.6 && percent[fa_shiNum[i]] < 0.7)
                {
                    m1++;
                }
                // 已认识
                if (percent[fa_shiNum[i]] >= 0.7 && percent[fa_shiNum[i]] < 0.8)
                {
                    m2++;
                }
                // 很熟悉
                if (percent[fa_shiNum[i]] >= 0.8 && percent[fa_shiNum[i]] < 0.9)
                {
                    m3++;
                }
                // 完全熟悉
                if (percent[fa_shiNum[i]] >= 0.9 && percent[fa_shiNum[i]] < 0.99)
                {
                    m4++;
                }
                // 一眼辨认
                if (percent[fa_shiNum[i]] >= 0.99)
                {
                    m5++;
                }
            }
            label14.Text = m0.ToString();
            label15.Text = m1.ToString();
            label16.Text = m2.ToString();
            label17.Text = m3.ToString();
            label18.Text = m4.ToString();
            label19.Text = m5.ToString();
        }

        // 辅助信息
        void fu_zhuMessage()
        {
            // 清空数据
            m0 = 0;
            m1 = 0;
            m2 = 0;
            m3 = 0;
            m4 = 0;
            m5 = 0;

            label13.Text = "11".ToString();      // 总英雄

            for (int i = 0; i < 11; i++)
            {
                // 初认识
                if (sumHeroPhoto[fu_zhuNum[i]] != 0)
                {
                    m0++;
                }
                // 较熟悉
                if (percent[fu_zhuNum[i]] >= 0.6 && percent[fu_zhuNum[i]] < 0.7)
                {
                    m1++;
                }
                // 已认识
                if (percent[fu_zhuNum[i]] >= 0.7 && percent[fu_zhuNum[i]] < 0.8)
                {
                    m2++;
                }
                // 很熟悉
                if (percent[fu_zhuNum[i]] >= 0.8 && percent[fu_zhuNum[i]] < 0.9)
                {
                    m3++;
                }
                // 完全熟悉
                if (percent[fu_zhuNum[i]] >= 0.9 && percent[fu_zhuNum[i]] < 0.99)
                {
                    m4++;
                }
                // 一眼辨认
                if (percent[fu_zhuNum[i]] >= 0.99)
                {
                    m5++;
                }
            }
            label14.Text = m0.ToString();
            label15.Text = m1.ToString();
            label16.Text = m2.ToString();
            label17.Text = m3.ToString();
            label18.Text = m4.ToString();
            label19.Text = m5.ToString();
        }

        // 退出游戏按钮
        private void exitGame_Click(object sender, EventArgs e)
        {
            // 连接数据库
            String con = (@"server=LONG-PC\LONG;database=caicaikan;user id=sa;password=123456");
            SqlConnection conn = new SqlConnection(con);
            // 定义对象,用于sql语句将数据写入数据库
            StringBuilder sqlstr = new StringBuilder();
            conn.Open();

            if (model == 1)
            {
                // 清空数据表原数据
                SqlCommand sc = new SqlCommand();
                sc.CommandText = ("truncate table modelOne");
                sc.Connection = conn;
                sc.ExecuteNonQuery();
                for (int i = 0; i < 125; i++)
                {
                    sqlstr.Append("insert into modelOne(sumHeroPhoto,trueGuessNum,[percent],tp)");
                    sqlstr.Append("values");
                    sqlstr.Append("('" + sumHeroPhoto[i] + "','" + trueGuessNum[i] + "','" + percent[i] + "','" + tp[i] + "')");

                    using (SqlCommand cmd = new SqlCommand(sqlstr.ToString(), conn)) //定义连接命令
                    {
                        //cmd.CommandType = CommandType.StoredProcedure;
                        cmd.ExecuteNonQuery();//执行sql语句
                    }

                    sqlstr.Clear();
                }
            }
            else
            {
                // 清空数据表原数据
                SqlCommand sc2 = new SqlCommand();
                sc2.CommandText = ("truncate table modelTwo");
                sc2.Connection = conn;
                sc2.ExecuteNonQuery();
                for (int i = 0; i < 125; i++)
                {
                    sqlstr.Append("insert into modelTwo(modelTwoName,trueGuessPhoto,percent2,tp2)");
                    sqlstr.Append("values");
                    sqlstr.Append("('" + modelTwoName[i] + "','" + trueGuessPhoto[i] + "','" + percent2[i] + "','" + tp2[i] + "')");

                    using (SqlCommand cmd2 = new SqlCommand(sqlstr.ToString(), conn)) //定义连接命令
                    {
                        //cmd.CommandType = CommandType.StoredProcedure;
                        cmd2.ExecuteNonQuery();//执行sql语句
                    }

                    sqlstr.Clear();
                }
            }
            conn.Close();
            conn.Dispose(); //释放内存空
            this.Close();
        }

        // 查看正确答案按钮
        private void correctResult_Click(object sender, EventArgs e)
        {
            if (model == 1)
            {
                if (num[x1] == t)
                    radioButton1.Checked = true;
                if (num[x2] == t)
                    radioButton2.Checked = true;
                if (num[x3] == t)
                    radioButton3.Checked = true;
                textBox1.Text = "该英雄的名字为:";
            }
            else
            {
                if (num2[x1] == t2)
                {
                    // 第一张边框设置为卡其色
                    Graphics g = Graphics.FromHwnd(this.pictureBox2.Handle);
                    PaintEventArgs a = new PaintEventArgs(g, this.pictureBox2.ClientRectangle);
                    this.pictureBox2_Paint(this.pictureBox2, a);
                    g.Dispose();

                    delay(100);
                    pictureBox2.Image = imageList1.Images[num2[x1]];
                }

                if (num2[x2] == t2)
                {

                    Graphics g = Graphics.FromHwnd(this.pictureBox3.Handle);
                    PaintEventArgs a = new PaintEventArgs(g, this.pictureBox3.ClientRectangle);
                    this.pictureBox3_Paint(this.pictureBox3, a);
                    g.Dispose();

                    delay(100);
                    pictureBox3.Image = imageList1.Images[num2[x2]];

                }

                if (num2[x3] == t2)
                {
                    Graphics g = Graphics.FromHwnd(this.pictureBox4.Handle);
                    PaintEventArgs a = new PaintEventArgs(g, this.pictureBox4.ClientRectangle);
                    this.pictureBox4_Paint(this.pictureBox4, a);
                    g.Dispose();

                    delay(100);
                    pictureBox4.Image = imageList1.Images[num2[x3]];
                }
                textBox1.Text = "该英雄的头像为:";
            }
        }

        // 晒选英雄类型按钮
        private void scc_Click(object sender, EventArgs e)
        {
            continueGame.Visible = false;
            correctResult.Visible = false;
            this.textBox1.Text = "请选择答案";
            re_elect = false;
            this.label4.Text = "选择答案查看";

            //筛选
            if (model == 1)
            {
                switch (comboBox1.SelectedIndex)
                {
                    case 0:
                        randomHero();
                        getThreeChecked();
                        cleanRadio123();
                        messageRecord();
                        break;

                    case 1:
                        getCi_ke();
                        getThreeChecked();
                        cleanRadio123();
                        ci_keMessage();
                        break;

                    case 2:
                        getTan_ke();
                        getThreeChecked();
                        cleanRadio123();
                        tan_keMessage();
                        break;

                    case 3:
                        getShe_shou();
                        getThreeChecked();
                        cleanRadio123();
                        she_shouMessage();
                        break;

                    case 4:
                        getZhan_shi();
                        getThreeChecked();
                        cleanRadio123();
                        zhan_shiMessage();
                        break;

                    case 5:
                        getFa_shi();
                        getThreeChecked();
                        cleanRadio123();
                        fa_shiMessage();
                        break;

                    case 6:
                        getFu_zhu();
                        getThreeChecked();
                        cleanRadio123();
                        fu_zhuMessage();
                        break;
                }
            }
            else
            {
                switch (comboBox1.SelectedIndex)
                {
                    case 0:
                        getName();                                  // 获得随机名字
                        getThreeChecked2();                         // 获得3个选项
                        messageRecord2();
                        break;

                    case 1:
                        getCi_ke2();
                        getThreeChecked2();                         // 获得3个选项
                        ci_keMessage2();
                        break;

                    case 2:
                        getTan_ke2();
                        getThreeChecked2();
                        tan_keMessage2();
                        break;

                    case 3:
                        getShe_shou2();
                        getThreeChecked2();
                        she_shouMessage2();
                        break;

                    case 4:
                        getZhan_shi2();
                        getThreeChecked2();
                        zhan_shiMessage2();
                        break;

                    case 5:
                        getFa_shi2();
                        getThreeChecked2();
                        fa_shiMessage2();
                        break;

                    case 6:
                        getFu_zhu2();
                        getThreeChecked2();
                        fu_zhuMessage2();
                        break;
                }
            }
        }

/**************************** 模式二 ********************************/

        // 模式二按钮
        private void moderTwo_Click(object sender, EventArgs e)
        {
            model = 2;
            // 连接数据库
            String con = (@"server=LONG-PC\LONG;database=caicaikan;user id=sa;password=123456");
            SqlConnection conn = new SqlConnection(con);
            // 读取数据库数据
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "select * from modelTwo";
            cmd.Connection = conn;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            DataTable dt = new DataTable();
            dt = ds.Tables[0].Copy();
            double[] a = new double[125];
            for (int i = 0; i < 125; i++)
            {
                modelTwoName[i] = (int)dt.Rows[i].ItemArray[0];
                trueGuessPhoto[i] = (int)dt.Rows[i].ItemArray[1];

                // 先将数据库中的float转换为c#中的double
                a[i] = (double)dt.Rows[i].ItemArray[2];
                percent2[i] = (float)a[i];

                tp2[i] = (int)dt.Rows[i].ItemArray[3];
            }
            conn.Close();
            conn.Dispose();                  //释放内存空

            // 显示模式二控件,同时隐藏模式一相关按钮
            modelTwoVisible(true);
            pictureBox1.Visible = false;
            radioButton1.Visible = false;
            radioButton2.Visible = false;
            radioButton3.Visible = false;         

            getName();                                  // 获得随机名字
            getThreeChecked2();                         // 获得3个选项
            this.textBox1.Text = "请选择答案";
            re_elect = false;                           // 默认没有重选
            label4.Text = "选择答案查看";
            messageRecord2();                           // 显示模式二进度

        }

        // 模式二可见性函数
        void modelTwoVisible(bool mv)
        {
            if (mv == true)
            {
                pictureBox2.Visible = true;
                pictureBox3.Visible = true;
                pictureBox4.Visible = true;
                textBox1.Visible = true;
                continueGame.Visible = false;
                correctResult.Visible = false;
                label1.Visible = true;
                label2.Visible = true;
                label3.Visible = true;
                label4.Visible = true;
                label6.Visible = true;
                label7.Visible = true;
                label8.Visible = true;
                label9.Visible = true;
                label10.Visible = true;
                label11.Visible = true;
                label12.Visible = true;
                label13.Visible = true;
                label14.Visible = true;
                label15.Visible = true;
                label16.Visible = true;
                label17.Visible = true;
                label18.Visible = true;
                label19.Visible = true;
                aRandomName.Visible = true;
            }
            else
            {
                pictureBox2.Visible = false;
                pictureBox3.Visible = false;
                pictureBox4.Visible = false;
                textBox1.Visible = false;
                continueGame.Visible = false;
                correctResult.Visible = false;
                label1.Visible = false;
                label2.Visible = false;
                label3.Visible = false;
                label4.Visible = false;
                label6.Visible = false;
                label7.Visible = false;
                label8.Visible = false;
                label9.Visible = false;
                label10.Visible = false;
                label11.Visible = false;
                label12.Visible = false;
                label13.Visible = false;
                label14.Visible = false;
                label15.Visible = false;
                label16.Visible = false;
                label17.Visible = false;
                label18.Visible = false;
                label19.Visible = false;
                aRandomName.Visible = false;
            }
        }

        // 随机得到一个名字
        void getName()
        {
            bool boo = new bool();
            boo = true;
            Random ran = new Random();
            t2 = ran.Next(125);
            while (t2 == p1 || t2 == p2)
            {
                t2 = ran.Next(125);
            }
            // 判断英雄认识率是否大于 60%
            while (boo)
            {
                if (percent2[t2] >= 0.6)
                {
                    // 英雄认识率高于99%时,出现的概率为原来的1/10
                    if (percent2[t2] >= 0.99)
                    {
                        n5++;
                        if (tp2[t2] == 9)
                        {
                            pictureBox1.Image = imageList1.Images[t2];
                            sumHeroPhoto[t2]++;
                            this.label3.Text = sumHeroPhoto[t2].ToString();
                            tp2[t2] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp2[t2]++;
                            t2 = ran.Next(125);
                        }
                    }
                    // 英雄认识率在90%到99%之间,出现的概率为原来的1/5
                    if (percent2[t2] >= 0.9 && percent2[t2] < 0.99)
                    {
                        n4++;
                        if (tp2[t2] == 4)
                        {
                            pictureBox1.Image = imageList1.Images[t2];
                            sumHeroPhoto[t2]++;
                            this.label3.Text = sumHeroPhoto[t2].ToString();
                            tp2[t2] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp2[t2]++;
                            t2 = ran.Next(125);
                        }
                    }
                    // 英雄认识率在80%到90%之间,出现的概率为原来的1/4
                    if (percent2[t2] >= 0.8 && percent2[t2] < 0.9)
                    {
                        n3++;
                        if (tp2[t2] == 3)
                        {
                            pictureBox1.Image = imageList1.Images[t2];
                            sumHeroPhoto[t2]++;
                            this.label3.Text = sumHeroPhoto[t2].ToString();
                            tp2[t2] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp2[t2]++;
                            t2 = ran.Next(125);
                        }
                    }
                    // 英雄认识率在70%到80%之间,出现的概率为原来的1/3
                    if (percent2[t2] >= 0.7 && percent2[t2] < 0.8)
                    {
                        n2++;
                        if (tp2[t2] == 2)
                        {
                            pictureBox1.Image = imageList1.Images[t2];
                            sumHeroPhoto[t2]++;
                            this.label3.Text = sumHeroPhoto[t2].ToString();
                            tp2[t2] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp2[t2]++;
                            t2 = ran.Next(125);
                        }
                    }
                    // 英雄认识率在60%到70%之间,出现的概率为原来的1/2
                    if (percent2[t2] >= 0.6 && percent2[t2] < 0.7)
                    {
                        n1++;
                        if (tp2[t2] == 1)
                        {
                            pictureBox1.Image = imageList1.Images[t2];
                            sumHeroPhoto[t2]++;
                            this.label3.Text = sumHeroPhoto[t2].ToString();
                            tp2[t2] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp2[t2]++;
                            t2 = ran.Next(125);
                        }
                    }
                }
                //英雄认识率低于60%,出现的概率为1/125
                else
                {
                    aRandomName.Text=sumHeroNames[t2].ToString();
                    modelTwoName[t2]++;
                    boo = false;
                }
            }
            this.label3.Text = modelTwoName[t2].ToString();
        }

        // 获得一张随机图片1(干扰图片)
        int randomPhoto1()
        {
            Random ran = new Random();
            p1 = ran.Next(125);
            while (p1 == p2 || p1 == t2)
            {
                p1 = ran.Next(125);
            }
            return p1;
        }

        // 获得一张随机图片2(干扰图片)
        int randomPhoto2()
        {
            Random ran = new Random();
            p2 = ran.Next(125);
            while (p2 == p1 || p2 == t2)
            {
                p2 = ran.Next(125);
            }
            return p2;
        }

        // 随机显示三个选项
        void getThreeChecked2()
        {
            Random rn = new Random();
            int p = randomPhoto1();
            int q = randomPhoto2();

            num2[0] = t2;
            num2[1] = p;
            num2[2] = q;

            // 生成第一个选项
            x1 = rn.Next(3);
            pictureBox2.Image = imageList1.Images[num2[x1]];

            // 生成第二个选项
            x2 = rn.Next(3);
            while (x2 == x1)     // 排除重复
            {
                x2 = rn.Next(3);
            }
            pictureBox3.Image = imageList1.Images[num2[x2]];

            // 生成第三个选项
            x3 = rn.Next(3);
            while (x3 == x1 || x3 == x2)       // 排除重复
            {
                x3 = rn.Next(3);
            }
            pictureBox4.Image = imageList1.Images[num2[x3]];
        }

        // 点击第一图片触发的事件
        private void pictureBox2_Click(object sender, EventArgs e)
        {
            // 第一张边框设置为卡其色
            Graphics g = Graphics.FromHwnd(this.pictureBox2.Handle);
            PaintEventArgs a = new PaintEventArgs(g, this.pictureBox2.ClientRectangle);
            this.pictureBox2_Paint(this.pictureBox2, a);
            g.Dispose();

            delay(100);
            pictureBox2.Image = imageList1.Images[num2[x1]];

            // 实现模式一选择答案功能
            if (re_elect == true)    //检测是否重选
            {
                textBox1.Text = "只能选择一次";
            }
            else
            {
                if (num2[x1] == t2)
                {
                    textBox1.Text = "正确";
                    trueGuessPhoto[num2[x1]]++;
                }
                else
                {
                    textBox1.Text = "错误";
                }
            }
            continueGame.Visible = true;    // 显示继续游戏按钮
            correctResult.Visible = true;   // 查看正确答案按钮
            re_elect = true;                // 打开检查重选
            //计算认识率
            percent2[t2] = (float)trueGuessPhoto[t2] / (modelTwoName[t2] + 2);
            label4.Text = percent2[t2].ToString("0.00%");
        }

        // 点击第二张图片触发的事件
        private void pictureBox3_Click(object sender, EventArgs e)
        {
            Graphics g = Graphics.FromHwnd(this.pictureBox3.Handle);
            PaintEventArgs a = new PaintEventArgs(g, this.pictureBox3.ClientRectangle);
            this.pictureBox3_Paint(this.pictureBox3, a);
            g.Dispose();

            delay(100);
            pictureBox3.Image = imageList1.Images[num2[x2]];

            // 实现模式一选择答案功能
            if (re_elect == true)
            {
                textBox1.Text = "只能选择一次";
            }
            else
            {
                if (num2[x2] == t2)
                {
                    textBox1.Text = "正确";
                    trueGuessPhoto[num2[x2]]++;
                }
                else
                {
                    textBox1.Text = "错误";
                }
            }

            continueGame.Visible = true;
            correctResult.Visible = true;
            re_elect = true;

            //计算认识率
            percent2[t2] = (float)(trueGuessPhoto[t2]) / (modelTwoName[t2] + 2);
            label4.Text = percent2[t2].ToString("0.00%");
        }

        // 点击第三张图片触发事件
        private void pictureBox4_Click(object sender, EventArgs e)
        {
            Graphics g = Graphics.FromHwnd(this.pictureBox4.Handle);
            PaintEventArgs a = new PaintEventArgs(g, this.pictureBox4.ClientRectangle);
            this.pictureBox4_Paint(this.pictureBox4, a);
            g.Dispose();

            delay(100);
            pictureBox4.Image = imageList1.Images[num2[x3]];

            // 实现模式一选择答案功能
            if (re_elect == true)
            {
                textBox1.Text = "只能选择一次";
            }
            else
            {
                if (num2[x3] == t2)
                {
                    textBox1.Text = "正确";
                    trueGuessPhoto[num2[x3]]++;
                }
                else
                {
                    textBox1.Text = "错误";
                }
            }

            continueGame.Visible = true;
            correctResult.Visible = true;
            re_elect = true;
            //计算认识率
            percent2[t2] = (float)trueGuessPhoto[t2] / (modelTwoName[t2] + 2);
            label4.Text = percent2[t2].ToString("0.00%");
        }

        // 第一张图片画边框(卡其色)
        private void pictureBox2_Paint(object sender, PaintEventArgs e)
        {
            PictureBox p = (PictureBox)sender;
            Pen pp = new Pen(Color.Khaki);
            e.Graphics.DrawRectangle(pp, e.ClipRectangle.X, e.ClipRectangle.Y, e.ClipRectangle.X + e.ClipRectangle.Width - 1, e.ClipRectangle.Y + e.ClipRectangle.Height - 1);
        }

        // 第二张图片画边框(卡其色)
        private void pictureBox3_Paint(object sender, PaintEventArgs e)
        {
            PictureBox p = (PictureBox)sender;
            Pen pp = new Pen(Color.Khaki);
            e.Graphics.DrawRectangle(pp, e.ClipRectangle.X, e.ClipRectangle.Y, e.ClipRectangle.X + e.ClipRectangle.Width - 1, e.ClipRectangle.Y + e.ClipRectangle.Height - 1);
        }

        // 第三张图片画边框(卡其色)
        private void pictureBox4_Paint(object sender, PaintEventArgs e)
        {
            PictureBox p = (PictureBox)sender;
            Pen pp = new Pen(Color.Khaki);
            e.Graphics.DrawRectangle(pp, e.ClipRectangle.X, e.ClipRectangle.Y, e.ClipRectangle.X + e.ClipRectangle.Width - 1, e.ClipRectangle.Y + e.ClipRectangle.Height - 1);
        }

        // 全部信息记录
        void messageRecord2()
        {
            // 清空数据
            n0 = 0;
            n1 = 0;
            n2 = 0;
            n3 = 0;
            n4 = 0;
            n5 = 0;

            label13.Text = "125".ToString();      // 总英雄

            for (int i = 0; i < 125; i++)
            {
                // 初认识
                if (trueGuessPhoto[i] != 0)
                {
                    n0++;
                }
                // 较熟悉
                if (percent2[i] >= 0.6 && percent2[i] < 0.7)
                {
                    n1++;
                }
                // 已认识
                if (percent2[i] >= 0.7 && percent2[i] < 0.8)
                {
                    n2++;
                }
                // 很熟悉
                if (percent2[i] >= 0.8 && percent2[i] < 0.9)
                {
                    n3++;
                }
                // 完全熟悉
                if (percent2[i] >= 0.9 && percent2[i] < 0.99)
                {
                    n4++;
                }
                // 一眼辨认
                if (percent2[i] >= 0.99)
                {
                    n5++;
                }
            }
            label14.Text = n0.ToString();
            label15.Text = n1.ToString();
            label16.Text = n2.ToString();
            label17.Text = n3.ToString();
            label18.Text = n4.ToString();
            label19.Text = n5.ToString();
        }

        // 获取随机刺客
        void getCi_ke2()
        {
            // 获取随机刺客
            int[] s = new int[] { 3, 4, 10, 12, 16, 22, 31, 33, 52, 87, 99, 107, 109, 115, 116 };
            for (int i = 0; i < 15; i++)
            {
                ci_keNum2[i] = s[i];
            }
            int c = new int();
            Random ran = new Random();
            c = ran.Next(15);
            t2 = ci_keNum2[c];
            aRandomName.Text=sumHeroNames[t2];
            modelTwoName[t2]++;
            this.label3.Text =  modelTwoName[t2].ToString();

        }

        // 获取随机坦克
        void getTan_ke2()
        {
            // 获取随机坦克
            int[] s = new int[] { 18, 55, 56, 65, 66, 67, 69, 75, 78, 80, 81, 84, 91, 96, 108, 121 };
            for (int i = 0; i < 16; i++)
            {
                tan_keNum2[i] = s[i];
            }
            int c = new int();
            Random ran = new Random();
            c = ran.Next(16);
            t2 = tan_keNum2[c];
            aRandomName.Text = sumHeroNames[t2];
            modelTwoName[t2]++;
            this.label3.Text = modelTwoName[t2].ToString();
        }

        // 获取随机射手
        void getShe_shou2()
        {
            // 获取随机射手
            int[] s = new int[] { 1, 6, 13, 20, 24, 29, 35, 59, 70, 74, 79, 82, 85, 89, 94, 98, 113, 114, 118 };
            for (int i = 0; i < 19; i++)
            {
                she_shouNum2[i] = s[i];
            }
            int c = new int();
            Random ran = new Random();
            c = ran.Next(19);
            t2 = she_shouNum2[c];
            aRandomName.Text = sumHeroNames[t2];
            modelTwoName[t2]++;
            this.label3.Text = modelTwoName[t2].ToString();
        }

        // 获取随机战士
        void getZhan_shi2()
        {
            // 获取随机战士
            int[] s = new int[] {2,15,17,19,25,30,34,38,40,42,43,44,
                                    47,48,49,53,54,58,60,61,62,68,71,72,
                                        77,83,88,90,92,97,100,101,106,119,120,124};
            for (int i = 0; i < 36; i++)
            {
                zhan_shiNum2[i] = s[i];
            }
            int c = new int();
            Random ran = new Random();
            c = ran.Next(36);
            t2 = zhan_shiNum2[c];
            aRandomName.Text = sumHeroNames[t2];
            modelTwoName[t2]++;
            this.label3.Text = modelTwoName[t2].ToString();
        }

        // 获取随机法师
        void getFa_shi2()
        {
            // 获取随机法师
            int[] s = new int[] {0,7,8,9,11,14,21,23,28,32,36,41,
                                    45,46,50,51,57,63,64,76,93,95,103,105,
                                        110,111,117,122};
            for (int i = 0; i < 28; i++)
            {
                fa_shiNum2[i] = s[i];
            }
            int c = new int();
            Random ran = new Random();
            c = ran.Next(28);
            t2 = fa_shiNum2[c];
            aRandomName.Text = sumHeroNames[t2];
            modelTwoName[t2]++;
            this.label3.Text = modelTwoName[t2].ToString();
        }

        // 获取随机辅助
        void getFu_zhu2()
        {
            // 获取随机战士
            int[] s = new int[] { 5, 26, 27, 37, 39, 73, 86, 102, 104, 112, 123 };
            for (int i = 0; i < 11; i++)
            {
                fu_zhuNum2[i] = s[i];
            }
            int c = new int();
            Random ran = new Random();
            c = ran.Next(11);
            t2 = fu_zhuNum2[c];
            aRandomName.Text = sumHeroNames[t2];
            modelTwoName[t2]++;
            this.label3.Text = modelTwoName[t2].ToString();
        }

        // 刺客信息
        void ci_keMessage2()
        {
            // 清空数据
            n0 = 0;
            n1 = 0;
            n2 = 0;
            n3 = 0;
            n4 = 0;
            n5 = 0;

            label13.Text = "15".ToString();      // 总英雄

            for (int i = 0; i < 15; i++)
            {
                // 初认识
                if (modelTwoName[ci_keNum2[i]] != 0)
                {
                    n0++;
                }
                // 较熟悉
                if (percent2[ci_keNum2[i]] >= 0.6 && percent2[ci_keNum2[i]] < 0.7)
                {
                    n1++;
                }
                // 已认识
                if (percent2[ci_keNum2[i]] >= 0.7 && percent2[ci_keNum2[i]] < 0.8)
                {
                    n2++;
                }
                // 很熟悉
                if (percent2[ci_keNum2[i]] >= 0.8 && percent2[ci_keNum2[i]] < 0.9)
                {
                    n3++;
                }
                // 完全熟悉
                if (percent2[ci_keNum2[i]] >= 0.9 && percent2[ci_keNum2[i]] < 0.99)
                {
                    n4++;
                }
                // 一眼辨认
                if (percent2[ci_keNum2[i]] >= 0.99)
                {
                    n5++;
                }
            }
            label14.Text = n0.ToString();
            label15.Text = n1.ToString();
            label16.Text = n2.ToString();
            label17.Text = n3.ToString();
            label18.Text = n4.ToString();
            label19.Text = n5.ToString();
        }

        // 坦克信息
        void tan_keMessage2()
        {
            // 清空数据
            n0 = 0;
            n1 = 0;
            n2 = 0;
            n3 = 0;
            n4 = 0;
            n5 = 0;

            label13.Text = "16".ToString();      // 总英雄

            for (int i = 0; i < 16; i++)
            {
                // 初认识
                if (modelTwoName[tan_keNum2[i]] != 0)
                {
                    n0++;
                }
                // 较熟悉
                if (percent2[tan_keNum2[i]] >= 0.6 && percent2[tan_keNum2[i]] < 0.7)
                {
                    n1++;
                }
                // 已认识
                if (percent2[tan_keNum2[i]] >= 0.7 && percent2[tan_keNum2[i]] < 0.8)
                {
                    n2++;
                }
                // 很熟悉
                if (percent2[tan_keNum2[i]] >= 0.8 && percent2[tan_keNum2[i]] < 0.9)
                {
                    n3++;
                }
                // 完全熟悉
                if (percent2[tan_keNum2[i]] >= 0.9 && percent2[tan_keNum2[i]] < 0.99)
                {
                    n4++;
                }
                // 一眼辨认
                if (percent2[tan_keNum2[i]] >= 0.99)
                {
                    n5++;
                }
            }
            label14.Text = n0.ToString();
            label15.Text = n1.ToString();
            label16.Text = n2.ToString();
            label17.Text = n3.ToString();
            label18.Text = n4.ToString();
            label19.Text = n5.ToString();
        }

        // 射手信息
        void she_shouMessage2()
        {
            // 清空数据
            n0 = 0;
            n1 = 0;
            n2 = 0;
            n3 = 0;
            n4 = 0;
            n5 = 0;

            label13.Text = "19".ToString();      // 总英雄

            for (int i = 0; i < 19; i++)
            {
                // 初认识
                if (modelTwoName[she_shouNum2[i]] != 0)
                {
                    n0++;
                }
                // 较熟悉
                if (percent2[she_shouNum2[i]] >= 0.6 && percent2[she_shouNum2[i]] < 0.7)
                {
                    n1++;
                }
                // 已认识
                if (percent2[she_shouNum2[i]] >= 0.7 && percent2[she_shouNum2[i]] < 0.8)
                {
                    n2++;
                }
                // 很熟悉
                if (percent2[she_shouNum2[i]] >= 0.8 && percent2[she_shouNum2[i]] < 0.9)
                {
                    n3++;
                }
                // 完全熟悉
                if (percent2[she_shouNum2[i]] >= 0.9 && percent2[she_shouNum2[i]] < 0.99)
                {
                    n4++;
                }
                // 一眼辨认
                if (percent2[she_shouNum2[i]] >= 0.99)
                {
                    n5++;
                }
            }
            label14.Text = n0.ToString();
            label15.Text = n1.ToString();
            label16.Text = n2.ToString();
            label17.Text = n3.ToString();
            label18.Text = n4.ToString();
            label19.Text = n5.ToString();
        }

        // 战士信息
        void zhan_shiMessage2()
        {
            // 清空数据
            n0 = 0;
            n1 = 0;
            n2 = 0;
            n3 = 0;
            n4 = 0;
            n5 = 0;

            label13.Text = "36".ToString();      // 总英雄

            for (int i = 0; i < 36; i++)
            {
                // 初认识
                if (modelTwoName[zhan_shiNum2[i]] != 0)
                {
                    n0++;
                }
                // 较熟悉
                if (percent2[zhan_shiNum2[i]] >= 0.6 && percent2[zhan_shiNum2[i]] < 0.7)
                {
                    n1++;
                }
                // 已认识
                if (percent2[zhan_shiNum2[i]] >= 0.7 && percent2[zhan_shiNum2[i]] < 0.8)
                {
                    n2++;
                }
                // 很熟悉
                if (percent2[zhan_shiNum2[i]] >= 0.8 && percent2[zhan_shiNum2[i]] < 0.9)
                {
                    n3++;
                }
                // 完全熟悉
                if (percent2[zhan_shiNum2[i]] >= 0.9 && percent2[zhan_shiNum2[i]] < 0.99)
                {
                    n4++;
                }
                // 一眼辨认
                if (percent2[zhan_shiNum2[i]] >= 0.99)
                {
                    n5++;
                }
            }
            label14.Text = n0.ToString();
            label15.Text = n1.ToString();
            label16.Text = n2.ToString();
            label17.Text = n3.ToString();
            label18.Text = n4.ToString();
            label19.Text = n5.ToString();
        }

        // 法师信息
        void fa_shiMessage2()
        {
            // 清空数据
            n0 = 0;
            n1 = 0;
            n2 = 0;
            n3 = 0;
            n4 = 0;
            n5 = 0;

            label13.Text = "28".ToString();      // 总英雄

            for (int i = 0; i < 28; i++)
            {
                // 初认识
                if (modelTwoName[fa_shiNum2[i]] != 0)
                {
                    n0++;
                }
                // 较熟悉
                if (percent2[fa_shiNum2[i]] >= 0.6 && percent2[fa_shiNum2[i]] < 0.7)
                {
                    n1++;
                }
                // 已认识
                if (percent2[fa_shiNum2[i]] >= 0.7 && percent2[fa_shiNum2[i]] < 0.8)
                {
                    n2++;
                }
                // 很熟悉
                if (percent2[fa_shiNum2[i]] >= 0.8 && percent2[fa_shiNum2[i]] < 0.9)
                {
                    n3++;
                }
                // 完全熟悉
                if (percent2[fa_shiNum2[i]] >= 0.9 && percent2[fa_shiNum2[i]] < 0.99)
                {
                    n4++;
                }
                // 一眼辨认
                if (percent2[fa_shiNum2[i]] >= 0.99)
                {
                    n5++;
                }
            }
            label14.Text = n0.ToString();
            label15.Text = n1.ToString();
            label16.Text = n2.ToString();
            label17.Text = n3.ToString();
            label18.Text = n4.ToString();
            label19.Text = n5.ToString();
        }

        // 辅助信息
        void fu_zhuMessage2()
        {
            // 清空数据
            n0 = 0;
            n1 = 0;
            n2 = 0;
            n3 = 0;
            n4 = 0;
            n5 = 0;

            label13.Text = "11".ToString();      // 总英雄

            for (int i = 0; i < 11; i++)
            {
                // 初认识
                if (modelTwoName[fu_zhuNum2[i]] != 0)
                {
                    n0++;
                }
                // 较熟悉
                if (percent2[fu_zhuNum2[i]] >= 0.6 && percent2[fu_zhuNum2[i]] < 0.7)
                {
                    n1++;
                }
                // 已认识
                if (percent2[fu_zhuNum2[i]] >= 0.7 && percent2[fu_zhuNum2[i]] < 0.8)
                {
                    n2++;
                }
                // 很熟悉
                if (percent2[fu_zhuNum2[i]] >= 0.8 && percent2[fu_zhuNum2[i]] < 0.9)
                {
                    n3++;
                }
                // 完全熟悉
                if (percent2[fu_zhuNum2[i]] >= 0.9 && percent2[fu_zhuNum2[i]] < 0.99)
                {
                    n4++;
                }
                // 一眼辨认
                if (percent2[fu_zhuNum2[i]] >= 0.99)
                {
                    n5++;
                }
            }
            label14.Text = n0.ToString();
            label15.Text = n1.ToString();
            label16.Text = n2.ToString();
            label17.Text = n3.ToString();
            label18.Text = n4.ToString();
            label19.Text = n5.ToString();
        }

        // 延时函数
        private void delay(int iInterval)
        {
            DateTime now = DateTime.Now;
            while (now.AddMilliseconds(iInterval) > DateTime.Now)
            {
            }
            return;
        }
    }
}

数据用 sqlserver保存

用 modelOne保存模式一的数据,modelTwo保存模式二的数据

以下是模式一,功能展示

模式二功能展示

算法解析:

bool boo=new bool();
            boo = true;
            Random ran = new Random();
            t = ran.Next(125);
            while (t == m || t == n)
            {
                t = ran.Next(125);
            }
            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];
                            sumHeroPhoto[t]++;
                            this.label3.Text = sumHeroPhoto[t].ToString();
                            tp[t] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp[t]++;
                            t = ran.Next(125);
                        }
                    }
                    // 英雄认识率在90%到99%之间,出现的概率为原来的1/5
                    if (percent[t] >= 0.9 && percent[t] < 0.99)
                    {
                        m4++;
                        if (tp[t] == 4)
                        {
                            pictureBox1.Image = imageList1.Images[t];
                            sumHeroPhoto[t]++;
                            this.label3.Text = sumHeroPhoto[t].ToString();
                            tp[t] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp[t]++;
                            t = ran.Next(125);
                        }
                    }
                    // 英雄认识率在80%到90%之间,出现的概率为原来的1/4
                    if (percent[t] >= 0.8 && percent[t] < 0.9)
                    {
                        m3++;
                        if (tp[t] == 3)
                        {
                            pictureBox1.Image = imageList1.Images[t];
                            sumHeroPhoto[t]++;
                            this.label3.Text = sumHeroPhoto[t].ToString();
                            tp[t] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp[t]++;
                            t = ran.Next(125);
                        }
                    }
                    // 英雄认识率在70%到80%之间,出现的概率为原来的1/3
                    if (percent[t] >= 0.7 && percent[t] < 0.8)
                    {
                        m2++;
                        if (tp[t] == 2)
                        {
                            pictureBox1.Image = imageList1.Images[t];
                            sumHeroPhoto[t]++;
                            this.label3.Text = sumHeroPhoto[t].ToString();
                            tp[t] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp[t]++;
                            t = ran.Next(125);
                        }
                    }
                    // 英雄认识率在60%到70%之间,出现的概率为原来的1/2
                    if (percent[t] >= 0.6 && percent[t] < 0.7)
                    {
                        m1++;
                        if (tp[t] == 1)
                        {
                            pictureBox1.Image = imageList1.Images[t];
                            sumHeroPhoto[t]++;
                            this.label3.Text = sumHeroPhoto[t].ToString();
                            tp[t] = 0;
                            boo = false;
                        }
                        else
                        {
                            tp[t]++;
                            t = ran.Next(125);
                        }
                    }
                }
                //英雄认识率低于60%,出现的概率为1/125
                else
                {
                    pictureBox1.Image = imageList1.Images[t];
                    sumHeroPhoto[t]++;
                    boo = false;
                }
            }
            this.label3.Text = sumHeroPhoto[t].ToString();

认识率达到 60%到70% 的英雄出现的概率为原来的 1/2

用tp参数实现,出现一次,tp++ ,再用random获得一个随机数

出现第二次后,tp=0,此时才会出现该英雄

时间: 2024-07-31 00:57:42

【c#第六次作业】猜猜看游戏的相关文章

c#课程设计---猜猜看游戏

1:游戏要求 1. 随机显示 一个名字 与 若干张相片(如3张).选择正确的相片. 2. 记录老师对每一个学生的认识概率P.并依据认识概率,确定"猜猜看"游戏中学生出现的频率. 认识概率P = 识别的准确次数/(识别的准确次数+识别的错误次数 a)   原则1:认识概率 高的学生,在猜猜看游戏中出现的频率相对低一些. b)   原则2:认识概率 低的学生.在猜猜看游戏中出现的频率相对高一些. c)   原则3:认识概率 100%的学生.也有出现的可能性. d)   原则4:认识概率 0

Rust初步(二):使用Visual Studio Code编写Rust程序(猜猜看游戏)

我是照着下面这篇帮助文档,完成了第一个完整的Rust程序: 猜猜看 游戏 http://kaisery.gitbooks.io/rust-book-chinese/content/content/3.1.Guessing%20Game%20%E7%8C%9C%E7%8C%9C%E7%9C%8B.html 我采用的开发工具是Visual Studio Code, 这应该是目前能找到的最"所见即所得"的编辑器了, 尤其对于我们这种重度Windows依赖症患者来说. 不过需要提出的是,我是在

作业六:猜猜看,检验朋友熟悉度——Winform程序

1.目的 以最快的速度认识.了解身边的人: 促进人与人之间的互动交流: 2.目标 满足基本功能:对原型进行简单的验证: 3.内容 功能: 随机显示一个名字与 3张相片,选择相片,提示结果,显示图片正确信息:  随机显示 一张相片与若3个名字,选择名字,提示结果:  4.重点--随机概率 概率计算:记录对每个人的认识概率P,并根据认识概率,确定"猜猜看"游戏中学生出现的频率. 认识概率P = 识别的准确次数/(识别的准确次数+识别的错误次数) 原则1:认识概率 高的学生,在猜猜看游戏中出

《JAVA程序设计》实训第一天——《猜猜看》游戏

课程实训是做一个猜猜看的小游戏.对于对代码不熟悉不了解的我来说的确挺难的.但是我还是会努力的. import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JButton; import javax.swing.JTextField; import javax.swing.JLa

《JAVA程序设计》实训第三天——《猜猜看》游戏

基本的代码运行可以通过了.显示图片,猜猜看基本可以运行,游戏整体代码已经完成.就是统计猜对猜错次数那个还在努力,在查找中,不知能不能运行得了一个可以统计猜对猜错次数的猜猜看游戏. <pre name="code" class="java">import java.awt.EventQueue; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPane

《猜猜看》游戏开发

猜猜看游戏开发过程介绍 1.界面设计 界面设计包含,"打开目录"按钮来确定猜猜游戏的图片目录,"打开文件"按钮来确定被猜名称,游戏界面中间那个"标签"显示被猜名称.接着是,装放三个图片的控件PictureBox的运用.由于界面简陋,这个环节花费时间不多. 2.功能实现 基本的界面设计完成后,就到了功能实现的环节.猜猜看游戏的核心功能是,随机产生三个图片以及其名称,通过一个随机出现的名称来与随机出现的图片名称相匹配来判断是否猜对结果.首先,点击&q

《JAVA课程设计》实训第四天——《猜猜看》游戏

第四天,本来想进一步去改进<猜猜看>游戏的,但是很多问题都不理解,也不熟悉怎么去弄到连接数据库,统计猜对次数,所以并没有进行再多的修改. 基本上就是这样的运行结果了 import java.awt.EventQueue; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.sw

《JAVA程序设计》实训第二天——《猜猜看》游戏

课程实训第二天,我在第一天的基础上去导入文件夹,第一天那时候一直修改都是修改不到,上网找了相关的知识,问了同学该怎么去导入显示图片. public class weiwei extends JFrame { /** * */ private static final long serialVersionUID = 1L; private JPanel contentPane; private JTextField tfDir; private JTextField tfClass; File[]

3.26日第六次作业,第10章质量,11章人力

3.26日 第六次作业,第10章质量,11章人力 1.质量管理基本原则   以实用为核心的多元要求.系统工程.职工参与管理.管理层和第一把手重视.保护消费者权益.面向国际市场. 2.质量管理的目标顾客满意度.预防胜于检查.各阶段内的过程.   质量管理既重视结果也重视过程   实施组织主动采纳的质量改进措施(如全面质量管理.持续改进等) 3.质量管理的主要活动有哪些项目的质量管理可以分解为质量策划.质量保证与质量控制三个过程.质量策划是指确定与项目相关的质量标准,并决定如何达到这些质量标准.质量