ImageVerifierCode 换一换
格式:DOCX , 页数:3 ,大小:18.34KB ,
资源ID:915349      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/915349.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JAVA课程设计21点扑克牌.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JAVA课程设计21点扑克牌.docx

1、JAVA课程设计21点扑克牌JAVA课程设计21点扑克牌通信专业课程设计一 太原科技大学 课 程 设 计 设计(论文)题目:基于JAVA的21点扑克牌 姓名 学号 班级 学院 指导教师 2011年 12 月 23日 太原科技大学课程设计任务书 学院:时间: 2011年 月 日 学 生 姓 名 设计题目 指 导 教 师 基于JAVA的21点扑克牌游戏设计 语言的初级编程。 主要研 究内容 语言的21点扑克牌的编程及设计。 平台软件eclipse的使用。 研究方法 使用软件eclipse对21点游戏进行编程,设计游戏算法,实现游戏功能。 主要技术指标(或研究目标)1. 21点游戏的基本功能的实现。

2、 2. 程序中胜负的判别方法。 3. 递归法的理解与使用。 教研室意见 教研室签字: 年月日邸伟:基于JAVA的21点设计 目 录 第一章 绪论 . - 4 - JAVA工作平台的简介 . - 4 - 本次设计的主要内容 . - 4 - 第二章 设计任务的分析 . - 5 -二十一点游戏介绍 . - 5 -实现以下功能: . - 5 - 第四章 程序的图形结果及分析 . - 10 - 第五章 小结 . - 16 - 邸伟:基于JAVA的21点设计 第三章 本次设计的重点及难点 向玩家发额外的 牌并显示牌和总分向电脑发额外的 牌并显示牌和总分玩家引 爆? Y N 玩家赢 平局 - 6 - 玩家输

