예제 #1
0
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);
			}
		}
	}
}
예제 #2
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();
}
예제 #3
0
// 레벨 선택
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();
	}
}
예제 #4
0
DWORD WINAPI levelThread_f(PVOID pvParam) 
{
	LevelSet((District*)pvParam);
	return 1;
}