《Java实训》设计报告
纸牌游戏黑杰克
专业: | 软件技术 |
班级: | 09-23班 |
学号: | 090123012 |
姓名: | 姜企家 |
石家庄科技信息职业学院
信息工程系
2011年10月15日
项目简介 | |||||
项目名称 | 纸牌游戏黑杰克 | 开发人员 | 姜企家 | ||
项目简介 | 该项目是一款控制台小游戏。 | ||||
项目目的 | 开发一款人们日常生活中可以作为休闲用的游戏,为人们的休闲时间提供一种休闲游戏。丰富我们的日常生活。 | ||||
主要技术 | Java编程语言 | ||||
开 发 环 境 | JDK 1.6,Eclipse | ||||
项 目 特 点 | 操作简单,好玩好用。 占用计算机空间小,运行速度快。 | ||||
技 术 重 点 | 对用户手中牌的大小,AI手中的牌的大小,比较大小,涉及 21点游戏的独特计分方式。 | ||||
技 术 难 点 | 随机数的处理 编写算法 异常处理 | ||||
纸牌游戏黑杰克
一、项目需求
黑杰克简称为21点,1700年左右法国就有这种21点的纸牌游戏。该游戏由 2 到 6 个人玩,使用除大小王之外的52 张牌,游戏者的目标是使手中的牌的点数之和不超过 21 点且尽量大。 有着悠久的历史。
发牌:一开始给每个玩家发一张牌,这张牌是底牌,只有玩家自己知道是什么,然后只发给要牌的玩家。如果所有玩家都不再要牌,则开牌计分。
计分:2到10都是按牌面计算点数,直接累加。J、Q、K按10点计算,A一般记作11点累加,此时如果点数大于21点则将A记作1点。
爆分:21点为最大点数值,如果玩家手中的牌点数大于21点,则属于爆分,玩家手中点数将归0,判定为输。
要牌:玩家在底牌之后可以继续要牌,知道点数满意或爆分为止。
下注:玩家在每局开局前可下注,定当前局输赢的钱数。
输赢:21点位最大点数,哪个玩家点数大,就哪个玩家赢。
二、项目设计
下面是5个Java源文件的总体设计。
(1)BlackJack.java(主类)
BlackJack 类负责创建主窗口,该类含有main方法,游戏从该类开始执行。BlackJack类有5种类型的对象,分别是:Dealer,Scanner,Player,Computer,Card,对象。
(2)Card.java
对于一张扑克牌来说,主要有牌面值及花,Card类用faces数组及suits数组分别存储所有牌面值及花,并提 供了getFace()方法及getSuit()方法获取一张扑克的 面值及花信息。
(3)CardsInHand.java
玩家手上的牌。
(4)Dealer.java
荷官的抽象只是实现了两个较核心的能力,一个是发牌,一个是 洗牌。发牌涉及到一个随机算法的问题,是比较重要的运算处理。
(5)Player.java
玩家类的抽象是非常明显的,完全模拟了现实中一个玩家的属性 及行为,属性有:赢次数、输次数、拥有现金数、手上的牌。
与相关的行为能力也相当完善,例如获取发牌、重开一局等等。
1、BlackJack 类(主类)
(1)数据和方法
构造方法输出菜单并完成所有方法调用。
1)成员变量
money 投注金额
yourChoice 用户选择入门的java游戏小程序
(2)代码
public void start() {
int money = 20;// 投注金额
int yourChoice;// 用户选择
System.out.println("请输入你要投注的金额(最小面值20):");
money = Int();
if (money < 20) {
System.out.println("您输入的金额过小,系统自动将投注金额设置为20");
money = 20;// 强制最小投注为20
}
System.out.println();
System.out.println("开始发牌。。。。。");
player.Card());
computer.Card());
do {
System.out.println("您得到的牌是:" + HandList());
System.out.println("您的选择:1.加倍;2.PASS;3.再要一张;4.开牌;5.退回上级菜单");
yourChoice = Int();
switch (yourChoice) {
case 1:
yourDouble(money);
break;
case 2:
yourPass(money);
break;
case 3:
getCardAgain();
break;
case 4:
winOrLose(money);
break;
case 5:
break;
default:
break;
}
} while (yourChoice != 5);
}
public void checkStore() {
System.out.println("您胜利了" + player.winNumber + "次");
System.out.println("您失败了" + player.loseNumber + "次");
System.out.println("您还有" + player.cash + "货币单位");
}
public static void main(String[] args) {
new BlackJack();
}
public void yourDouble(int money) {
money *= 2;// 投注金额加倍
// 判断输赢
winOrLose(money);
}
public int computePoint(Player player) {
int playerPoint = 0;
int numberOfA = 0;// 由于A的积分特殊,需要单独运算
for (int i = 0; i < Size(); i++) {
Card card = player.hand.cards[i];
if (Face().charAt(0) >= '2'
&& Face().charAt(0) <= '9') {
playerPoint += Integer.Face());
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论