目 录
一、课程设计的目的与要求 2
1.1 目的: 2
1.2 要求: 2
二、题目说明 2
2.1程序开发背景 2
2.2开发工具介绍 2
三、总体设计 3
四、详细说明 3
4.1 系统实施 3
五、遇到的问题和解决方法 8
六、课程设计总结 8
七、参考文献 9
一、课程设计的目的与要求
1.1 目的:
(1)能够利用所学的基本知识和技能,解释和应用程序开发所涉及的相关知识。
(2)基本掌握面向对象程序开发的基本思路和方法;
(3)要求学生达到熟练掌握.NET基本结构以及C#语言的基本知识和技能;
(while语句怎么退出4)通过学习积累掌握简单的记事本,通讯录以及多媒体播放的开发技术。
1.2 要求:
(1)掌握常用控件以及控件的常用属性的使用方法。
(2)掌握C#语言的异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮助的使用方法。
(3)熟悉.NET开发环境,能够使用C#语言在.NET平台上独立设计、开发WINDOWS应用程序。
(4)程序中应有不少于100~300行的自行编写的代码,代码需书写详细注释。
(5)程序中应有不少于100~300行的自行编写的代码,代码需书写详细注释。
二、题目说明
2.1程序开发背景
黑杰克又名 BlackJack(简称21点) ,起源于法国,现已流传到世界各地。该游戏由 2 到 6 个人玩,使用除大小王之外的 52 张牌,游戏者的目标是使手中的牌的点数之和不超过 21 点且尽量大。 有着悠久的历史。黑杰克简称为21点,1700年左右法国就有这种21点的纸牌游戏。1931年,当美国内华达州宣布赌博为合法活动时,21点游戏第一次公开出现在内华
达州的俱乐部,15年内,它取代掷骰子游戏,而一举成为非常流行的庄家参与的赌博游戏。
21点本为赌博游戏,并不值得推荐,但其游戏性和娱乐性却很强,而且作为一款数字牌类游
能 一定程度上锻炼逻辑思维和运算能力,本着这种想法,开发者想把这款传统的赌博游戏制作成适合各类人休闲娱乐的小游戏,同时通过实践更加掌握c#平台的开发过程
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属性显示最终结果。
四、详细说明
4.1 系统实施
总体概述“21点小游戏
1. 功能简介:本软件为21点小游戏,主要实现玩家跟电脑且以电脑为庄家的游戏实现,玩家可以通过新游戏和退出菜单开始和关闭游戏,通过“发牌”“要牌”“开牌”“洗牌”“结束”等按钮操作游戏
2.游戏界面截图
图1. 游戏主界面
3.21点小游戏关键代码和描述:
(1)menuStrip菜单中的“新游戏”和“退出”选项:
图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 = 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)“发牌”和“加牌”按钮的实现,也是主要功能之一:
v
图3. 发牌加牌按钮
用0~53分别代表扑克牌的54张牌面,通过使用Random类的.Next方法随机生成0~53的伪
随机数,每个数字分别代表相应的一张扑克牌,使用 (随机数 % 3 +1)的方法算出牌面对应点数,大于10点的转为10点;另外定义一个变量ii,作为当前生成的牌是第几张的标识,配合switch选择语句识别当前所发的牌,并做出相关的新牌生成,重复牌判断和点数累计,21点黑杰克判断以及是否爆点判断
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;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论