From 48f780650c7d92c945989b45dc781d415c85a21d Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Sun, 30 Aug 2020 16:14:54 +0200 Subject: Adds user prompts, removes address of player_choice. --- tonkadur.py | 52 +++++++++++++++++++++++++++++++++++++++++++++++++--- tonkadur_ui.py | 43 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 91 insertions(+), 4 deletions(-) diff --git a/tonkadur.py b/tonkadur.py index 61e87a8..146bfe4 100644 --- a/tonkadur.py +++ b/tonkadur.py @@ -34,6 +34,7 @@ class Tonkadur: self.allocated_data = 0 self.last_choice_index = -1 self.available_choices = [] + self.memorized_target = [] with open(json_file, 'r') as f: json_content = json.load(f) @@ -209,6 +210,28 @@ class Tonkadur: self.available_choices = [] self.last_choice_index = index + def store_integer (self, value): + current_val = self.memory + + for access in self.memorized_target: + pre_val = current_val + last_access = access + if (access in current_val): + current_val = current_val[access] + + pre_val[last_access] = value + + def store_string (self, value): + current_val = self.memory + + for access in self.memorized_target: + pre_val = current_val + last_access = access + if (access in current_val): + current_val = current_val[access] + + pre_val[last_access] = value + def run (self): while True: #print("\nmemory: " + str(self.memory)) @@ -219,9 +242,7 @@ class Tonkadur: if (instruction_category == "add_choice"): self.available_choices.append( - [ - self.compute(instruction['label']) - ] + self.compute(instruction['label']) ) self.program_counter += 1 elif (instruction_category == "assert"): @@ -308,6 +329,31 @@ class Tonkadur: pre_val[last_access] = result self.program_counter += 1 + elif (instruction_category == "prompt_integer"): + result = dict() + result["category"] = "prompt_integer" + result["min"] = self.compute(instruction['min']) + result["max"] = self.compute(instruction['max']) + result["label"] = self.compute(instruction['label']) + + self.memorized_target = self.compute(instruction['target']) + + self.program_counter += 1 + + return result + + elif (instruction_category == "prompt_string"): + result = dict() + result["category"] = "prompt_string" + result["min"] = self.compute(instruction['min']) + result["max"] = self.compute(instruction['max']) + result["label"] = self.compute(instruction['label']) + + self.memorized_target = self.compute(instruction['target']) + + self.program_counter += 1 + + return result else: print("Unknown Wyrd instruction: \"" + instruction_category + "\"") diff --git a/tonkadur_ui.py b/tonkadur_ui.py index 85f91e4..f27efd7 100644 --- a/tonkadur_ui.py +++ b/tonkadur_ui.py @@ -46,6 +46,47 @@ try: break elif (result_category == "display"): print(display_rich_text(result['content'])) + elif (result_category == "prompt_integer"): + while True: + user_input = input( + display_rich_text(result['label']) + + " " + + "[" + + str(result['min']) + + ", " + + str(result['max']) + + "] " + ) + user_input = int(user_input) + if ( + (user_input >= result['min']) + and (user_input <= result['max']) + ): + break + else: + print("Value not within range.") + state.store_integer(user_input) + + elif (result_category == "prompt_string"): + while True: + user_input = input( + display_rich_text(result['label']) + + " " + + "[" + + str(result['min']) + + ", " + + str(result['max']) + + "] " + ) + if ( + (len(user_input) >= result['min']) + and (len(user_input) <= result['max']) + ): + break + else: + print("Input size not within range.") + state.store_string(user_input) + elif (result_category == "assert"): print("Assert failed at line " + str(result['line']) + ":" + str(display_rich_text(result['message']))) print(str(state.memory)) @@ -53,7 +94,7 @@ try: current_choice = 0; for choice in result['choices']: - print(str(current_choice) + ". " + display_rich_text(choice[0])) + print(str(current_choice) + ". " + display_rich_text(choice)) current_choice += 1 user_choice = input("Your choice? ") -- cgit v1.2.3-70-g09d2