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(); }
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; }