2016-04-12 6 views
0

私は既に移動バスケットのコード化と衝突検出を管理していますが、卵を一つずつ印刷することは困難です。私はオブジェクト指向のプログラミングに慣れていないので、通常の関数ではなくクラスを操作するのが難しいと思っています。私が起こそうとしていることは、完全に落ちるのではなく、卵を一つずつ落とすことです。 サイドノート:私は卵産卵の間にバッファーを追加したいと思います。それはどうしたらいいのですか?私の卵キャッチャーゲームのために落ちる卵を作る方法は?オブジェクト指向プログラミングの新機能C++

#define RIGHT 0 
#define LEFT 1 
#define number 10 
int isalive = 0; 
int score = 0; 
int lives = 0; 
int direction = 1; 

class GameObject 
{ 

public: 
    int x, y; 
    char symbol; 
    virtual void draw() = 0; 
}; 
class basket : public GameObject 
{ 

public: 
    basket(char symbol, int x, int y) 
    { 
     this->symbol = symbol; 
     this->x = x; 
     this->y = y; 
    } 
    void draw() 
    { 
     for (int z = 0; z < 5; z++) 
     { 
      gotoxy(x + z, y); 
      cout << symbol; 
     } 
    } 
    void movement() 
    { 
     if (_kbhit()) 
     { 
      char ch = _getch(); 
      switch (ch) 
      { 
      case 'a': 
       direction = RIGHT; 
       break; 
      case 'd': 
       direction = LEFT; 
       break; 
      } 
     } 

    } 
    void bounce() 
    { 
     switch (direction) 
     { 
     case RIGHT: x--; 
      break; 
     case LEFT: x++; 
      break; 
     } 
     if (x >= 75) 
     { 
      direction = RIGHT; 
     } 
     if (x <= 0) 
     { 
      direction = LEFT; 
     } 
    } 
}; 

class egg : public GameObject 
{ 
private: 

public:  
    int isalive; 
    egg(char symbol,int y) 
    { 
     this->symbol = symbol; 
     this->y = y; 

    } 
    ~egg(){} 
    void movement() 
    { 
     y++; 
     if (y > 23) 
     { 
     /*y = 0;*/ 
     lives = lives +1; 
     isalive = 0; 
    } 

} 
    void draw() 
    { 

     { 
     gotoxy(x, y); 
     cout << symbol; 
     gotoxy(0,2); 
     cout<<"Broken Eggs:"<<lives; 
     gotoxy(40,2); 
     cout<<"Score:"<<score; 
     } 
    } 
    void checkcollison(basket *basket) 
    { 

    if (x == basket->x && y == basket->y) 
     { 
      y = 0; 
      score += 50; 
      isalive = 0; 

     } 
    } 

}; 


int main() 
{ 

    basket *f[4]; 
    egg *eggs[number]; 
     for (int z = 0; z < 4; z++) 
     { 
     f[z]= new basket('X', 38+z, 23); 

     } 
     for(int y = 0; y<number; y++) 
     { 
      eggs[y] = new egg('0',0); 
     } 

      while (true) 
     { 
      clrscr(); 

      for (int z = 0; z < number;z++) 
      { 
       if (eggs[z]->isalive ==0) 
       { 
        eggs[z]->x = rand() %40+20; 
        eggs[z]->isalive = 1; 
        } 
       if(eggs[z]->isalive !=0) 
       { 
        eggs[z]->draw(); 
        eggs[z]->movement(); 
       } 

      } 

      for (int z = 0; z != 4; z++) 
      { 
       f[z]-> draw(); 
       if(kbhit())f[z]->movement(); 
       f[z]->bounce(); 
      } 

     Sleep(100); 
     } 
     return 0; 
} 

答えて

0

卵1個を移動すると、for-loopを壊すことができます。 その場合、卵が動いたら、100msの間スリープ状態になります。

例えば、

for (int z = 0; z < number;z++) 
{ 
    if (eggs[z]->isalive ==0) 
    { 
     eggs[z]->x = rand() %40+20; 
     eggs[z]->isalive = 1; 
    } 
    if(eggs[z]->isalive !=0) 
    { 
     eggs[z]->draw(); 
     eggs[z]->movement(); 
     break; 
    } 
} 
+0

は、それがシームレスに動作上方に設けられたコードと連携して使用する場合、私は私の元のコード、前後に跳ねるバスケットを含み、すなわち1でそれを実装行うときに、しかし、得点と生活、どうもありがとうございました、それは完全に台無しに見える。これは多くのことを尋ねているかもしれませんが、私が完全なコードを投稿した場合は助けてくれますか?私は経験豊富なプログラマーの頭痛を訴えるかもしれないので、もともとこれを離れてしまった。 – Clueless

+0

投稿、私はそれを見てみましょう。 (明日はおそらく) –

関連する問題