Holey_yan

20150514_KUAS_VisualC++_Exam09_Answer

May 15th, 2015
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.38 KB | None | 0 0
  1. /***************************************/
  2. /** 20150514 Exam 09 (Answer)         **/
  3. /** Maker  : Yan                      **/
  4. /** E-Mail : [email protected] **/
  5. /** Date   : 2015/05/14 am.11:30      **/
  6. /***************************************/
  7.  
  8. #include <iostream>
  9. #include <cstdlib>
  10. #include <ctime>
  11. #include <windows.h>
  12. using namespace std;
  13.  
  14. #define MAXCAP 100
  15. #define MAXRABBIT 10
  16. #define MAXLENGTH 1000
  17. #define PERLEN 20
  18.  
  19. class Animal{
  20. private:
  21.     char name [10];
  22.     int HP;
  23.     int attack;
  24.     int defense;
  25.     static int counter;
  26. public:
  27.     Animal(char *str, int myhp, int myatt, int mydef) {
  28.         strcpy (name, str);
  29.         HP = myhp;
  30.         attack = myatt;
  31.         defense = mydef;
  32.         counter++;
  33.     }
  34.     static int getcounter() {return counter;}
  35.     int getattack() {return attack;}
  36.     int getdefense() {return defense;}
  37.     int getHP() {return HP;}
  38.     char *getname() {return name;}
  39.     void injured (int points) {HP -= points;}
  40.     bool isdead() {return (HP <= 0 ? true : false);}
  41.     void fightwith (Animal &pk) {
  42.         int result = rand() % attack - rand() % pk.getdefense();
  43.         if (result > 0) {
  44.             pk.injured (result);
  45.             cout << name << "使出必殺絕技攻向 " << pk.getname() << "造成" << pk.getname() << result << "點損失, " << endl;
  46.             if (pk.isdead()) {
  47.                 return;
  48.             } else{
  49.                 cout << pk.getname() << "剩下 " << pk.getHP() << endl;
  50.             }
  51.         } else{
  52.             cout << pk.getname() << "使出無敵防衛,因此沒有造成任何傷害" << endl;
  53.         }
  54.     }
  55.     ~Animal() {counter--;}
  56. };
  57.  
  58. int Animal::counter = 0;
  59.  
  60. int main() {
  61.     srand(time(NULL));
  62.  
  63.     int numberOfMonster = 0;
  64.     printf("How many ? (Max 100) "); scanf("%d", &numberOfMonster);
  65.     Animal *monster [100];
  66.     char rname [11];
  67.     for (int i = 0; i < numberOfMonster; i++) {
  68.         sprintf (rname, "小兔兔%d號", i);
  69.         monster [i] = new Animal (rname, 100, 50, 10);
  70.     }
  71.  
  72.     cout << "現有" << Animal::getcounter() << "小動物" << endl;
  73.  
  74.     Animal tur ("小龜龜", 1000, 80, 50);
  75.  
  76.     int num = 0;
  77.     Animal *enemy;
  78.     while (!tur.isdead() && Animal::getcounter() > 1) {
  79.         enemy = monster [num];
  80.         enemy->fightwith (tur);
  81.         if (tur.isdead()) {
  82.             printf("Sorry, you dead.\n");
  83.             break;
  84.         } else{
  85.             tur.fightwith (*enemy);
  86.             if (enemy->isdead()) {
  87.                 delete monster [num];
  88.                 if (++num >= numberOfMonster) {
  89.                     printf("Congratulations !\n");
  90.                     break;
  91.                 } else{
  92.                     continue;
  93.                 }
  94.             }
  95.         }
  96.     }
  97.     system("pause");
  98.     return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment