admin 管理员组

文章数量: 1086019


2024年4月30日发(作者:excel函数公式乘法四舍五入)

201 1年第9期 福建电脑 l5l 

基于VB2005的二十一点游戏设计 

陈伟康 

(汕尾职业技术学院广东汕尾516000) 

【摘 要】:参考现在市面流行的二十一点游戏,使用VB2005进行程序模拟设计,提高学生学习编写程 

序兴趣,加强自己的《面向对象程序设计》课程教学效果 

【关键词】:二十一点;vb2005;循环;随机 

1、设计背景与意义 

(叫暗牌)。大家手中扑克点数的计算是:K、Q、J和lO 

在2o世纪6o年代初期.达特茅斯学院的两位数 

牌都算作lO点。A牌既可算作l点也可算作ll 

学教授为了使他们的学生可以使用简单易学的语言 

点。由玩家自己决定。其余所有2至9牌均按其原面 

来处理复杂的程序设计项目,开发了BASIC语言。随 值计算。首先玩家开始要牌.如果玩家拿到的前两张牌 

着BASIC日益改进.可以进行结构化程序设计+从而 

是一张A和一张lO点牌,就拥有黑杰克(Blackjack): 

增强了程序的可靠性。Visual Basic 1.0是1991年 此时.如果庄家没有黑杰克.玩家就能赢得2倍的赌金 

Microsoft公司开发的一种BASIC版本.用以轻松直观 

(1赔2)。没有黑杰克的玩家可以继续拿牌,可以随意 

靠得越近越好,最好 

地开发Windows应用程序 Visual Basic 2005语言与 

要多少张。目的是尽量往21点靠,

Visual Basie 1.0相似.只不过功能更加强大。它针对的 就是2l点了。在要牌的过程中。如果所有的牌加起来 

是.NET运行库.该运行库是一种程序.执行Visual 超过21点,玩家就输了——叫爆掉(Bust),游戏也就结 

Basic 2oo5以及用针对,NET运行库的其他语言编写 束了。假如玩家没爆掉.又决定不再要牌了,这时庄家 

的程亭 这使得用Visual Basic编写的程序不仅可以 就把他的那张暗牌打开来。庄家根据自己的情况拿牌. 

在计算机上运行.还可以在其他设备上运行,例如手机 

般到i7点或17点以上不再拿牌.但也有可能l5到 

和手持设备。Visual Basic还包含各种面向对象的程序 

l6点甚至l2到l3点就不再拿牌或者l8到l9点继 

设计功能并且能开发Web服务 续拿牌。假如庄家爆掉了,那他就输了。假如他没爆掉, 

VB语言是软件设计道路上的一个里程碑 完全可 

那么你就与他比点数大小,大为赢。一样的点数为平 

视化的开发环境,事件驱动的编程机制使编程变的非 手.你可以把你的赌注拿回来 

常容易.很多程序员就是从VB语言走上编程这条路 

如果拿牌拿到手中有5张牌.并且总数不到2l 

的。vb.net是在.net环境下新一代的编程语言,vb.net对 点。那这种情况能压住一切牌型f当然5张加起来一共 

VB语言作了重大的改变。保留了原来VB语法简单. 2l点更好),但某些玩法中不支持此规则。 

容易学习。可视化开发等优点,又增加了面向对象.类 算法实现。是让程序能够随机产生一定数量的不 

型统一等新特点。无论是以前的VB程序员,还是刚开 重复数字.例如随机产生52个不重复的数,使用的数 

始学习编程的新手.都会发现vb.net是一种菲常容易 字替换法。使用数字来代替扑克牌图片。把52个数字 

掌握而且功能强大的编程语言。 

对应到52个扑克牌图片中去,每一次点击开始.系统 

由于教学的需要.我们高职高专院校的学生学习 

都会随机产生52个数达到随机洗牌效果。 

玩家结果比较使用一个计时器在一定的时间内自 

《面向对象程序设计课程》,使用到了vb2005程序设 

计.为了更好的让学生能够掌握.net编程运用,也是根 

动给出结果,还有是一种玩家点击看结果。使用数组分 

据我们学生的能力.我就设计了一个用vb2005编写的 男U代替玩家数,如果两个玩家就使用两个数组来代替. 

二十一点游戏模拟程序进行教学.在学习本程序前要 在比较两个数组中的数值来判断实现比较结果 

有一定的程序编写能力。因为这个程序是我综合面向 游戏的玩家可以自己选择.最多可以选择四个玩 

对象程序与我院学生的水平编写。其中运用了算法.控 家,最少两玩家,在游戏开始时,把随机产生的扑克牌 

