设为首页 加入收藏

TOP

简单C++程序—掷骰子(一)
2014-04-06 17:42:03 来源: 作者: 【 】 浏览:725
Tags:简单 程序 骰子

  看到一位同学发布的博文,模拟了掷骰子。很好的题目,初学编程,就可以这样,找到一个很小,很好玩的需求去完成,这是未来做大项目的"引子".

  他用代码实现了需求,这是最重要的。

  我也按捺不住,给一个新的版本。目前,同学们习惯了面向过程的思维,只管着让程序按照流程做完事即可,对面向对象程序的结构还没有感觉。类的封装,该如何体现?函数的接口,怎样才算简洁?这些问题,用讲的方式起个头可以,更重要的是,在用的过程中得到领悟。

  学生的程序是:

  #include <iostream>

  #include <cstdlib>

  #include <ctime>

  using namespace std;

  class shaizi

  {

  public:

  void yaodian();

  private:

  int a;

  };

  int main()

  {

  cout 《 "摇出的点数" 《 endl;

  shaizi s1;

  s1.yaodian();

  return 0;

  }

  void shaizi::yaodian()

  {

  int x;

  srand(time(0));

  x=rand()%5+1;

  a=x;

  cout《a;

  }

  我改写的程序是:

  #include <iostream>

  #include <cstdlib>

  #include <ctime>

  using namespace std;

  class shaizi

  {

  public:

  int getdian();

  private:

  int dian;

  };

  int main()

  {

  shaizi s1;

  cout 《 "摇出的点数" 《s1.getdian()《endl;

  return 0;

  }

  int shaizi::getdian()

  {

  srand(time(0));

  dian=rand()%6+1;

  return dian;

  }

  这个程序的结构要好一些。输出的工作交给main,对象s1只管提供数就行了。

  一个很简单的要求,输入输出尽可能交给测试函数,类只做围绕数据的处理工作。除非实在必要,不要在成员函数中用cin和cout.

  学习了后面的构造函数,这个简单程序还可以别的改造。

  再写了一个好玩的,希望用常量定下局数后,能够多轮决输赢。例如,下面的程序,想9局5胜。

  #include <iostream>

  #include <cstdlib>

  #include <ctime>

  using namespace std;

  class shaizi

  {

  public:

  void setdian();

  int getdian();

  private:

  int dian;

  };

  const int round=9;   //round必须置一个奇数

  int main()

  {

  shaizi s1,s2;

  int i=1,n1=0,n2=0;

  while(i<=round)

  {

  s1.setdian();

  s2.setdian();

  cout《"第"《i《"轮: 甲 "《s1.getdian()《",乙: "《s2.getdian();

  if(s1.getdian()>s2.getdian())

  n1++;

  else if (s2.getdian()>s1.getdian())

  n2++;

  else

  {

  cout《",平局重掷 ";

  continue;

  }

  i++;

  cout《endl;

  if(n1==(round/2+1)||n2==(round/2+1))

  break;

  }

     

首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言结构体相关函数 指针 下一篇C语言五子棋胜负判定算法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: