1、 1 C+面向对象程序设计 课程设计报告课程设计报告 设计题目设计题目: 21 点游戏 专业专业班级:班级: 电子信息 0902 学生学生学号学号: 学生姓名学生姓名: 指导教师:指导教师: 2 一、一、 设计任务分析设计任务分析 1、21 点游戏介绍 21 点游戏是一个古老的扑克游戏,游戏的规则是:各个 参与者设法使自己的牌达 到总分 21 而不超过这个数值。扑克牌的分值取它们的面值,A 充当 1 或者 11 分,J,Q 和 K 人头牌都是 10 分。 庄家 VS17 个玩家。在开局时,包括庄家在内的所有参与者都有两张牌。玩家可 以看到他们的所有牌以及总分,而庄家有一张牌暂时是隐藏的。接下来
2、,只要愿意,各 个玩家都有机会依次再拿一张牌。 如果是玩家的总分超过了 21(称为引爆), 那么这个玩 家就输了。在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。只要庄家的总分等于 或小于 16,那么他就必须再拿牌。如果庄家引爆了,那么还没有引爆的所有玩家都将 获胜,引爆的玩家打成平局。否则,将余下的各玩家的总分与庄家的总分做比较,如果 玩家的总分大于庄家的总分,则玩家获胜。如果二者的总分相同,则玩家与庄家打成平 局中。 2、实现以下功能: 1) 洗牌; 2) 发牌; 3) 隐藏或显示牌; 4) 计算总分; 5) 判断胜负。 3、界面显示要求: 多少人加人游戏? (17) :2 输入第 1 位
3、玩家的姓名:张三 输入第 2 位玩家的姓名:李四 游戏开始 庄家:隐藏梅花 7 张三:红桃 7 方块 J 总分值 17 李四:红桃 J 红桃 3 总分值 13 张三,你想再要一张牌吗( y , n ) ? n 李四,你想再要一张牌吗( y , n ) ? y 李四:红桃 J 红桃 3 梅花 10 总分值 23 李四引爆!庄家:方块 10 梅花 7 总分值 17 张三,唉,你打平局了! 李四,对不起,你输了! 你想再玩一次吗( y , n ) ? 3 二、二、 21 点点游戏流程游戏流程 N 给庄家发最初的 2 张牌 隐藏庄家的第一张牌和总分 向玩家发额外的 牌并显示牌和总分 显示庄家的牌 平局
4、 给玩家发最初的 2 张牌 并显示牌和总分 玩家需要额外 的牌? 庄家的总分 庄 家? 洗牌 N Y Y N Y Y N N 玩家引 爆? 玩家输 Y N 玩家输 玩家赢 Y 平局 4 三、三、 主要数据结构主要数据结构 扑克版结构体: typedef enum /扑克牌面值:扑克牌面值:ACE(A),TWO(2)TEN(10),JACK(J),QUEEN(Q),KING(K) ACE=1,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEE N,KING RankType; typedef enum /扑克牌花色:扑克牌花色:CLUBS(梅花梅花),DIAMONDS(方块方块),HEARTS(红桃红桃)和和 SPADES(黑黑 桃桃) CLUBS,DIAMONDS,HEARTS,SPADES SuitType; struct Ca