首页 > 代码库 > 圈猫游戏
圈猫游戏
编写程序,每次按下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 }
程序在编译时候没有问题,但是在调试过程中出现问题;请大神指教~
圈猫游戏
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。