C++ 试图构造它,您是否使用指针?如果是这样,请使用星号*nameorf获取对象,这是您需要使用的构造。 Fl_Window ^ | Game Interface ^ ^ | | One Player Two
试图构造它,您是否使用指针?如果是这样,请使用星号*nameorf获取对象,这是您需要使用的构造。C++ 试图构造它,您是否使用指针?如果是这样,请使用星号*nameorf获取对象,这是您需要使用的构造。 Fl_Window ^ | Game Interface ^ ^ | | One Player Two ,c++,class,derived-class,base-class,fltk,C++,Class,Derived Class,Base Class,Fltk,试图构造它,您是否使用指针?如果是这样,请使用星号*nameorf获取对象,这是您需要使用的构造。 Fl_Window ^ | Game Interface ^ ^ | | One Player Two Player //Main Function int main() { GameInterface MyInterface(GameInterface::WindowSizeX, GameInterface::WindowSizeY, "PO
Fl_Window
^
|
Game Interface
^ ^
| |
One Player Two Player
//Main Function
int main()
{
GameInterface MyInterface(GameInterface::WindowSizeX,
GameInterface::WindowSizeY, "PONG");
MyInterface . InitialiseMenu();
return Fl::run();
}
void GameInterface :: InitialiseMenu()
{
begin();
MenuTitle = new Fl_Box (400, 50, 100, 50, "Welcome to PONG");
MenuTitle -> labelcolor (FL_WHITE);
MenuTitle -> labelsize (MenuTitleTextSize);
MenuTitle -> box (FL_NO_BOX);
MenuTitle -> show();
TwoPlayerMode = new Fl_Button (400, 300, 150, 50, "Two Player Mode");
TwoPlayerMode -> callback(TwoPlayerMode_cb, this);
TwoPlayerMode -> show();
show();
}
//Define two player mode button call back function
void GameInterface :: TwoPlayerMode_cb(Fl_Widget* w,void* data )
{
((GameInterface*) data) -> TwoPlayerMode_cb_i(w);
}
void GameInterface :: TwoPlayerMode_cb_i(Fl_Widget* w)
{
TwoPlayerMode -> hide();
MenuTitle -> hide();
InitialiseGameObjects();
}
//Define initialise game objects
void GameInterface :: InitialiseGameObjects()
{
Fl::add_timeout(0.01, GameInterfaceUpdate_cb, this);
begin();
Ball = new Fl_Box (400, 300, 10, 10);
Ball -> box(FL_FLAT_BOX);
Ball -> color (FL_WHITE);
Ball -> show();
Player1Paddle = new Fl_Box(0, 300, PaddleSizeX, PaddleSizeY);
Player1Paddle -> box(FL_FLAT_BOX);
Player1Paddle -> color(FL_WHITE);
Player1Paddle -> show();
InitialBallDirectionGenerator();
BallVelocityX = InitialBallDirectionX * InitialBallSpeed;
BallVelocityY = InitialBallDirectionY * InitialBallSpeed;
//TwoPlayerModeInitialise_i();
end();
}
//Game Interface Class
class GameInterface : public Fl_Window
{
//Defining Public Members
public:
GameInterface(int width, int height, const char* title=0) : Fl_Window(width, height, title)
{
color(FL_BLACK);
show();
}
...
};
class TwoPlayerMode : public GameInterface
{
...
};
OnePlayer(GameInterface base) : GameInterface(base) {
//here you could call any additional init functions
}
class Base {
protected:
int x;
public:
Base(int x) : x(x) {}
Base getBaseClass() { return *this; }
virtual int getX() {
return x + 1;
}
};
class Derived : public Base {
public:
Derived(Base b) : Base(b) {}
Base getBaseClass() {
}
int getX() {
return x;
}
};
int main() {
Base t(6);
Derived d(t);
std::cout << d.getX() << '\n'; //6
Base y = d.getBaseClass();
std::cout << y.getX() << '\n'; //7
}
// create a pointer to a GameInterface object
GameInterface *game;
// start one player mode
game = new OnePlayer();
game->run();
// before you change the game mode delete the current game
delete game;
// start two player mode
game = new TwoPlayer();
game->run();
int main()
{
// assuming default constructor exists, create the menu
GameSelectMenu menu;
// run the menu
menu.run();
return 0;
}
//.. Within run() function of menu class
std::string input;
std::cout << "choose a game (enter 'a' or 'b'): "
std::cin>> input;
// check input for errors
...
// run a mode depending on input
if (input == "a") startOnePlayer();
else if (input == "b") startTwoPlayer();
// remember to delete the GameInterface object when you have finished with it if it has been initialised
if (game != NULL) delete game;
...