main.cpp 文件
#include "menu.h"
using namespace sf;
int main() {
bool isGame = true;
bool isg = true;
while (game.isOpen()) {
while (isg) {
while (isGame) {
...
if (y > 500) {
isGame = false;
Menu(game, score);
break;
}
...
}
isGame = true;
}
}
return 0;
}
菜单.h 文件
#pragma once
#ifndef _MENU_H
#define _MENU_H
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <iostream>
#include <Time.h>
using namespace sf;
void Menu(RenderWindow& game,int score) {
bool isMenu = true;
while (isMenu) {
if (Mouse::isButtonPressed(Mouse::Left)) {
if (menuNum == 1) {
isMenu = false;
}
}
}
}
#endif _MENU_H
在我看来,当对象低于 500 个单位时,就会调用 void Menu() 函数。然后如果我想再玩一次,在这种情况下,这里是条件`
if (Mouse::isButtonPressed(Mouse::Left)) {
if (menuNum == 1) {
isMenu = false;
}
` 然后我就退出 void Menu() 函数循环,回到原来的循环。但是,与此同时,什么也没有发生,但按计划 - 然后我退出主文件中的“最深”循环,将变量设置为 true 并返回“最深”循环。对不起,如果我用这个文字折磨你,在我看来错误在于表面,但我想不出来
在这种情况下,您需要某种共享存储,它允许您从一个函数和另一个函数中获取值。以及从一种功能切换到另一种功能的任何机制。
您可以将共享资源存储在全局变量、中间类或静态类中。例如,你可以取最后一个,它应该看起来像这样:
MySettings.cpp接下来,我们将文件连接到
menu.h. 现在我们需要弄清楚我们需要在功能之间进行切换。为此,最好将 main 中的代码放在一个单独的函数中,并删除对 Menu 的直接调用。好吧,从相同的条件更改菜单。