我有一个简单的脚本,它显示一个按钮(这是一个 png 图像),当用户单击它时,应用程序退出。
但我想添加多个按钮,我发现我目前的想法会导致很长的 if:else 情况,我想知道这是否是唯一的方法。
这就是我在 main.cpp 文件中设置当前菜单的方式。
bool handle_mouse_leftClick(int x, int y, SDL_Surface *button) {
if( ( ( mouseX > x ) && ( mouseX < x + button->w ) ) && ( ( mouseY > y ) && ( mouseY < y + button->h ) ) ) {
return true;
} else {
return false;
}
}
这是我的检测功能。
下面是我的主要功能,它充当我的游戏循环,我已经删除了不相关的代码以使其更容易理解:
//menu button
SDL_Surface *button;
button = IMG_Load("button.png");
while(!quit){
//handle events
while( SDL_PollEvent( &event ) ){
switch(event.type){
case SDL_QUIT: quit = true; break;
case SDL_MOUSEBUTTONDOWN:
if (event.button.button == SDL_BUTTON_LEFT) {
if(handle_mouse_leftClick(btnx,btny,button)){
quit = true;
}
}
break;
}
}
问题是我的 main.cpp 是否应该进行所有这些检查,当我添加更多按钮时会很快变得很长,所以我想知道我是否错过了简化工作的技巧?