首页 > 代码库 > 圈猫游戏

圈猫游戏

编写程序,每次按下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             else112                 greenEyes++;113             }114      //判断灰色猫是否和棕色猫打架115         if(grayCats>brownCats)116             cout<<"灰色猫和棕色猫打架"<<endl;117         else118             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     }

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

圈猫游戏