码迷,mamicode.com
首页 > 其他好文 > 详细

圈猫游戏

时间:2014-11-27 18:18:58      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   sp   for   数据   

编写程序,每次按下Enter键时,就将一只猫放在围栏里。已知一个围栏可以放7只猫。每只猫具有皮色(黑、灰、棕)、眼睛颜色(绿、蓝、棕)和毛长(长、短)三种属性。要求放进围栏的猫应被随机的附于属性值。对这些属性应提供对应的get和set方法。

将猫放进围栏里,某些组合会发生争斗。例如,灰色猫的数量如果超过棕色猫的数量,灰色猫会和棕色猫打架。如果围栏中有一只黑色棕眼猫,同时至少一只黑毛绿眼猫以及至少一只黑毛蓝眼猫,也会发生争斗,编写一个全局函数check(),确定猫之间是否会打架。

  1 #include <iostream>
  2 #include<cstdlib> //rand、srand
  3 #include<ctime>
  4 using namespace std;
  5 
  6 class Cat
  7 {
  8 private:
  9     char skin[10];//肤色
 10     char eye[10];//眼睛颜色
 11     char  len[10] ;//毛长
 12     static int count;
 13 public:
 14     Cat();//缺省构造函数,因为值随机不能传入参数
 15     
 16     //get
 17     char *GetSkin();
 18     char *GetEye();
 19     char *GetLen();
 20     //set
 21     void SetSkin();//毛长、肤色、眼睛颜色是随机值,因而无参数
 22     void SetEye();
 23     void SetLen();
 24     
 25     //print
 26     //void Print(Cat *cats);
 27 };
 28 
 29 int Cat::count =0;
 30 //没有初始化静态数据成员
 31 //构造函数初始化;
 32 Cat::Cat()
 33 {
 34 SetSkin();
 35 SetEye();
 36 SetLen();
 37 }
 38 //set
 39 void Cat::SetSkin()
 40 {
 41 int color = rand()%3;
 42 
 43 if (0 ==color)
 44     strcpy(skin,"");
 45 else if(1==color)
 46     strcpy(skin,"");
 47 else
 48     strcpy(skin,"");
 49 
 50 }
 51 
 52 
 53 void Cat::SetEye()
 54 {
 55 int color = rand()%3;
 56 
 57 if (0 ==color)
 58     strcpy(eye,"绿");
 59 else if(1==color)
 60     strcpy(eye,"");
 61 else
 62     strcpy(eye,"");
 63 }
 64 
 65 void Cat::SetLen()
 66 {
 67 int color = rand()%2;
 68 
 69 if (0 ==color)
 70     strcpy(len,"");
 71 else
 72     strcpy(len,"");
 73 }
 74 //get
 75 char  *Cat::GetSkin()
 76 {
 77 return skin;
 78 }
 79 char  *Cat::GetEye()
 80 {
 81 return eye;
 82 }
 83 char  *Cat::GetLen()
 84 {
 85 return len;
 86 }
 87 //print
 88 /*void Cat::Print(Cat *cats)
 89 {
 90     cout<<"一只"<<cats->GetEye()<<"眼"<<cats->GetLen()<<"毛"<<cats->GetSkin()<<"色猫被放进了围栏"<<endl;
 91 }*/
 92 
 93 //check
 94     int Check(Cat *cats[], int numberofCats)
 95     {
 96     int grayCats =0,brownCats =0;
 97     int blueEyes =0, brownEyes =0,greenEyes = 0;
 98 
 99     for(int i =0; i <numberofCats; i++)
100     {
101         if(strcmp(cats[i]->GetSkin(),""))
102             grayCats =grayCats+1;
103         else if (strcmp(cats[i]->GetSkin(),""))
104             brownCats++;
105         else 
106             {
107             if (strcmp(cats[i]->GetEye(),""))
108                 blueEyes++;
109             else if (strcmp(cats[i]->GetEye(),""))
110                 brownEyes++;
111             else
112                 greenEyes++;
113             }
114      //判断灰色猫是否和棕色猫打架
115         if(grayCats>brownCats)
116             cout<<"灰色猫和棕色猫打架"<<endl;
117         else
118             cout <<"灰色猫和棕色猫不打架"<<endl;
119         if((greenEyes>=1||blueEyes>=1)&&brownEyes)
120             cout <<"会打架"<<endl;
121     }
122     return 0;
123     }
124 
125     int main ()
126     {
127         Cat *cat[7]={NULL};
128         char key;
129         int i =0;
130         srand(time(NULL));
131         while(i<7&&(key=cin.get())==\n)
132         {
133             cat[i++] = new Cat();
134             cout<<"一只"<<cat[i++]->GetEye()<<""<<cat[i++]->GetLen()<<""<<cat[i++]->GetSkin()<<"色猫被放进了围栏"<<endl;
135         }
136         Check(cat,i);
137         delete *cat;
138     }

程序在编译时候没有问题,但是在调试过程中出现问题;请大神指教~

圈猫游戏

标签:style   blog   io   ar   color   os   sp   for   数据   

原文地址:http://www.cnblogs.com/lwflourish/p/4126819.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!