件使用,图片处理等等技术。 按顺序发给玩家 

2、设计思路 

界面的实现,让学生自己使用有特色图片。尽量是 

现在流行的二十一点游戏玩法.二十一点一般用 有自己的制作的图片.发挥学生的图片处理能力.让学 

熟练掌握vb2005程序的应用。 

到l一8副牌。庄家给每个玩家发两张牌,牌面朝下;给 

生有兴趣编写程序,

自己发两张牌,一张牌面朝上( l{明牌),一张牌面朝下 

3、程序的实现 

f下转第169页1 

‘ 

2011年第9期 福建电脑 169 

在设备初始化工作完成之后.使用VIDIOCMCAP— 

pthread

_

t id; 

TURE把这些缓冲区放到采集队列里。然后调用VID— 

pthread

_

create(&id,NULL(void )mythread,NULL); 

IOCSYNC来同步VIDIOCMCAPTURE抓取到得数据。 

pthread

_

t用于声明线程ID。mythread邸为后台磁 

直到驱动抓取完成第一帧图像到缓冲区1.此时可以 

盘写入函数 

在读取缓冲区1的同时。使得缓冲区2又进入抓取状 

4、运行结果 

态 连续抓取的关键步骤在于合适的调用这两个ioctl, 

使用中兴zc301摄像头.程序运行平台mini2440. 

尽可能的提高抓取帧率。 1inux内核版本2.6.13,图像采集尺寸320*240。输出格 

V4L内部mmap机制会自动计算缓冲区中某帧数 式VIDEO_PALETrE

_

RGB24,图像制式NTSC。经过测 

据的偏移地址.虽然我们只映射了一次,驱动会使用一 

试,本程序在以上条件上采集帧率最高可以达到每秒 

个偏移值来存放新采集到的图像数据 同时把他们放 

3O一35帧。 

入采集队列 

5、结语 

3、使用多线程提高采集帧率 

通用usb摄像头价格低廉,方便易用。在我们的13 

由于硬盘等大容量存储设备相对于内存读写速度 

常生活中已经相当普及。使用本文提供的方法,通过普 

要低很多.图像数据在采集之后要进行持久化的存储 

通的usb摄像头来采集实时视频数据。在许多对视频 

必定要消耗大量时间。影响采集速度 通过启用多线程 质量要求不高的场合具有一定的实用价值 

的方式来保存采集到的图像数据可以大大提高采集速 

率。 

参考文献: 

在应用程序中使用多线程.使得在采集和同步某 

【1]{video41inux programming)Alan Cox,alan@redtmt.com 

帧数据的同时.程序可以在后台同时操作磁盘。保存上 

[21{Video4Linux Kernel API P.eference) 

帧采集到的图像 启用多线程的方法如下: 

[31,¥--I-Video4Linux的USB摄像头图像采集实现,戴小鼠 

【4】mini2440用户手册,2009-02-20 

(上接第151页) 

游戏系统功能结构,进入界面,游戏主界面。主界面 

vb2005程序设计的应用。 

菜单包括了发牌,玩家选择,李卜牌,结果,帮助,关于,退 

出功能。 

首先进入程序的一个启动界面.可以让学生进行 

扩展,让学生自己喜欢,设计出自己特色,主界面有,选 

择玩家的个数.背景音乐选择.游戏的使用说明与帮 

助.游戏的排行榜。直到玩家退出游戏,可以保存游戏 

积分。就会让玩家输入用户名,把本次的成绩保存,在 

排行榜里显示前十名的成绩。程序运行效果如图一所 

示。 

4、程序打包 

让学生反复调试无错误的情况下.使用VB2005程 

图1 

序自带的打包安装工具,进行打包。再让学生进行程序 

的安装与卸载测试.还有写出WORD文档的程序设计 

参考文献: 

说明书,上交为大作业。 

【l】靳广斌,(V ̄uM Basic 2005程序设计案例教程》:北京大学出 

5、最后总结 

版社.2008 

由于本人的水平有限。设计的程序还存在很多的 

[2]Microsoft《、,B。NET程序设计语言》,高等教育出版社,2004 

不足,没有把程序改成网络版.但是在今后的教学中不 

[3】孔长征,VB.NET编程实倒教程,北京希望电子出版社,2002 

断完善本程序。使二十一点游戏程序成为很好的程序 

[4]Y-晟,Visual Basic.NET数据库开发经典案旁4解析,清华大学 

毒版社.2005 

编写引导,提高学生学习编写程序兴趣.更好的掌握 


本文标签: 程序 玩家 学生