zoukankan      html  css  js  c++  java
  • 圈猫游戏

    编写程序,每次按下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())=='
    ')
    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     }

    改正版1:改正是因为对指针数组不是很熟悉导致错误;

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

    改正2:

      1 #include <iostream>
      2 #include<cstdlib> //rand、srand
      3 #include<ctime>
      4 #include<string>
      5 using namespace std;
      6 
      7 class Cat
      8 {
      9 private:
     10     string skin;//肤色
     11     string eye;//眼睛颜色
     12     string  len;//毛长
     13     static int count;
     14 public:
     15     Cat();//缺省构造函数,因为值随机不能传入参数
     16 
     17     //get
     18     string GetSkin();
     19     string GetEye();
     20     string GetLen();
     21     //set
     22     void SetSkin();//毛长、肤色、眼睛颜色是随机值,因而无参数
     23     void SetEye();
     24     void SetLen();
     25 
     26     //print
     27     void Print();
     28 };
     29 
     30 int Cat::count = 0;
     31 //没有初始化静态数据成员
     32 //构造函数初始化;
     33 Cat::Cat()
     34 {
     35     SetSkin();
     36     SetEye();
     37     SetLen();
     38 }
     39 //set
     40 void Cat::SetSkin()
     41 {
     42     int color = rand() % 3;
     43 
     44     if (0 == color)
     45         skin ="";
     46     else if (1 == color)
     47         skin ="";
     48     else
     49         skin = "";
     50 
     51 }
     52 
     53 
     54 void Cat::SetEye()
     55 {
     56     int color = rand() % 3;
     57 
     58     if (0 == color)
     59         eye = "绿";
     60     else if (1 == color)
     61         eye ="";
     62     else
     63         eye ="";
     64 }
     65 
     66 void Cat::SetLen()
     67 {
     68     int color = rand() % 2;
     69 
     70     if (0 == color)
     71         len = "";
     72     else
     73         len = "";
     74 }
     75 //get
     76 string Cat::GetSkin()
     77 {
     78     return skin;
     79 }
     80 string Cat::GetEye()
     81 {
     82     return eye;
     83 }
     84 string Cat::GetLen()
     85 {
     86     return len;
     87 }
     88 //print
     89 void Cat::Print() 
     90 {
     91 cout<<"一只"<<this->GetEye()<<""<<this->GetLen()<<""<<this->GetSkin()<<"色猫被放进了围栏"<<endl;
     92 }
     93 
     94 //check
     95 int Check( Cat *cats[], int numberofCats)
     96 {
     97     int grayCats = 0, brownCats = 0;
     98     int blueEyes = 0, brownEyes = 0, greenEyes = 0;
     99 
    100     for (int i = 0; i <numberofCats; i++)
    101     {
    102         if (cats[i]->GetSkin()=="")
    103             grayCats = grayCats + 1;
    104         else if (cats[i]->GetSkin() == "")
    105             brownCats++;
    106         else
    107         {
    108             if (cats[i]->GetEye()== "")
    109                 blueEyes++;
    110             else if (cats[i]->GetEye()== "")
    111                 brownEyes++;
    112             else
    113                 greenEyes++;
    114         }
    115     }
    116     //判断灰色猫是否和棕色猫打架
    117     if (grayCats>brownCats)
    118         cout << "灰色猫和棕色猫打架" << endl;
    119     else
    120         cout << "灰色猫和棕色猫不打架" << endl;
    121     if ((greenEyes >= 1 || blueEyes >= 1) && brownEyes)
    122         cout << "会打架" << endl;
    123     return 0;
    124 }
    125 
    126 int main()
    127 {
    128     Cat *cat[7] ;
    129     char key;
    130     int i = 0;
    131     srand(time(NULL));
    132     while (i<7 && (key = cin.get()) == '
    ')
    133     {
    134         *(cat+i) = new Cat;
    135         (*cat[i]).Print();
    136         i++;
    137     }
    138     Check(cat, i);
    139     delete *cat;
    140 }
  • 相关阅读:
    C++/C函数的调用规范
    Computer Science Conference Rankings 计算机科学会议排名 Rank
    Height of CComboBox's drop down list
    java instrument跟踪java freemarker调用过程
    Text to speech hello world sapi
    Visual Studio 插件 代码注释对齐
    #define WINVER 0x0501 之后菜单不显示图标了
    转 用NodeJS打造你的静态文件服务器
    代码注释对齐
    修复MSN上联系人全部显示脱机状态,删除缓存
  • 原文地址:https://www.cnblogs.com/lwflourish/p/4126819.html
Copyright © 2011-2022 走看看