21点扑克牌游戏_第1页
21点扑克牌游戏_第2页
21点扑克牌游戏_第3页
21点扑克牌游戏_第4页
21点扑克牌游戏_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VC 课程设计报告 课题名称 21 点扑克牌游戏 单位 动力工程学院 2005 级 学号 0508190111 姓名 田 骏 指导教师 张 薇 一 程序功能简介 这是一个 21 点的扑克牌游戏 玩家一共可以要 5 张牌 如 果牌的点数超过 21 点则输了 自动出局 在不超过 21 点的情 况下 玩家与庄家比牌的点数大小 大者赢 根据玩家的级别 高低 分为 普通玩家 高级玩家 超级玩家 不同玩家 在游戏中的规则有所不同 二 程序设计思想 1 类的封装 根据程序设计要求 把程序中的函数与数 据 装到一个类中 因此 定义了类 class Ccard 并定义 两个构造函数 其中一个为缺省的构造函数 2 对输入密码是否正确的判断 在判断 高级玩家 超级玩家 的成员函数 hplayer splayer 中利用字 符串函数中的 strcmp char1 char2 判断密码的正确性 其中 char1 为玩家通过成员函数 keyword 输入的密码 char2 为设定的密码 当 strcmp 返回值为 0 时 char1 与 char2 完全以致 hplayer splayer 返回值 1 当 strcmp 返回值为 1 时 char1 与 char2 完全以致 hplayer splayer 返回值 0 3 对 高级玩家 设计 程序设计要求 高级玩家 在要 牌时点数不会超过 21 点 设计了友元函数 Hplayerhit CCard 平局数 进行操作 8 主函数设计思想 程序开始运行 首先建立两个对象 cpu 庄家 player 玩家 并判断玩家是否要开始游 戏 在一局游戏结束后通过 do while 语句判断玩家是否 继续玩牌 开始游戏后 通过 playerFirstplaytwo cpuFirstplaytwo 为玩家与庄家分别发两张牌 do while 语句判断玩家是否要牌 是否有资格要牌 在 do while 语句段中利用 if else if 语句判断玩家的级别 根据不同 级别 player 调用不同函数进行要牌 通过 cpu 调用 Cpuhit 完成庄家的要牌 之后程序从 do while 程序段 跳出 调用 results cpu player 进行本局游戏胜负的判断 如果玩家不再继续游戏 player 调用 print 输出游戏结 果 三 序中主要数据与函数列表 主要数据 int nDollar 有多少钱 int nWin 赢局数 int nLose 输局数 int nDraw 平局数 double nTotal 总的牌点数 int nGamble 赌注资金 int playerturns 玩家牌的张数 int cputurns 庄家牌的张数 char str 10 输入的密码存入该字符串 主要函数 CCard int money 构造函数 CCard 缺省构造函数 int random int hi int lo 取两参数之间的随即数 用于随即产生牌点 void rules 规则输出 void BET 接受玩家第一次下注 void Addbet 接受玩家增加赌注 void playerFirstplaytwo 为玩家发头两张牌 void cpuFirstplaytwo 为庄家发头两张牌 void keyword 输入密码程序 void hit 普通玩家要一张牌 void print 输出最后结果 void replay 询问是否再玩一局 int hplayer 判断高级玩家 int splayer 判断超级玩家 int Playerturns 计算玩家牌的张数 void Cpuhit 庄家要牌 friend void results CCard 有多少钱 int nWin 赢局数 int nLose 输局数 int nDraw 平局数 double nTotal 牌的总点数 int nGamble 赌注资金 int playerturns 玩家牌的张数 int cputurns 庄家牌的张数 char ans1 char str 10 输入的密码存入该字符串 CCard int money int Draw int lose int win 构造函数 nDollar money nDraw Draw nLose lose nWin win CCard 虚构函数 int random int hi int lo 取两参数之间的随即数 int ran srand unsigned time NULL ran rand hi lo 1 lo lo return ran void wait int milli 暂停 milli 秒 clock t start start clock while clock start milli void pause 暂停 任按一键继续 cout endl cout 任按一键继续 endl getch int begin 开头设置 cout ans1 if ans1 y ans1 Y 检查输入是否为 Yes rules cout endl cout t t 你的赌本为 nDollar endl 起始赌本 pause 暂停 任按一键继续 return 1 else return 0 int DisplayInfo 有无赌本提示 system cls if nDollar 0 看看有无赌本 cout 对不起 你没赌本了 endl 若赌本输光 结束程序 return 0 return 1 void rules 规则输出 system cls cout endl cout endl cout 欢迎进入游戏 endl cout t t 规则如下 endl cout t t 你最多只能选五张牌 endl cout t t 大于 10 点牌按 0 5 点计算 endl cout t t 如果你输了就自动出局 endl cout t t 如果你胜出将赢得双倍赌注 endl cout t t 电脑将在 16 点后结束要牌 endl cout t t pause void BET 接受玩家第一次下注 system cls cout 开始游戏 go endl cout endl cout 你现在有 nDollar endl cout nGamble while nGamble nDollar cout 你的钱不够 请重新下注 nGamble nDollar nDollar nGamble cout 您一共下注 nGamble 您还有赌注 nDollar endl void Addbet 接受玩家增加赌注 int gamble cout ans1 if ans1 y ans1 Y cout 你现在的牌点总数 nTotal endl cout 你现在有赌注 nDollar gamble while gamble nDollar cout 你的钱不够 请重新下注 gamble nGamble nGamble gamble nDollar nDollar gamble cout 您一共下注 nGamble 您还有赌注 nDollar endl cout endl void playerFirstplaytwo 为玩家发头最初两张牌 double playercard1 playercard2 playerturns 2 playercard1 random 13 1 取得 13 与 1 之间的随即数 cout n t t tDEALING HAND 10 若牌面点数大于 10 按 10 计点数 playercard1 0 5 if playercard2 10 playercard2 0 5 nTotal playercard1 playercard2 玩家的两张牌的总点数 cout playercard1 cout playercard2 cout endl cout 现在你的牌面的总点数是 nTotal 10 cpucard1 0 5 if cpucard2 10 cpucard2 0 5 nTotal cpucard1 cpucard2 计算机的两张牌的总点数 cout endl cout cpucard1 endl cout 计算机有一张 cpucard1 显示 endl 计算机隐藏一张牌面 cout endl void keyword 输入密码程序 char ch int i 0 cout 输入密码 以空格键结束 注意 您只有一次输入密码的机会 endl cout flush ch getch while ch H str i ch cout 10 card 0 5 nTotal nTotal card 牌点总数 cout 下张牌面是 card endl 输出牌面 cout 总的牌面是 nTotal endl 输出总点数 cout endl void print 输出最后结果 cout endl cout endl cout endl cout 您的游戏纪录 endl cout t 赢的次数 nWin endl cout t 输的次数 nLose endl cout t 平局的次数 nDraw endl cout t 你的赌本 nDollar endl void replay 询问是否再玩一局 cout endl cout ans1 int hplayer 判断高级玩家 char key 10 123 cout ans1 if ans1 y ans1 Y keyword if strcmp str key 0 return 1 cout 错误密码 endl return 0 int splayer 判断超级玩家 char key 10 345 cout ans1 if ans1 y ans1 Y keyword if strcmp str key 0 return 1 cout 错误密码 endl return 0 int Playerturns 计算玩家牌的张数 playerturns 如果玩家要牌 cout 你要了 playerturns 张牌 endl cout 5 玩家手中的牌数增加一张 cout 你手中不能超过 5 张牌 endl 若超过 则不能继续发牌 wait 500 return 0 return 1 void Cpuhit 庄家要牌 for nTotal 16 cputurns 计算机开始要牌的条件 wait 200 cout endl cout 计算机要了一张牌 10 card 0 5 cout endl cout 现在计算机的总牌点为 a nTotal endl cout 您的总牌点为 b nTotal endl cout 下张牌面是 card endl cout card if card 10 card 0 5 cout endl cout 您要的牌为 card endl b nTotal b nTotal card 牌点总数 cout 总的牌面是 b nTotal endl 输出总点数 cout endl void Hplayerhit CCard if b nTotal card 21 cout 下张牌面是 card endl b nTotal b nTotal card 牌点总数 cout 总的牌面是 b nTotal endl 输出总点数 cout endl void results CCard b nLose else if a nTotal b nTotal 玩家赢了 cout 21 计算机超过了 21 点 cout t t t 计算机输了 endl if b nTotal 21 cout b nTotal 计算机赢了 cout t t t 很遗憾 你输了 endl b nLose int main CCard cpu CCard player 100 0 0 0 char ans system cls 执行系统命令 清屏 if player begin 0 do system cls player DisplayInfo player BET 下注的程序 player playerFirstplaytwo 为玩家发两张牌 cpu wait 150 cpu cpuFirstplaytwo 为玩家发两张牌 do player Addbet cout ans if ans h ans H if player splayer 0 else if player playerturns 6 询问是否继续要牌 cpu Cpuhit cout endl cout 计算机要了 cpu cputurns 张牌 总牌点 cpu nTotal endl cout 您要了 player playerturns 张牌 总牌点 player nTotal endl results cpu player 判断输赢 player replay while player ans1 Y player ans1 y 询 问是否继续要玩牌 player print 游戏结束 输出结果 cout endl cout endl cout 再见 欢迎您再次来体验疯狂 21 endl cout t t t t return 0 五 程序设计心得体会 首先我觉得通过自己的努力 完成这次的课

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论