CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

学习中,刚在网上找到一道题,不会做,请大家帮忙。

楼主qypyq(病静毒)2003-11-01 01:11:08 在 C/C++ / C语言 提问

掷两个骰子,计算朝上的面的点数和,如果第一次掷的点数是7或11,玩家获胜,如果第一次掷的结果是2、3、或12,庄家获胜。如果第一次掷的结果是4、5、6、8、9或10,那么这个和就是该玩家的“点数”,为了获胜,就必须继续掷骰子,直到玩家“掷出了点数”,在掷出点数之前,如果玩家掷出了7,那么玩家就输(庄家胜)。 问题点数:0、回复次数:2Top

1 楼fvv(守护者)回复于 2003-11-01 01:41:00 得分 0

//dicegame.h                           类声明头文件  
  #ifndef   DICEGAME_H  
  #define   DICEGAME_H  
  #include   <stdlib.h>  
  class   Dice  
  {       public:  
              Dice(){    
      point=rand()%6+1;}  
      int   point;  
  };  
  class   DiceGame  
  {  
  public:  
  DiceGame(int   n);         //构造函数  
  int   RollDice();                       //投骰子的函数  
  void   FirstGame();                 //第一次投后的处理函数  
  void   ContinueGame();         //继续投的处理函数  
  void   Play();                         //运行函数  
  void   ShowResult();             //显示最终结果的函数  
  private:  
  int   PlayNum;                       //投掷次数  
  int   WinPoint;                       //赢点  
  int   WinCount;                     //统计赢的次数  
  int   GameStatus;                   //记录输赢平的状态  
  };  
  #endif  
   
  //DiceGame.cpp             类成员函数的实现文件  
  #include   <iostream.h>  
  #include   <time.h>  
  #include   "dicegame.h"  
  DiceGame::DiceGame(int   n)     //构造函数,n是外界定的投掷次数  
  { time_t   tic=time(NULL);  
  srand(tic);                         //设置随几种子  
          PlayNum=n;                     //根据n   给PlayNum赋值  
          WinCount=0;                   //赢的次数必须初始化为零      
  WinPoint=0;              
  GameStatus=0;  
  }  
  int   DiceGame::RollDice()  
  { //投掷骰子的函数,所投的点数由函数返回  
  Dice   d1,d2;  
          return   d1.point+d2.point;  
  }  
  void   DiceGame::FirstGame()       //首次投的处理函数  
  {          
        int   sum=RollDice();                     //投两个骰子,获得点数  
        switch(sum)  
        {                                   //根据点数,决定赢,输,平    
        case   7:  
        case   11:     GameStatus=1;   break;     //赢  
        case   2:  
        case   3:  
        case   12:     GameStatus=2;   break;     //输  
        default   :   GameStatus=0;                 //平  
              WinPoint=sum;               //记录你的赢点  
  }  
  if(GameStatus==0)  
  ContinueGame();     //如果平,继续投,决出输赢  
  if(GameStatus==1)WinCount++;       //如果赢,赢的次数加一  
  }  
  void   DiceGame::ContinueGame()       //继续投的处理函数  
  {                   //如第一次投未分输赢,继续投,直到决出输赢  
      while(GameStatus==0)  
  {     int   sum=RollDice();                       //继续投  
  if(sum==WinPoint)GameStatus=1;     //根据点数决定输赢  
    else   if(sum==7)GameStatus=2;  
    }     //如平再继续投,直到决出输赢才退出循环  
  }  
  void   DiceGame::Play()                   //根据投掷次数进行游戏  
  { for(int   i=1;   i<=PlayNum;++i)  
                FirstGame();  
  }  
  void   DiceGame::ShowResult()             //显示结果的函数  
  { cout<<endl;  
  cout<<"总共投了"<<PlayNum<<"   次"<<endl;  
  cout<<"你赢了"<<WinCount<<"   次"<<endl;  
  cout<<"赢的百分比为:"<<100.0*WinCount/PlayNum<<"%"<<endl;  
  }  
  Top

2 楼Andy84920(你也不懂)回复于 2003-11-01 12:43:06 得分 0

没认真看.  
  不过楼上的态度很认真.  
  敬佩!Top

相关问题

  • 学习多线程,求一道题!
  • 学习问题~
  • 学习的问题
  • VC学习问题
  • c++builder与vc如何一道学习?????
  • 一道难题
  • 一道题!
  • 问一道题!
  • 一道SCJP题!!!!!!!!!!!!!!!
  • 一道SCJP题

关键词

  • 函数
  • 玩家
  • dicegame
  • gamestatus
  • rolldice
  • winpoint
  • 输赢
  • continuegame
  • playnum
  • wincount

得分解答快速导航

  • 帖主:qypyq

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo