Beispiel #1
0
static void setMaze(unique_ptr<maze> &&m) {
	if (!m) return;

	mainMaze = move(m);
	resetMaze();
}
Beispiel #2
0
	Maze::Maze(irr::IrrlichtDevice* a_Device, irr::core::vector3df a_StartPosition, bool a_NeedRender)
		:m_MazeSizeX(60), m_MazeSizeY(60)
	{
		m_IrrDevice = a_Device;
		resetMaze(irr::core::vector2df(30, -7), a_NeedRender);
	}
Beispiel #3
0
static void handleEvent(SDL_Event &e) {
    switch(e.type) {
    case SDL_KEYDOWN:
        switch (e.key.keysym.scancode) {
        case SDL_SCANCODE_R:
            setMaze(generateRandomMaze(windowWidth / RES_TILES_SIZE, windowHeight / RES_TILES_SIZE));
            setStatus("Random maze generated");
            break;
        case SDL_SCANCODE_O:
            if (openMazeFile()) {
                setStatus("Maze file opened");
				printf("%s\n", lastFilename.c_str());
            }
            break;
        case SDL_SCANCODE_A:
            switch (currentAlgorithm) {
            case ALGORITHM_ASTAR:
                currentAlgorithm = ALGORITHM_GBFS;
                setStatus("Selected algorithm: Greedy Best First Search");
                break;
            case ALGORITHM_GBFS:
                currentAlgorithm = ALGORITHM_DIJKSTRA;
                setStatus("Selected algorithm: Dijkstra");
                break;
            case ALGORITHM_DIJKSTRA:
                currentAlgorithm = ALGORITHM_ASTAR;
                setStatus("Selected algorithm: A*");
                break;
            }
            break;
        case SDL_SCANCODE_S:
            if (saveMazeFile()) {
                setStatus("Maze file saved");
				printf("%s\n", lastFilename.c_str());
            }
            break;
        case SDL_SCANCODE_F:
            showFpsCounter = !showFpsCounter;
            break;
        case SDL_SCANCODE_G:
			mainMaze->renderGrid = !mainMaze->renderGrid;
            break;
        case SDL_SCANCODE_C:
			mainMaze->clearTemp();
            mainGrid->stop();
            setStatus("Path finding stopped");
            break;
        case SDL_SCANCODE_N:
            setMaze(unique_ptr<maze>(new maze(windowWidth / RES_TILES_SIZE, windowHeight / RES_TILES_SIZE)));
            setStatus("Created empty new maze");
            break;
        case SDL_SCANCODE_SPACE:
            mainGrid->start();
            setStatus("Path finding started");
            break;
        default:
            break;
        }
        break;
    case SDL_USEREVENT:
		resetMaze();
        setStatus("Maze has been cropped");
        break;
    }
    editor->handleEvent(e);
}