예제 #1
0
void StateMachine::run() {
	ResourceManager& resourceManager = ResourceManager::getInstance();
	if (!resourceManager.noUsableScreenResolution) {
		state = loading; //Edit this to set the startup state
	}
	else {
		state = noScreenResolution; //Edit this to set the startup state
	}
	sf::Sound sound;
	while (state != quit) {
		switch (state) {
		case loading:
			state = runLoading();
			break;
		case mainMenu:
			sound.SetBuffer(resourceManager.sounds.getSound(0,"ChangeState"));
			sound.Play();
			state = runMainMenu();
			break;
		case gameSetup:
			sound.SetBuffer(resourceManager.sounds.getSound(0,"ChangeState"));
			sound.Play();
			state = runGameSetup();
			break;
		case runGame:
			state = runTheGame();			
			break;
		case gameDone:
			state = runGameDone();
			break;
		case highScore:
			sound.SetBuffer(resourceManager.sounds.getSound(0,"ChangeState"));
			sound.Play();
			state = runHighScore();
			break;
		case credits:
			sound.SetBuffer(resourceManager.sounds.getSound(0,"ChangeState"));
			sound.Play();
			state = runCredits();
			break;
		case help:
			sound.SetBuffer(resourceManager.sounds.getSound(0,"ChangeState"));
			sound.Play();
			state = runHelp();
			break;
		case noScreenResolution:
			state = runNoScreenResolution();
			state = quit;
			break;
		case tournament:
			state = runTournament();
		default:
			break;
		}
		// Just in case something in the list is bad pointers.
		// TODO: Clean up all resources in the end of all
		// state functions (like runTheGame)
		resourceManager.drawableList.clear();
	}
	resourceManager.win.Close();
}
예제 #2
0
int main(void)
{
	char buf[256];	
	int lineCount = 0;
	int fileOpenResult = 0;
	FILE *fileRead = NULL, *fileWrite = NULL;
	StudentList studentList;
	studentList.count = 0; studentList.firstStudent = NULL; studentList.lastStudent = NULL;  // student list 초기화

	fileOpenResult = openStudentFile(&fileRead, &fileWrite);
	if (fileOpenResult == -1) return -1;	// data.txt 읽어오기, 없으면 만들기, 만들기 실패하면 종료하기
	
	if (fileOpenResult == 0)
	{
		while (fgets(buf, sizeof(buf), fileRead) != NULL)	// file 읽어서 구조체 할당하고 list에 추가하기
		{
			if (lineCount++ == 0) continue;	// 첫줄 무시		
			Student *s = parseStudentStr(buf);
			addStudentToList(s, &studentList);
		}
	}
	if (fileRead) fclose(fileRead);
	if (fileWrite) fclose(fileWrite);

	// main program loop
	int choice = 0;
	int changeExists = 0;
	while (choice != 9)
	{
		runMainMenu(&choice);
		switch (choice)
		{
			case 1:		printStudentList(&studentList);		
						break;	

			case 2:		addNewStudent(&studentList); 
						changeExists++;	
						break;

			case 3:		modifyStudentInfo(&studentList);
						changeExists++;
						break;

			case 4:		deleteStudentInfo(&studentList);
						changeExists++;
						break;

			case 5:		saveListToFile(&studentList); 
						changeExists = 0;	
						break;

			case 9:		if (onQuit(changeExists)) saveListToFile(&studentList);
						break;

			default:	printf("Invalid choice!\n");		
						break;
		}
	}
		
	cleanupOnExit(&studentList, fileRead, fileWrite);
	return 0;
}