在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → 纸牌游戏21点 源码下载

纸牌游戏21点 源码下载

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:5.87M
  • 下载次数:41
  • 浏览次数:376
  • 发布时间:2014-05-09
  • 实例类别:C#语言基础
  • 发 布 人:fghffghfgh
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 游戏 纸牌

实例介绍

【实例简介】一个不错的学习例子,希望可以帮到正在研究做游戏的朋友们,注意哦,是C#开发的.
【实例截图】

【核心代码】


private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void 新游戏ToolStripMenuItem_Click(object sender, EventArgs e)   //新游戏,将游戏中所有的数据清空或归位;
        {
            index = 0; count = 0;
            maskedTextBox1.ReadOnly = false;
            a = 0; b = 0; c = 0; d = 0; f = 0; g = 0; h = 0; o = 0; ii = 1; ss = 0; aa = 0; diannao = 0; q1 = 0; qq = 0; duoyu = 0; xiazhu = 0; zongshu = 0;
            pictureBox1.Hide(); pictureBox2.Hide(); pictureBox3.Hide(); pictureBox4.Hide();
            pictureBox5.Hide(); pictureBox6.Hide(); pictureBox7.Hide(); pictureBox8.Hide(); pictureBox15.Hide();
            pictureBox9.Hide(); pictureBox10.Hide(); pictureBox11.Hide(); pictureBox12.Hide();
            pictureBox13.Hide(); pictureBox14.Hide(); button4.Enabled = false;
            button8.Enabled = false; button7.Enabled = false; button6.Enabled = false; button9.Enabled = true;
            button1.Enabled = true; button2.Enabled = true; button3.Enabled = true; button9.Enabled = true;
            button5.Enabled = true; maskedTextBox1.Enabled = true; label13.Text = "";
            maskedTextBox1.Text = ""; label7.Text = "0"; label4.Text = "1000"; label11.Text = ""; label14.Text = "";
        }
        private void button4_Click(object sender, EventArgs e)             //开局,与新游戏唯一的不同就是label4没有清空!!
        {
            index = 0; count = 0;
            label18.Text = ""; label6.Text = "0"; label14.Text = "0";
            a = 0; b = 0; c = 0; d = 0; f = 0; g = 0; h = 0; o = 0; ii = 1; ss = 0; aa = 0; diannao = 0; qq = 0; xiazhu = 0; zongshu = 0; duoyu = 0;
            pictureBox1.Hide(); pictureBox2.Hide(); pictureBox3.Hide(); pictureBox4.Hide();
            pictureBox5.Hide(); pictureBox6.Hide(); pictureBox7.Hide(); pictureBox8.Hide(); pictureBox15.Hide();
            pictureBox9.Hide(); pictureBox10.Hide(); pictureBox11.Hide(); pictureBox12.Hide();
            pictureBox13.Hide(); pictureBox14.Hide(); button4.Enabled = false;
            button8.Enabled = false; button7.Enabled = false; button6.Enabled = false; button9.Enabled = true;
            button1.Enabled = true; button2.Enabled = true; button3.Enabled = true; button9.Enabled = true;
            button5.Enabled = true; maskedTextBox1.Enabled = true; label13.Text = "";
            maskedTextBox1.Text = ""; label7.Text = "0"; label11.Text = ""; q1 = 0;
        }

        private void Form1_Load(object sender, EventArgs e)              //游戏执行时因为没有用到pictureBox,所以将所有的pictureBox隐藏;
        {
            pictureBox1.Hide(); pictureBox2.Hide(); pictureBox3.Hide(); pictureBox4.Hide(); pictureBox13.Hide();
            pictureBox5.Hide(); pictureBox6.Hide(); pictureBox7.Hide(); pictureBox8.Hide(); pictureBox14.Hide(); pictureBox15.Hide();
            pictureBox9.Hide(); pictureBox10.Hide(); pictureBox11.Hide(); pictureBox12.Hide(); maskedTextBox1.ReadOnly = true;
        }
        double zijin = 0, zongjin, zongshu = 0, shiqu, diannao, xiazhu, duoyu;
        Random randon = new Random();                  //随机数定义
        int a, b, c, d, f, g, h, o, l, m, n, y, z, v;  //为每一个pictureBox的牌面的点数的定义
        int ss, aa, qq = 0, ii = 1, q1 = 0;
        double d1, d2, d3, d4, d5, d6, d7;             //这个是电脑牌面数值的定义;
        double w1, w2, w3, w4, w5, w6, w7;             //这个是玩家牌面的定义;

        private void 帮助框ToolStripMenuItem_Click(object sender, EventArgs e)    //打开帮助面板,为新的窗体;
        {
            Form2 a = new Form2();
            a.Show();
        }

        public void an_Click(object sender, EventArgs e)       //游戏正式开始时,要下注,这个为下注的Button的设定代码;(100、200、500)
        {
            string bot = ((Button)sender).Text;
            int lab7 = int.Parse(bot);
            q1 = q1 lab7;
            if (q1 >= Convert.ToInt32(label4.Text))
            {
                q1 = Convert.ToInt32(label4.Text);
                button1.Enabled = false; button2.Enabled = false; button3.Enabled = false;
                button5.Enabled = false; 
            }
            label7.Text = q1.ToString();
            button6.Enabled = true;
            button7.Enabled = false;
            button4.Enabled = false;
            if (duoyu == 1)
                xiazhu = 0;
            duoyu = 0;
        }

        public void jiapai_Click(object sender, EventArgs e)               //Button6,发牌
        {
            if (double.Parse(label4.Text) < double.Parse(label7.Text))     //如果玩家下注大于现有资金的最大值,便将现有资金全数作为下注金额;
                label7.Text = label4.Text;
            pictureBox1.Show();pictureBox2.Show();          //四个PictureBox,1、2是庄家的前面两张牌,8、9是玩家的前面两张牌;
            pictureBox8.Show();pictureBox9.Show();
            switch (ii)                                     //ii是作为进入玩家加牌的数值定义,因为玩家是一张一张牌来增加的。
            {
                case 1:                                     //ii的默认值为1;
                    {
                        pictureBox1.Image = Image.FromFile("tupian\\53.jpg");           //电脑台面上的第一张牌,为背面,无用
                        a = randon.Next(52);//随机选出第一张牌,为电脑台面上的第二张牌,因为是第一张随机选出的牌,所以不用判断是否与其它的牌重复
                        pictureBox2.Image = Image.FromFile("tupian\\" a.ToString() ".jpg");   //电脑台面上的第二张牌,同时也是作为基础牌面要计算数值的第一张牌;
                        d1 = a % 13 1;              //将所得的牌转换成1~13的数字
                        if (d1 > 10)                            //判断是否为11、12、13这三个数字,如果是,就将它转换为10;
                            d1 = 10;
                        b = randon.Next(52);//这里往下就是玩家的第一张牌,与之相应的是在文件夹中名字为0~51的图片;
                        while (b == a)      //当玩家的这个随机得到的牌与庄家得到的第一张随机的牌相同时,则重新生成一个随机数,让它与前面的牌的点数不一样;
                        {
                            b = randon.Next(52);
                        }
                        w1 = b % 13 1;    //计算出随机得到的数所在的牌的点数
                        if (w1 > 10)        //当得到的点数>10的时候,即11、12、13,将它们变成10(作为21点游戏的规则而设定的)
                            w1 = 10;
                        zongshu = w1;      //zongshu是玩家所得的点数相加之和的定义
                        pictureBox8.Image = Image.FromFile("tupian\\" b.ToString() ".jpg");   //将玩家随机得到的第一张牌显示出来
                        c = randon.Next(52);//这里往下为玩家的第二张牌,一直往下相似的代码均为此效果;
                        while (c == a || c == b)
                        {
                            c = randon.Next(52);
                        }
                        w2 = c % 13 1;
                        if (w2 > 10)
                            w2 = 10;
                        zongshu = w2;
                        pictureBox9.Image = Image.FromFile("tupian\\" c.ToString() ".jpg");

                        if (w1 == 1 && w2 != 1)             //这里是判断BlackJack的地方,只有当玩家的开始得到的两张牌为一张A与一张大于等于10的牌时,玩家即为得到了BlackJack;
                        {
                            if (w1 w2 == 11)              //BlackJack的胜利条件是一张A和一张10点的牌,所以相加为11;
                            {
                                //MessageBox.Show("恭喜你取得了BlackJack!!");
                                index = 0;
                                count = 0;
                                timer1.Enabled = true;
                                yin = 30000;
                                m1 = 30031;
                                timer2.Enabled = true;
                                button6.Enabled = false;    //这里相应的按钮效果
                                button7.Enabled = false;
                                button8.Enabled = false;
                                button4.Enabled = true;
                                zijin = 1.5 * double.Parse(label7.Text);  //将下注金额与现有金额化为数值,并将下注金额的1.5倍加入原有的金额中
                                zongjin = double.Parse(label4.Text);
                                zongjin = zijin;
                                label4.Text = zongjin.ToString();
                                goto aaa;                  //因为得到了BlackJack,所以用Goto语句强行结束这个Switch语句
                            }
                            else if (w1 w2 != 11)        //这里自然是没能取得BlackJack的判断语句,由于这个语句的进入条件是w1为A,所以将w1看做11;
                                zongshu = 10;
                            aa = 1;
                        }
                        else if (w2 == 1 && w1 != 1)            //与上面相反,这里是w2的条件为A时进入的判断,其余同上
                        {
                            if (w2 w1 == 11)
                            {
                                //MessageBox.Show("恭喜你取得了BlackJack!!");
                                index = 0;
                                count = 0;
                                timer1.Enabled = true;
                                yin = 30000;
                                m1 = 30031;
                                timer2.Enabled = true;
                                button6.Enabled = false;
                                button7.Enabled = false;
                                button8.Enabled = false;
                                button4.Enabled = true;
                                zijin = 1.5 * double.Parse(label7.Text);
                                zongjin = double.Parse(label4.Text);
                                zongjin = zijin;
                                label4.Text = zongjin.ToString();
                                goto aaa;
                            }
                            else if (w2 w1 != 11)
                                zongshu = 10;
                            aa = 1;
                        }
                        else if (w1 == 1 && w2 == 1)
                        {
                            zongshu = 12;
                            aa = 1;
                        }
                        ii = 13;
                    } break;
                case 13:
                    {
                        d = randon.Next(52);                   //这里是玩家取得第三张牌的地方
                        while (d == a || d == b || d == c)
                        {
                            d = randon.Next(52);
                        }
                        w3 = d % 13 1;
                        if (w3 >= 10)
                            w3 = 10;
                        zongshu = w3;
                        if (w3 == 1)
                        {
                            zongshu = 10;
                            if (zongshu > 21)
                                zongshu -= 10;
                        }
                        pictureBox10.Show();
                        pictureBox10.Image = Image.FromFile("tupian\\" d.ToString() ".jpg");
                        if (zongshu > 21)                 //判断玩家拿到三张牌后是否超过21点
                        {
                            if (aa == 1)
                            {
                                zongshu -= 10;
                                aa = 0;
                            }
                            if (zongshu > 21)
                            {
                                yin = 20000;
                                m1 = 20035;
                                timer2.Enabled = true;
                                label18.Text = "输";
                                shiqu = double.Parse(label7.Text);
                                label14.Text = shiqu.ToString();
                                zongjin = double.Parse(label4.Text);
                                zongjin -= shiqu;
                                label4.Text = zongjin.ToString();
                                qq = 1;
                                goto asa;
                            }
                        }
                        ii = 14;
                    } break;
                case 14:
                    {
                        f = randon.Next(52);                   //这里是玩家取得四张牌的地方;
                        while (f == a || f == b || f == c || f == d)
                        {
                            f = randon.Next(52);
                        }
                        w4 = f % 13 1;                      //这个是判断玩家取得4张牌后是否超过21点
                        if (w4 >= 10)
                            w4 = 10;
                        zongshu = w4;
                        if (w4 == 1)
                        {
                            zongshu = 10;
                            if (zongshu > 21)
                                zongshu -= 10;
                        }
                        pictureBox11.Show();
                        pictureBox11.Image = Image.FromFile("tupian\\" f.ToString() ".jpg");
                        if (zongshu > 21)
                        {
                            if (aa == 1)
                            {
                                zongshu -= 10;
                                aa = 0;
                            }
                            if (zongshu > 21)
                            {
                                yin = 20000;
                                m1 = 20035;
                                timer2.Enabled = true;
                                label18.Text = "输";
                                shiqu = double.Parse(label7.Text);
                                label14.Text = shiqu.ToString();
                                zongjin = double.Parse(label4.Text);
                                zongjin -= shiqu;
                                label4.Text = zongjin.ToString();
                                qq = 1;
                                goto asa;
                            }
                        }
                        ii = 15;
                    } break;
                case 15:
                    {
                        g = randon.Next(52);                    //这里是玩家取得5张牌的地方;
                        while (g == a || g == b || g == c || g == d || g == f)
                        {
                            g = randon.Next(52);
                        }
                        w5 = g % 13 1;                        //这个是判断玩家取得5张牌后是否超过21点
                        if (w5 >= 10)
                            w5 = 10;
                        zongshu = w5;
                        if (w5 == 1)
                        {
                            zongshu = 10;
                            if (zongshu > 21)
                                zongshu -= 10;
                        }
                        pictureBox12.Show();
                        pictureBox12.Image = Image.FromFile("tupian\\" g.ToString() ".jpg");
                        if (zongshu > 21)
                        {
                            if (aa == 1)
                            {
                                zongshu -= 10;
                                aa = 0;
                            }
                            if (zongshu > 21)
                            {
                                yin = 20000;
                                m1 = 20035;
                                timer2.Enabled = true;
                                label18.Text = "输";
                                shiqu = double.Parse(label7.Text);
                                label14.Text = shiqu.ToString();
                                zongjin = double.Parse(label4.Text);
                                zongjin -= shiqu;
                                label4.Text = zongjin.ToString();
                                qq = 1;
                                goto asa;
                            }
                        }
                        ii = 16;
                    } break;
                case 16:
                    {
                        h = randon.Next(52);                    //这里是玩家取得6张牌的地方;
                        while (h == a || h == b || c == h || h == d || h == f || h == g)
                        {
                            h = randon.Next(52);
                        }
                        w6 = h % 13 1;                        //这个是判断玩家取得6张牌后是否超过21点
                        if (w6 >= 10)
                            w6 = 10;
                        zongshu = w6;
                        if (w6 == 1)
                        {
                            zongshu = 10;
                            if (zongshu > 21)
                                zongshu -= 10;
                        }
                        pictureBox13.Show();
                        pictureBox13.Image = Image.FromFile("tupian\\" h.ToString() ".jpg");
                        if (zongshu > 21)
                        {
                            if (aa == 1)
                            {
                                zongshu -= 10;
                                aa = 0;
                            }
                            if (zongshu > 21)
                            {
                                yin = 20000;
                                m1 = 20035;
                                timer2.Enabled = true;
                                label18.Text = "输";
                                shiqu = double.Parse(label7.Text);
                                label14.Text = shiqu.ToString();
                                zongjin = double.Parse(label4.Text);
                                zongjin -= shiqu;
                                label4.Text = zongjin.ToString();
                                qq = 1;
                                goto asa;
                            }
                        }
                        ii = 17;
                    } break;
                case 17:
                    {
                        o = randon.Next(52);                    //这里是玩家取得7张牌的地方
                        while (o == a || o == b || o == c || o == d || o == f || o == g || o == h)
                        {
                            o = randon.Next(52);
                        }
                        w7 = o % 13 1;                        //这个是判断玩家取得7张牌后是否超过21点
                        if (w7 >= 10)
                            w7 = 10;
                        zongshu = w7;
                        if (w7 == 1)
                        {
                            zongshu = 10;
                            if (zongshu > 21)
                                zongshu -= 10;
                        }
                        pictureBox14.Show();
                        pictureBox14.Image = Image.FromFile("tupian\\" o.ToString() ".jpg");
                        if (zongshu > 21)
                        {
                            if (aa == 1)
                            {
                                zongshu -= 10;
                                aa = 0;
                            }
                            if (zongshu > 21)
                            {
                                yin = 20000;
                                m1 = 20035;
                                timer2.Enabled = true;
                                label18.Text = "输";
                                shiqu = double.Parse(label7.Text);
                                label14.Text = shiqu.ToString();
                                zongjin = double.Parse(label4.Text);
                                zongjin -= shiqu;
                                label4.Text = zongjin.ToString();
                                qq = 1;
                                goto asa;
                            }
                        }
                    } break;
            }
            button6.Enabled = false;
            button7.Enabled = true;
            button8.Enabled = true;
        aaa:
            button1.Enabled = false;
            button2.Enabled = false;
            button3.Enabled = false;
            button5.Enabled = false;
            button9.Enabled = false;
            maskedTextBox1 .Enabled = false;
        asa:
            if (qq == 1)
            {
                button4.Enabled = true;
                button7.Enabled = false;
                button8.Enabled = false;
                qq = 0;
            }
            if (label4.Text == "0")
                button4.Enabled = false;          //当玩家的所有金额为0时,则将洗牌这个按钮隐去不能使用,这样就这能点击新游戏重新开始游戏了
        }   


标签: 游戏 纸牌

网友评论

第 1 楼 dufangyi 发表于: 2017-06-14 07:50 45
一般般

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有1条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警