Java实训》设计报告
纸牌游戏黑杰克
专业:
软件技术
班级:
09-23班                                                   
学号:
090123012
姓名:
姜企家
石家庄科技信息职业学院
信息工程系
20111015
项目简介
项目名称
纸牌游戏黑杰克
开发人员
姜企家
项目简介
该项目是一款控制台小游戏。
项目目的
开发一款人们日常生活中可以作为休闲用的游戏,为人们的休闲时间提供一种休闲游戏。丰富我们的日常生活。
主要技术
Java编程语言
JDK 1.6,Eclipse
操作简单,好玩好用
占用计算机空间小,运行速度快。
对用户手中牌的大小,AI手中的牌的大小,比较大小,涉及 21点游戏的独特计分方式。
随机数的处理
编写算法
异常处理
纸牌游戏黑杰克
一、项目需求
黑杰克简称为21点,1700年左右法国就有这种21点的纸牌游戏该游戏由 2 到 6 个人玩,使用除大小王之外的52 张牌,游戏者的目标是使手中的牌的点数之和不超过 21 点且尽量大。 有着悠久的历史。
发牌:一开始给每个玩家发一张牌,这张牌是底牌,只有玩家自己知道是什么,然后只发给要牌的玩家。如果所有玩家都不再要牌,则开牌计分。
计分:210都是按牌面计算点数,直接累加。JQK10点计算,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小时内删除。