3、 洗牌 给玩家发最初的三张牌,并显示出来 给电脑发最初的三张牌 并显示牌和总分 Y 玩家需要额外的牌? N 显示电脑的牌 Y 电脑需要额外的牌? N Y 电脑引爆? N Y N 玩家引爆? 玩家总分电脑? 玩家赢 玩家输 图 21点流程图 邸伟:基于JAVA的21点设计 游戏胜负的判别方法: 本方法考虑了鬼牌的因素,于所用到的扑克牌为54张,将他们存放在数组,且通过数组的下标来保证牌的唯一。于数组中的计数方式是从0开始的,所以第0-12号为13张1组牌,12-25号为下一组.以此类推,共4组到51号牌,所以第52号和53号及为鬼牌,且他们的作用是一样的。 int judge(int a,int

4、 b,int num)/判断电脑和玩家谁的点数更接近21,如果有鬼牌就另行判断 int sum_a=0,sum_b=0; boolean joker_a=false,joker_b=false; for(int i=0;i if(ai=14|ai=15)joker_a=true; else sum_a+=ai; if(bi=14|bi=15)joker_b=true; else sum_b+=bi; if(joker_a)if(sum_a if(joker_b)if(sum_b if(sum_a21&sum_b21)return 1; if(sum_a-21) else if(sum_a-21

5、)=(sum_b-21)return 0; else /if(sum_a-21)(sum_b-21)return -1; if(judge(human,computer,n)=1)(你赢了! else if(judge(human,computer,n)=0)(平局!else if(judge(human,computer,n)=-1)(你输了! (- 7 - 邸伟:基于JAVA的21点设计 当玩家抽到鬼牌时,鬼牌可以顶替1-13任意大小的牌,抽到鬼牌时的判别方法为,鬼牌存在,并且其余牌总和小于8,那么现在加上13就是总和,如果除了鬼牌其余牌大于8小于21,那么总和就是21,电脑和人判断方法一

6、样。最后判断大小,通过返回1,0,-1,分别表示人赢,平局,电脑赢;如:人的大于21并且电脑小于等于21,则返回-1,那么电脑赢,否则返回1,即表示人嬴;当人和电脑的牌都大于21时,通过将人和电脑的牌都减去21取绝对值的方法,然后比较得到的值,如果人得到的值小则返回 1,即人赢;相等则返回0,即平局;电脑的值小则返回-1,即电脑赢。 递归法的使用: 本方法为了避免牌的重复而使用了递归法,其中的程序为: int nextOne()/用递归确保返回的牌没有重复 int n=(int)()*54);/通过随机的方法产生数 if(cardsn=0)/如果产生的那个数字曾经没有用过那么就用,否则重新产生

7、 cardsn=1;/用过的赋值为1 if(n=52)/如果n的值为52 return 14;/返回的值为14 else if(n=53)/如果n的值为53 return 15;/返回的值为15 else return n_+1;/这个数对13取模然后加1就是产生的牌 else return nextOne();/重新随机产生 所有牌的被定义在包含54个元素,且所有元素为0的数组中,即所有的牌的都通过数组的下标n表示,且在数组中代表的元素被赋值为0,当这张牌被使用时,通过元素的下标,将此位置的元素从0改为1。在调用本方法时,首先 通过方法int n=(int)()*54)获得元素的下标n,然后

8、通过if(cardsn=0)判断,如果该位置的元素为0,则这个n代表的牌没有使用过的的,将它在数组所指的牌从0赋值为1后,将这个牌的下标取模后返回;否则,这张牌是被使用过的, 通过 return nextOne(); 返回到本方法的开始位置,重新执行一遍本方法,直到随机出的n所代表的牌,没有被使用过的牌 ,然后将n代表的牌返回后跳出本方法,继续程序的运行。- 8 - 邸伟:基于JAVA的21点设计 表 程序中方法和类的说明 类名 Play21 Play21 Play21 Play21 Play21 Play21 Test 方法名 Start() Clear() Show() Ask() Nex

9、tone() Judge() Main() 始游戏 描述 游戏开始 数组清零开始计数 显示玩家或电脑的牌 询问玩家或电脑是否要牌 通过迭代的方式获得牌 对比玩家和电脑的牌的大小 程序的入口方法,通过这里开 - 9 - 邸伟:基于JAVA的21点设计 第四章 程序的图形结果及分析 程序分析 本程序没有采用传统的21点的52张牌的规则,而是采用了54张牌全用的方法,大小鬼牌也带了进去,但鬼牌可以表示1-13的任意大小具体情况可有玩家自己决定,当玩家手里牌的总分小于等于8时,若抽到鬼牌可以顶替13,当玩家手中的牌大于8时,鬼牌可以成为任意一个,并且大小鬼牌作用相同。在游戏中为了防止抽到重复的牌而采用

10、了将牌存放在数组中,把没用过的牌在数组中赋值为0.用过的牌赋值为1,且通过递归方法来更好的避免了牌的重复。即所有牌的被定义在包含54个元素,且所有元素为0的数组中,即所有的牌的都通过数组的下标n表示,且在数组中代表的元素被赋值为0,当这张牌被使用时,通过元素的下标,将此位置的元素从0改为1。在调用本方法时,首先 通过方法int n=(int)()*54)获得元素的下标n,然后通过if(cardsn=0)判断,如果该位置的元素为0,则这个n代表的牌没有使用过的的,将它在数组所指的牌从0赋值为1后,将这个牌的下标取模后返回;否则,这张牌是被使用过的, 通过 return nextOne(); 返回

11、到本方法的开始位置,重新执行一遍本方法,直到随机出的n所代表的牌,没有被使用过的牌 ,然后将n代表的牌返回后跳出本方法,继续程序的运行。本程序也运用了比较简单的数组结构。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。一个数组中的所有元素具有相同的数据类型。当然,当数据类型为 Variant 时,各个元素能够包含不同种类的数据

12、。 10 - -邸伟:基于JAVA的21点设计 图 程序运行结果 图 程序运行结果 11 - -邸伟:基于JAVA的21点设计 程序中的部分注释: 1. public void start()/开始游戏 ( (开始游戏! int n=3; for(int i=0;icomputeri=nextOne(); humani=nextOne(); while(n show(human,n,1);/显示现在玩家的牌面 if(ask(human,n) /如果玩家要牌 computern=nextOne();/电脑获得一张牌humann=nextOne();/玩家获得一张牌n+;/n的值自动加1 else

13、 break;/如果不选择加牌则跳出本循环 12 - -邸伟:基于JAVA的21点设计 2. int nextOne()/用递归确保返回的牌没有重复 int n=(int)()*54);/通过随机的方法产生数 if(cardsn=0)/如果产生的那个数字曾经没有用过那么就用,否则重新产生 cardsn=1;/用过的赋值为1 if(n=52)/如果n的值为52 return 14;/返回的值为14 else if(n=53)/如果n的值为53 return 15;/返回的值为15 else return n_+1;/这个数对13取模然后加1就是产生的牌,正常情况下,除13后剩下的牌就是牌的值 但数组是从0开始计数的 所以加1 0-12为13张1组牌,12-25下一组. 以此类推,共4组到51号牌 else return nextOne();/重新随机产生 13 - -邸伟:基于JAVA的21点设计 3. int judge(int a,int b,int num)/判断电脑和玩家谁的点数更接近21,如果有鬼牌就另行判断 int sum_a=0,sum_b=0;/设置两个变量为了计数 boolean joker_a=false,joker_b=fals

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1