|
from termcolor import colored |
|
from textgames import GAME_IDS, GAME_NAMES, LEVEL_IDS, LEVELS, new_game, LEVELS_HIDDEN, SINGLE_LINE_GAME_IDS |
|
|
|
import os |
|
|
|
|
|
def print_text_green(string): |
|
print(colored(string, "light_green")) |
|
|
|
def print_text_cyan(string): |
|
print(colored(string, "cyan")) |
|
|
|
def print_text_white(string): |
|
print(colored(string, "white")) |
|
|
|
|
|
if __name__ == "__main__": |
|
print_text_green("#" * 20) |
|
print_text_cyan(" Welcome to") |
|
print(" 🎮 " + colored("Text", "white")+ colored("Games", "yellow")) |
|
print_text_green("#" * 20) |
|
print_text_green("Games:") |
|
for i, game_name in zip(range(len(GAME_NAMES)), GAME_NAMES): |
|
print_text_green(f"{i+1}. {game_name}") |
|
print_text_green("#" * 20) |
|
|
|
cur_game_id = os.getenv("GAME_ID", None) |
|
difficulty_level = os.getenv("GAME_LEVEL", None) |
|
while cur_game_id is None: |
|
user_input = str(input(f"Choose the game> ")) |
|
|
|
if user_input in GAME_IDS: |
|
cur_game_id = user_input |
|
|
|
print_text_green("#" * 20) |
|
print_text_green("Difficulty Levels:") |
|
for i, l in zip(LEVEL_IDS, LEVELS): |
|
print_text_green(f"{i}. {l}") |
|
print_text_green("#" * 20) |
|
|
|
while difficulty_level is None: |
|
user_input = str(input(f"Choose the difficulty level> ")) |
|
if user_input in LEVEL_IDS: |
|
difficulty_level = user_input |
|
else: |
|
print("The difficulty level option is not available.") |
|
else: |
|
arr = user_input.split("-") |
|
if len(arr) == 2 and isinstance(arr[0], str) and isinstance(arr[1], str): |
|
if arr[0] in GAME_IDS and arr[1] in LEVEL_IDS: |
|
cur_game_id = arr[0] |
|
difficulty_level = arr[1] |
|
else: |
|
print("The game option is not available.") |
|
cur_game = None |
|
|
|
this_game_name = GAME_NAMES[GAME_IDS.index(cur_game_id)] |
|
this_difficulty_level = (LEVELS + LEVELS_HIDDEN)[LEVEL_IDS.index(difficulty_level)].replace("\t", " ") |
|
print_text_green(f"Game chosen: {this_game_name} and Difficulty Level: {this_difficulty_level}") |
|
|
|
solved = False |
|
cur_game = new_game(this_game_name, difficulty_level) |
|
print(colored("######## Game Start !! ########", "light_green")) |
|
print(cur_game.get_prompt()) |
|
while not solved: |
|
contents = [] |
|
while True: |
|
try: |
|
line = str(input("\t" if contents else f"Guess>\t")) |
|
|
|
if cur_game_id in SINGLE_LINE_GAME_IDS: |
|
contents.append(line) |
|
break |
|
if len(line) == 0: |
|
break |
|
except EOFError: |
|
break |
|
contents.append(line) |
|
|
|
user_input = '\n'.join(contents) |
|
solved, val_msg = cur_game.validate(user_input) |
|
if val_msg: |
|
print(val_msg) |
|
print(f"Attempt #{len(cur_game.attempt_timestamps)}:", "Correct guess" if solved else "Bad guess", end="\n\n") |
|
|
|
print(f"Time to solve: {round(cur_game.attempt_timestamps[-1] - cur_game.start_timestamp, 1)}s") |
|
print("Thank you for playing!") |
|
|
|
|
|
|