Map::Map() { loadLevels(); current = new Level; *current = *all_levels[0]; next = new Level; *next = *all_levels[1]; flag = true; count = 0; }
void KHangMan::setCurrentLanguage(int index) { if (index >= 0 && index < m_languages.size()) { Prefs::setSelectedLanguage(m_languages[index]); m_currentLanguage = index; Prefs::self()->save(); loadLevels(); loadLanguageSpecialCharacters(); setLevel(); emit currentLanguageChanged(); } }
int doInit(Uint32 vidFlags, int doWipe) { int i; BrInitError error; if(br_init(&error, "kuri2d") == 0 && error != BR_INIT_ERROR_DISABLED) { printf("Warning: BinReloc failed to initialize (error code %d)\n", error); printf("Will fallback to hardcoded default path.\n"); } if(SDL_Init((Uint32)(SDL_INIT_VIDEO | SDL_INIT_AUDIO))) { printf("Unable to init SDL: %s\n", SDL_GetError()); return 0; } (void)atexit(SDL_Quit); (void)atexit(TTF_Quit); /* malloc some defaults - they *should* be reloaded later */ level = (KuriLevel *)malloc(sizeof(KuriLevel)); startState = malloc(sizeof(State)); state = malloc(sizeof(State)); strcpy(state->name, "Player"); state->level = (Uint8)0; state->score = (Uint8)0; state->lives = (Uint8)3; for(i=0; i<MAX_HISCORES; i++) { strcpy(hiscores[i].name, "nobody"); hiscores[i].score = 0; hiscores[i].level = 0; } if(level && startState && state && (doWipe ? 1 : loadHiScores()) && loadBackgrounds() && loadBlocks() && loadLevels() && loadSounds() && loadFonts() && loadTexts() && openFrame(vidFlags)) { return 1; } return 0; }
LevelMenu::LevelMenu() : _currentLevel(NULL), _currentItemIndex(0) { _menuPat = new osg::PositionAttitudeTransform(); _menuPat->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF); _keyboardHandler = new MenuKeyboardHandler(this); viewer.addEventHandler(_keyboardHandler); initializeCamera(); initializeHeader(); initializeBackgroundAnimation(); initializeSelector(); loadLevels(); updateDetails(); viewer.getCamera()->setUpdateCallback(new LevelMenuUpdater(this)); Sound::getInstance()->playInLoop(MENU_MUSIC_FILE); }
int main() { std::mt19937 generator(time(nullptr)); sys::ComputeSystem cs; cs.create(sys::ComputeSystem::_gpu); sys::ComputeProgram prog; prog.loadFromFile("resources/neoKernels.cl", cs); std::vector<Level> levels; std::unordered_set<char> tileDataCharset; std::unordered_set<char> objectDataCharset; loadLevels("userlevels.txt", levels, tileDataCharset, objectDataCharset); // --------------------------- Create the Sparse Coder --------------------------- const int numTiles = levels.front()._tileData.length(); const int charsetSize = 128 + 2; // + 2 indicating the portion it is on (01 for tiles, 10 for objects) const cl::size_type visDim = std::ceil(std::sqrt(static_cast<float>(charsetSize))); const int visArea = visDim * visDim; const int maxObjects = 1000; cl::Image2D input = cl::Image2D(cs.getContext(), CL_MEM_READ_WRITE, cl::ImageFormat(CL_R, CL_FLOAT), visDim, visDim); std::vector<float> inputData(visArea, 0.0f); std::vector<float> predData(visArea, 0.0f); std::vector<neo::PredictiveHierarchy::LayerDesc> layerDescs(3); layerDescs[0]._size = { 16, 16 }; layerDescs[1]._size = { 16, 16 }; layerDescs[2]._size = { 16, 16 }; neo::PredictiveHierarchy ph; ph.createRandom(cs, prog, { static_cast<int>(visDim), static_cast<int>(visDim) }, layerDescs, { -0.01f, 0.01f }, generator); ph._whiteningKernelRadius = 1; // Learn levels std::uniform_int_distribution<int> levelDist(0, levels.size() - 1); for (int iter = 0; iter < 20; iter++) { // Choose random level int index = levelDist(generator); const Level &l = levels[index]; // Set mode for tiles inputData[charsetSize - 2] = 0.0f; inputData[charsetSize - 1] = 1.0f; // Run through once to get PH ready inputData['#'] = 1.0f; cs.getQueue().enqueueWriteImage(input, CL_TRUE, cl::array<cl::size_type, 3> { 0, 0, 0 }, cl::array<cl::size_type, 3> { visDim, visDim, 1 }, 0, 0, inputData.data()); ph.simStep(cs, input); inputData['#'] = 0.0f; // Run through tile data for (int i = 0; i < l._tileData.length(); i++) { // Set character to 1 inputData[l._tileData[i]] = 1.0f; cs.getQueue().enqueueWriteImage(input, CL_TRUE, cl::array<cl::size_type, 3> { 0, 0, 0 }, cl::array<cl::size_type, 3> { visDim, visDim, 1 }, 0, 0, inputData.data()); ph.simStep(cs, input); // Unset character inputData[l._tileData[i]] = 0.0f; } // Set mode for objects inputData[charsetSize - 2] = 1.0f; inputData[charsetSize - 1] = 0.0f; // Run through once to get PH ready inputData['#'] = 1.0f; cs.getQueue().enqueueWriteImage(input, CL_TRUE, { 0, 0, 0 }, { visDim, visDim, 1 }, 0, 0, inputData.data()); ph.simStep(cs, input); inputData['#'] = 0.0f; // Run through object data for (int i = 0; i < l._objectData.length(); i++) { // Set character to 1 inputData[l._objectData[i]] = 1.0f; cs.getQueue().enqueueWriteImage(input, CL_TRUE, { 0, 0, 0 }, { visDim, visDim, 1 }, 0, 0, inputData.data()); ph.simStep(cs, input); // Unset character inputData[l._objectData[i]] = 0.0f; } std::cout << "Went over level #" << (index + 1) << " \"" << l._name << "\"" << std::endl; } // Generate new maps std::ofstream toFile("generatedNLevels.txt"); std::normal_distribution<float> noiseDist(0.0f, 1.0f); for (int i = 0; i < 10; i++) { toFile << "$" << "Generated Level " << (i + 1) << "#NeoRL#Experimental#"; // Generated level data // Set mode for tiles inputData[charsetSize - 2] = 0.0f; inputData[charsetSize - 1] = 1.0f; // Run through once to get PH ready //cs.getQueue().enqueueWriteImage(input, CL_TRUE, cl::array<cl::size_type, 3> { 0, 0, 0 }, cl::array<cl::size_type, 3> { visDim, visDim, 1 }, 0, 0, inputData.data()); //ph.simStep(cs, input); char prevChar = 0; for (int i = 0; i < numTiles; i++) { // Set character to 1 inputData[prevChar] = 1.0f; cs.getQueue().enqueueWriteImage(input, CL_TRUE, cl::array<cl::size_type, 3> { 0, 0, 0 }, cl::array<cl::size_type, 3> { visDim, visDim, 1 }, 0, 0, inputData.data()); ph.simStep(cs, input, false); // Unset character inputData[prevChar] = 0.0f; char newChar = 0; cs.getQueue().enqueueReadImage(ph.getPrediction(), CL_TRUE, cl::array<cl::size_type, 3> { 0, 0, 0 }, cl::array<cl::size_type, 3> { visDim, visDim, 1 }, 0, 0, predData.data()); for (int j = 1; j < charsetSize - 2; j++) if (predData[j] > predData[newChar]) newChar = j; // Add new character toFile << newChar; prevChar = newChar; } toFile << "|"; // Set mode for objects inputData[charsetSize - 2] = 1.0f; inputData[charsetSize - 1] = 0.0f; // Run through once to get PH ready //cs.getQueue().enqueueWriteImage(input, CL_TRUE, cl::array<cl::size_type, 3> { 0, 0, 0 }, cl::array<cl::size_type, 3> { visDim, visDim, 1 }, 0, 0, inputData.data()); //ph.simStep(cs, input); prevChar = 0; for (int i = 0; i < maxObjects; i++) { // Set character to 1 inputData[prevChar] = 1.0f; std::vector<float> noisyInputData = inputData; for (int j = 0; j < noisyInputData.size(); j++) { noisyInputData[j] += noiseDist(generator) * 0.1f; } cs.getQueue().enqueueWriteImage(input, CL_TRUE, cl::array<cl::size_type, 3> { 0, 0, 0 }, cl::array<cl::size_type, 3> { visDim, visDim, 1 }, 0, 0, inputData.data()); ph.simStep(cs, input, false); // Unset character inputData[prevChar] = 0.0f; char newChar = 0; cs.getQueue().enqueueReadImage(ph.getPrediction(), CL_TRUE, cl::array<cl::size_type, 3> { 0, 0, 0 }, cl::array<cl::size_type, 3> { visDim, visDim, 1 }, 0, 0, predData.data()); for (int j = 1; j < charsetSize - 2; j++) if (predData[j] > predData[newChar]) newChar = j; // If is delimiter, break if (newChar == '#') break; // Add new character toFile << newChar; prevChar = newChar; } toFile << "#" << std::endl << std::endl; } return 0; }