SokobanWidget::SokobanWidget(int argc, char ** argv) : quit(false) { char absolute_file_path[256] = {0}; const char * ok = realpath(argv[1], absolute_file_path); std::string commandLineFilename = (argc <= 1 && ok) ? "" : absolute_file_path; settings.load(); if(settings.levelset.empty()) { if(commandLineFilename.empty()) { levelSet = LevelSet(); } else { levelSet.loadFromFile(commandLineFilename, 0); } } else { if(commandLineFilename.empty()) { levelSet.loadFromFile(settings.levelset, settings.level_index); } else { if(commandLineFilename == settings.levelset) { levelSet.loadFromFile(settings.levelset, settings.level_index); } else { levelSet.loadFromFile(commandLineFilename, 0); } } } }
// 게임 초기 설정 void Tetris::Init() { m_block = new Block(); stage = INIT; m_printTime = 1000; m_level = 0; m_line = 0; m_score = 0; m_full_line_num = 0; m_bIsGameOver = false; // 스테이지 초기화 ------------------ stage_data[0].speed = 1000; stage_data[0].stick_rate = 20; stage_data[0].clear_line = 20; stage_data[1].speed = 1000; stage_data[1].stick_rate = 18; stage_data[1].clear_line = 20; stage_data[2].speed = 800; stage_data[2].stick_rate = 18; stage_data[2].clear_line = 20; stage_data[3].speed = 800; stage_data[3].stick_rate = 17; stage_data[3].clear_line = 20; stage_data[4].speed = 700; stage_data[4].stick_rate = 16; stage_data[4].clear_line = 20; stage_data[5].speed = 700; stage_data[5].stick_rate = 14; stage_data[5].clear_line = 20; stage_data[6].speed = 400; stage_data[6].stick_rate = 14; stage_data[6].clear_line = 20; stage_data[7].speed = 400; stage_data[7].stick_rate = 13; stage_data[7].clear_line = 20; stage_data[8].speed = 300; stage_data[8].stick_rate = 12; stage_data[8].clear_line = 20; stage_data[9].speed = 300; stage_data[9].stick_rate = 11; stage_data[9].clear_line = 100; // ------------------------------------ // 초기 화면에 쓰일 블럭 만들어둠 for( int i = 0; i < 4; ++i ) { angle[i] = rand() % 4; shape[i] = rand() % 7; } LevelSet(); }
// 레벨 선택 void Tetris::level_select( int nKey ) { if( nKey != 0 && nKey != '0' && nKey <= '8') { char clevel = nKey; int level = atoi( &clevel ); m_level = level - 1; stage = RUNNING; LevelSet(); } }
DWORD WINAPI levelThread_f(PVOID pvParam) { LevelSet((District*)pvParam); return 1; }