动态添加对象
Add dynamically objects
我正在实现吃豆子游戏。一个条件是您必须在运行时(玩游戏时)添加或移除敌人。我的想法是在你按“+”时添加一个重影,并在你每次按“-”时删除一个重影。
我正在用opengl画迷宫和人物。我不知道如何制作一个新的幽灵();或删除 ghost();每次按上述键时。
也许另一种解决方案是鬼魂的矢量或地图。但是用户不会给出任何名字或任何东西...
我的伪代码:
#define MOVE 1
#define QUIET 2
class particle {
protected: //Antes era publica
float x,y; //-- Current position
float vx,vy; //-- Velocity vector
int state;
long time_remaining;
public:
particle();
void set_position(int x,int y);
void init_movement(int destination_x,int destination_y,int duration);
void integrate(long t);
void draw();
virtual ~particle();
};
#endif /* PARTICLE_H_ */
幽灵将是粒子的继承class。
我使用以下代码控制游戏 window 中的键盘输入(我放了一些代码来理解这个想法):
glutDisplayFunc(display);
//TO-DO : COMMENT
glutKeyboardFunc(keyboard);
glutSpecialFunc(specialkeyboard);
终于到了,当玩家按下“+”键将幽灵添加到游戏中...
void specialkeyboard(int key,int x,int y)
{
switch(key)
{
case GLUT_KEY_UP:
//Pacman moves up
goNorth();
//square.set_position(300,300);
//square.init_movement(300,500,1000);
break;
case GLUT_KEY_DOWN:
//Pacman moves down
// square.set_position(300,300);
// square.init_movement(300,100,1000);
goSouth();
break;
case GLUT_KEY_LEFT:
//Pacman moves to the left
goEast();
break;
case GLUT_KEY_RIGHT:
goWest();
//square.set_position(300,300);
//square.init_movement(500,300,1000);
break;
case '+':
//generate new ghost some kind of ( add ghost to the game)
new ghost();
break;
case '-':
//kill or remove ghost from the game
delete ghost;
break;
}
glutPostRedisplay();
}
我正在使用 Eclipse 和 C++ 进行编程。
Perhaps another solution would be a vector or map of ghosts
完全正确。
But user would not give any name or anything...
你什么时候需要一个名字来 push_back
到 vector
?
当然,在这种情况下我不会使用指针;只需推送或弹出一个值。如果您真的想使用指针,请不要使用原始指针和 new
/delete
; std::unique_ptr<your_type>
中的 vector
或 set
将是更好的选择。
不要new
你的鬼魂。有一个包含 ghost
个对象的向量,并且每次你想让玩家的生活变得更艰难时,push_back 就有一个向量的入口。当按下 '-' 时,您将从矢量中简单地 pop_back
(只要确保在弹出之前至少有一个元素)。
我正在实现吃豆子游戏。一个条件是您必须在运行时(玩游戏时)添加或移除敌人。我的想法是在你按“+”时添加一个重影,并在你每次按“-”时删除一个重影。
我正在用opengl画迷宫和人物。我不知道如何制作一个新的幽灵();或删除 ghost();每次按上述键时。
也许另一种解决方案是鬼魂的矢量或地图。但是用户不会给出任何名字或任何东西...
我的伪代码:
#define MOVE 1
#define QUIET 2
class particle {
protected: //Antes era publica
float x,y; //-- Current position
float vx,vy; //-- Velocity vector
int state;
long time_remaining;
public:
particle();
void set_position(int x,int y);
void init_movement(int destination_x,int destination_y,int duration);
void integrate(long t);
void draw();
virtual ~particle();
};
#endif /* PARTICLE_H_ */
幽灵将是粒子的继承class。
我使用以下代码控制游戏 window 中的键盘输入(我放了一些代码来理解这个想法):
glutDisplayFunc(display);
//TO-DO : COMMENT
glutKeyboardFunc(keyboard);
glutSpecialFunc(specialkeyboard);
终于到了,当玩家按下“+”键将幽灵添加到游戏中...
void specialkeyboard(int key,int x,int y)
{
switch(key)
{
case GLUT_KEY_UP:
//Pacman moves up
goNorth();
//square.set_position(300,300);
//square.init_movement(300,500,1000);
break;
case GLUT_KEY_DOWN:
//Pacman moves down
// square.set_position(300,300);
// square.init_movement(300,100,1000);
goSouth();
break;
case GLUT_KEY_LEFT:
//Pacman moves to the left
goEast();
break;
case GLUT_KEY_RIGHT:
goWest();
//square.set_position(300,300);
//square.init_movement(500,300,1000);
break;
case '+':
//generate new ghost some kind of ( add ghost to the game)
new ghost();
break;
case '-':
//kill or remove ghost from the game
delete ghost;
break;
}
glutPostRedisplay();
}
我正在使用 Eclipse 和 C++ 进行编程。
Perhaps another solution would be a vector or map of ghosts
完全正确。
But user would not give any name or anything...
你什么时候需要一个名字来 push_back
到 vector
?
当然,在这种情况下我不会使用指针;只需推送或弹出一个值。如果您真的想使用指针,请不要使用原始指针和 new
/delete
; std::unique_ptr<your_type>
中的 vector
或 set
将是更好的选择。
不要new
你的鬼魂。有一个包含 ghost
个对象的向量,并且每次你想让玩家的生活变得更艰难时,push_back 就有一个向量的入口。当按下 '-' 时,您将从矢量中简单地 pop_back
(只要确保在弹出之前至少有一个元素)。