diff --git a/ladder_mystery_coding_game.py b/ladder_mystery_coding_game.py new file mode 100644 index 0000000..f7d4bf2 --- /dev/null +++ b/ladder_mystery_coding_game.py @@ -0,0 +1,94 @@ +from retro.game import Game +from retro.agent import Agent +import time +import os +import sys +3 +def clear_terminal(): + if os.name == "nt": + os.system("cls") + else: + sys.stdout.write("\033c") + sys.stdout.flush() + +class RandomKeyAgent(Agent): + def act(self, state): + return None + + +class MysteryCodingLadderGame(Game): + def __init__(self, agents, state): + super().__init__(agents=agents, state=state) + self.word = "coding" 3 + self.index = 0 + self.position = 0 + self.ladder_height = len(self.word) 0 + + self.running = True + + def draw_ladder(self): + """Draws the ladder with the orb at the current height.""" + clear_terminal() + print("Hint: What this class is about\n") + + for i in range(self.ladder_height - 1, -1, -1): + if i == self.position: + print(" | ā— |") + else: + print(" | |") + + print("\nSpell the mystery word one letter at a time.") + print("The circle climbs the ladder with each correct letter!\n") + + + progress = [] + for i in range(len(self.word)): + if i < self.index: + progress.append(self.word[i].upper()) + else: + progress.append("_") + print("Word progress:", " ".join(progress)) + print(f"Next letter to guess: {self.word[self.index].upper()}\n") + + def update(self, action): + """Check the player's typed letter.""" + if not action: + return + + guess = action.lower()[0] + correct = self.word[self.index] + + if guess == correct: + print("Correct letter! The orb climbs!") + self.index += 1 + self.position += 1 + else: + print("Incorrect! The ladder resets!") + self.index = 0 + self.position = 0 + + + if self.position >= self.ladder_height: + self.running = False + + time.sleep(0.5) + + def run(self): + print("Game Start!") + while self.running: + self.draw_ladder() + letter = input("Your letter: ") + self.update(letter) + + clear_terminal() + print(" | ā— | TOP OF LADDER!") + print("\nšŸŽ‰ You spelled CODING correctly! Great job Buffalo Bull! šŸŽ‰\n") + + +9 +agents = [RandomKeyAgent()] +state = {} + +if __name__ == "__main__": + game = MysteryCodingLadderGame(agents=agents, state=state) + game.run()-+ \ No newline at end of file diff --git a/proposal.md b/proposal.md index 0b56066..399f99a 100644 --- a/proposal.md +++ b/proposal.md @@ -9,8 +9,16 @@ Completing the full word increases the score by 1. Pressing a wrong key resets the progress, and you have to start over again. Game ends when the player completes the word. +***revised 11/20/25 +I want to add a ladder where an orb goes up everytime you get a right word +The word CODING has 6 letters → the ladder has 6 levels. +for every correct letter the index increases and the orb moves up one step +The progress display reveals that letter +If plaher enters a wrong letter, the ladder resets, then the orb then falls to the bottom +When the orb reaches the top you spelled the entire word correctly and win. + The game uses code from retro: - -game class: class MysteryCodingGame(Game) + -game class -agent class -state -agents @@ -31,6 +39,7 @@ The game uses code from retro: -as the player gets letters right, it shows progrees in the word: c o _ _ _ _ 4. Scoring mechanic -Each time the player finishes the entire word "coding": Score goes up by 1, then progress resets +5. Ladder animation # Milestones 1. Build the Retro Game Structure 2. Create the Core Gameplay Mechanics