C#课程设计游戏21点
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.2 要求:
(1)掌握常用控件以及控件的常用属性的使用方法。 (2)掌握 C#语言的异常处理技术,能够使用.NET 各种调试方法调试代码,掌握帮助的使用方法。 (3)熟悉.NET 开发环境,能够使用 C#语言在.NET 平台上独立设计、开发 WINDOWS 应用程序。 (4)程序中应有不少于 100~300 行的自行编写的代码,代码需书写详细注释。 (5)程序中应有不少于 100~300 行的自行编写的代码,代码需书写详细注释。
(3)玩家点开牌按钮,实现庄家补牌,若庄家不爆点,则比较玩家和庄家的点数 private void button7_Click(object sender, EventArgs e) //button7, 开 牌,当玩家确定了自己的牌的点数且牌的点数相加小于21点时,就可以开牌和电脑比较大小了 { button4.Enabled = true; //这里开始 为随机求出的电脑的第二张牌 l = randon.Next(52); while (l == a || l == b || l == c || l == d || l == f || l == g || l == h || l == o) { l = randon.Next(52); } d2 = l % 13 + 1; if (d2 > 10) d2 = 10; diannao = d1 + d2; //求出电脑两张牌的数值 if ((d2 == 1 && d1 != 1)||(d1 == 1 && d2 != 1)) //这些代码效果与上面说的一样 { diannao += 10; ss = 1; } else if (d1 == 1 && d2 == 1) { diannao = 12; ss = 1; } pictureBox1.Show(); pictureBox1.Image = Image.FromFile("tupian\\" + l.ToString() + ".jpg"); m = randon.Next(52); //这里为随机求出电脑的第三张牌; while (m == a || m == b || m == v || m == d || m == f || m == g || m == h || m == o || m == l) { m = randon.Next(52); } d3 = m % 13 + 1; if (diannao >= 17) //当电脑刚开始拿到的2张牌的 数值就大于或等于17点时,将不再增加牌,强行退出判断 goto qqw; pictureBox3.Show(); pictureBox3.Image = Image.FromFile("tupian\\" + m.ToString() + ".jpg"); // 显示电脑的第三张随机出来的牌 if (d3 > 10)
v
图 3. 发牌加牌按钮 用 0~53 分别代表扑克牌的 54 张牌面,通过使用 Random 类的.Next 方法随机生成 0~53 的伪 随机数,每个数字分别代表相应的一张扑克牌,使用 (随机数 % 3 +1)的方法算出牌面对 应点数, 大于 10 点的转为 10 点; 另外定义一个变量 ii, 作为当前生成的牌是第几张的标识, 配合 switch 选择语句识别当前所发的牌,并做出相关的新牌生成,重复牌判断和点数累计, 21 点黑杰克判断以及是否爆点判断 switch (ii) //ii是作为进入玩家加牌的 数值定义, 因为玩家是一张 一张牌来增加的。 //ii的默认值为1;
2.2 开发工具介绍
本程序是在 Microsoft Visual studio C# 2005 Express 的开发环境下完成的。
源自文库
三、总体设计
本程序为 21 点小游戏,运用 c# 的 windows 应用程序开发,首先制作主窗体,并在其上添加 menustrip,picturebox,button,等一系列控件,并设置窗体和控件的相关属性,最终制作出美观大 方的游戏主窗体。然后开始游戏的后台程序编写,把 54 扑克牌的图片分别重命名为 0.jpg~53.jpg, 并用 random 类的 .Next 方法产生 0~53 的伪随机数,用(随机数 %3+1 )的算法算出牌面点数,以 “tupian//”+随机数.Tostring+”.jpg”作为相应 picturebox 的图片地址进行显示。当玩家要牌结束后, 开始用相同的方法给庄家发牌, 在庄家没有爆点的情况下将玩家跟庄家的点数进行比较, 最后用 lable 的 Text 属性显示最终结果。
图 2. 游戏菜单 private void 新游戏ToolStripMenuItem_Click(object sender, EventArgs e) 将游戏中所有的数据清空或归位; { index = 0; count = 0; //新游戏,
a = 0; b = 0; c = 0; d = 0; f = 0; g = 0; h = 0; o = 0; ii = 1; ss = 0; aa =
二、题目说明.........................................................................................................................2
2.1 程序开发背景...................................................................................2 2.2 开发工具介绍...................................................................................2
四、详细说明
4.1 系统实施
总体概述“21 点小游戏
1. 功能简介:本软件为 21 点小游戏,主要实现玩家跟电脑且以电脑为庄家的游戏实现,玩家可以 通过新游戏和退出菜单开始和关闭游戏,通过“发牌” “要牌” “开牌” “洗牌” “结束”等按钮 操作游戏 2.游戏界面截图
图 1. 游戏主界面 3.21 点小游戏关键代码和描述: (1)menuStrip 菜单中的“新游戏”和“退出”选项:
二、题目说明
2.1 程序开发背景
黑杰克又名 BlackJack (简称 21 点) ,起源于法国,现已流传到世界各地。该游戏由 2 到 6 个人玩,使用除大小王之外的 52 张牌,游戏者的目标是使手中的牌的点数之和不 超过 21 点且尽量大。 有着悠久的历史。黑杰克简称为 21 点, 1700 年左右法国赌场就有 这种 21 点的纸牌游戏。1931 年,当美国内华达州宣布赌博为合法活动时,21 点游戏第一次 公开出现在内华达州的赌场俱乐部,15 年内,它取代掷骰子游戏,而一举成为非常流行的赌 场庄家参与的赌博游戏。 21 点本为赌博游戏,并不值得推荐,但其游戏性和娱乐性却很强,而且作为一款数字牌类游 能 一定程度上锻炼逻辑思维和运算能力,本着这种想法,开发者想把这款传统的赌博游戏制作成适 合各类人群休闲娱乐的小游戏,同时通过实践更加掌握 c#平台的开发过程
一、课程设计的目的与要求
1.1 目的:
(1)能够利用所学的基本知识和技能,解释和应用程序开发所涉及的相关知识。 (2)基本掌握面向对象程序开发的基本思路和方法; (3)要求学生达到熟练掌握.NET 基本结构以及 C#语言的基本知识和技能; (4)通过学习积累掌握简单的记事本,通讯录以及多媒体播放的开发技术。
4.1
系统实施........................................................................................3
五、遇到的问题和解决方法...........................................................................................9 六、课程设计总结...............................................................................................................9 七、参考文献.......................................................................................................................10
目
录
一、课程设计的目的与要求...........................................................................................2
1.1 1.2
目的:..........................................................................................2 要求:..........................................................................................2
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(); pictureBox9.Hide(); pictureBox10.Hide(); pictureBox11.Hide(); pictureBox12.Hide(); pictureBox13.Hide(); pictureBox14.Hide(); button4.Enabled = false; button8.Enabled = false; button7.Enabled = false; button6.Enabled = true; button9.Enabled = true; button9.Enabled = true; label13.Text = ""; label11.Text = ""; private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } (2)“发牌”和“加牌”按钮的实现,也是主要功能之一:
三、总体设计.........................................................................................................................3 四、详细说明.........................................................................................................................3
{ case 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");