Ich habe bereits einen beweglichen Korb und eine Kollisionserkennung programmiert, aber es fällt mir schwer, meine Eier einzeln zu drucken. Ich bin neu, objektorientierte Programmierung, und ich finde es schwierig, Klassen im Gegensatz zu normalen Funktionen zu manipulieren. Was ich gerne geschehen würde, ist, dass meine Eier eins nach dem anderen fallen, anstatt sie ganz fallen zu lassen. Side Note: Ich möchte einen Puffer zwischen den Ei-Spawns hinzufügen. Wie mache ich das möglich?Wie erstelle ich fallende Eier für mein Ei-Catcher-Spiel? Neu bei der objektorientierten Programmierung 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;
}
Vielen Dank, wenn die in Tandem mit dem Code verwendete oben nahtlos funktioniert, aber wenn ich es implementiere in meinem ursprünglichen Code, dh eine, die einen Korb hin und her geht, ein Tor und Leben prallt, es scheint völlig durcheinander zu sein. Ich weiß, dass dies viel verlangt, aber würde es Ihnen helfen, mir zu helfen, wenn ich meinen vollständigen Code gepostet hätte? Ich habe mich davor gescheut, da dies für die erfahreneren Programmierer Kopfschmerzen bereiten könnte. – Clueless
Post es, ich werde es mir ansehen. (wahrscheinlich morgen) –