diff --git a/TaskManager.py b/TaskManager.py index 44974e7..fa07d27 100644 --- a/TaskManager.py +++ b/TaskManager.py @@ -12,6 +12,7 @@ "sound": 0, "task": 0 } + self.sum_count = 0 # 合計の試行回数 self.target_count = count # 各タイプを実行する目標回数 def get_next_type(self, mode): @@ -21,7 +22,19 @@ elif mode == "task": counters = self.taskCounters available_types = ["screen", "sound", "task"] - + + """ + 現状、rightとleftが目標回数に達する かつ task(想像タスク等)が目標に達した際に無限ループになる。 + そのため、処置としてその際taskの分を他のタスクに割り振る。 + """ + if self.counters["right"] == self.target_count and self.counters["left"] == self.target_count and self.taskCounters["task"] == self.target_count: + list(counters.values()).index(min(list(counters.values()))) + available_tasks = [ + task_type for task_type in available_types + if counters[task_type] < self.target_count + ] + counters[random.choice(available_tasks)] += 1 + return "task" # すべてのタスクが目標回数に達しているか確認 if all(count >= self.target_count for count in counters.values()): return None # すべて完了 @@ -45,6 +58,9 @@ def get_taskCounts(self): return self.taskCounters + def get_sum_count(self): + return sum(list(self.counters.values())) + def sub_counts(self, type, task, amount): self.counters[type] -= amount self.taskCounters[task] -= amount \ No newline at end of file diff --git a/__pycache__/TaskManager.cpython-39.pyc b/__pycache__/TaskManager.cpython-39.pyc index 7b8ff31..516a348 100644 --- a/__pycache__/TaskManager.cpython-39.pyc +++ b/__pycache__/TaskManager.cpython-39.pyc Binary files differ diff --git a/run.py b/run.py index 08c979c..966ebd5 100644 --- a/run.py +++ b/run.py @@ -9,11 +9,13 @@ import TaskManager #”重要” offLineModeをFalseにすると脳波データの通信が行われるため、UDP通信が起動していない場合にFalseにするとバグ発生の可能性あり -offLineMode = True +offLineMode = False WIDTH = 3200 #ウィンドウの横サイズ HEIGHT = 1800 #ウィンドウの縦サイズ TIME = 30000 #タスクの継続時間(ミリ秒) BREAK_TIME = 15000 #タスク間の休憩時間(ミリ秒) +LONG_BREAK_TIME = 120000 #長めの休憩時間(ミリ秒) +LONG_BREAK_INTERVAL = 5 #何タスクごとに長めの休憩を取るか PREP_TIME = 10000 #各タスクの「慣れ」時間(ミリ秒) TASK_COUNT = 10 #右、左、ニュートラルそれぞれのタスク数(デフォルトの場合それぞれ5回ずつタスクを実施) #UDPの準備 @@ -186,14 +188,22 @@ #画面の更新 pygame.display.update() - - #タスク間の休憩 - get_tick_time[0] = pygame.time.get_ticks() - print(f"現在の実行回数: {task_manager.get_counts()}\nタスク実行回数: {task_manager.get_taskCounts()}") - while get_tick_time[1] - get_tick_time[0] <= BREAK_TIME: - if check_exit(s, choice, process): - break - get_tick_time[1] = pygame.time.get_ticks() + if task_manager.get_sum_count() % LONG_BREAK_INTERVAL == 0: + #タスク間の休憩(長め) + get_tick_time[0] = pygame.time.get_ticks() + print(f"現在の実行回数: {task_manager.get_counts()}\nタスク実行回数: {task_manager.get_taskCounts()}\n2分間休憩してください。") + while get_tick_time[1] - get_tick_time[0] <= LONG_BREAK_TIME: + if check_exit(s, choice, process): + break + get_tick_time[1] = pygame.time.get_ticks() + else: + #タスク間の休憩 + get_tick_time[0] = pygame.time.get_ticks() + print(f"現在の実行回数: {task_manager.get_counts()}\nタスク実行回数: {task_manager.get_taskCounts()}") + while get_tick_time[1] - get_tick_time[0] <= BREAK_TIME: + if check_exit(s, choice, process): + break + get_tick_time[1] = pygame.time.get_ticks() except SystemExit: pygame.quit() s.close()