Eli's home

Anonymous
plain_text
09/02/2026 4:00 PM
8.2 KB
2
Indexable
import time
import random
import sys
import os

def clear_screen():
    os.system('cls' if os.name == 'nt' else 'clear')

class FnafGame:
    def __init__(self):
        # Game State Variables
        self.hour = 12
        self.power = 100.0
        self.time_elapsed = 0
        self.game_over = False
        self.victory = False
        
        # Security Office Controls
        self.left_door_closed = False
        self.right_door_closed = False
        
        # Animatronic Location Tracking
        # Stages: 0 (Stage), 1 (Hallway), 2 (Outside Left Door), 3 (Outside Right Door)
        self.bonnie_pos = 0
        self.chica_pos = 0
        
        # AI Difficulty Levels (1-20 scale)
        self.bonnie_ai = 4
        self.chica_ai = 3

    def get_power_drain(self):
        # Base drain + extra drain for closed doors
        drain = 0.1
        if self.left_door_closed: drain += 0.25
        if self.right_door_closed: drain += 0.25
        return drain

    def move_animatronics(self):
        # Bonnie movement cycle (Prefers Left Door)
        if random.randint(1, 20) <= self.bonnie_ai:
            if self.bonnie_pos == 0:
                self.bonnie_pos = 1
            elif self.bonnie_pos == 1:
                self.bonnie_pos = 2 if random.random() < 0.7 else 0
            elif self.bonnie_pos == 2 and not self.left_door_closed:
                self.game_over = True  # Jumpscare!

        # Chica movement cycle (Prefers Right Door)
        if random.randint(1, 20) <= self.chica_ai:
            if self.chica_pos == 0:
                self.chica_pos = 1
            elif self.chica_pos == 1:
                self.chica_pos = 3 if random.random() < 0.7 else 0
            elif self.chica_pos == 3 and not self.right_door_closed:
                self.game_over = True  # Jumpscare!

        # Reset them if doors successfully blocked them
        if self.bonnie_pos == 2 and self.left_door_closed:
            if random.random() < 0.4: self.bonnie_pos = 0
        if self.chica_pos == 3 and self.right_door_closed:
            if random.random() < 0.4: self.chica_pos = 0

    def display_cameras(self):
        clear_screen()
        print("=== SECURITY CAMERA FEED ===")
        print(f"CAM 1A (Show Stage): {'Bonnie & Chica present' if self.bonnie_pos == 0 and self.chica_pos == 0 else 'Bonnie present' if self.bonnie_pos == 0 else 'Chica present' if self.chica_pos == 0 else 'Empty'}")
        print(f"CAM 2A (West Hallway): {'Static/Footsteps heard' if self.bonnie_pos == 1 else 'Clear'}")
        print(f"CAM 3A (East Hallway): {'Static/Kitchen pots clanging' if self.chica_pos == 1 else 'Clear'}")
        print("============================")
        input("\nPress Enter to lower camera monitor...")

    def run(self):
        clear_screen()
        print("Welcome to your new summer job at Freddy's.")
        print("Survive from 12 AM to 6 AM.\n")
        print("Controls: \n[L] Toggle Left Door \n[R] Toggle Right Door \n[C] Check Cameras \n[Skip/Enter] Do Nothing\n")
        input("Press Enter to start Night 1...")

        # Main loop representing ticks of time
        while not self.game_over and not self.victory:
            self.time_elapsed += 1
            
            # Clock handling (Each hour takes roughly 15-20 loop iterations)
            if self.time_elapsed % 15 == 0:
                if self.hour == 12:
                    self.hour = 1
                else:
                    self.hour += 1
                
                # Make AI harder as night progresses
                self.bonnie_ai += 1
                self.chica_ai += 1

            if self.hour == 6:
                self.victory = True
                break

            # Power handling
            self.power -= self.get_power_drain()
            if self.power <= 0:
                self.power = 0
                self.left_door_closed = False
                self.right_door_closed = False
                clear_screen()
                print("⚡ POWER OUTAGE... Everything went black.")
                time.sleep(3)
                print("🎵 *Freddy's music box plays in the dark*")
                time.sleep(4)
                self.game_over = True
                break

            # Update Animatronic AI Positions
            self.move_animatronics()
            if self.game_over: 
                break

            # Render UI
            clear_screen()
            print(f"⏱️ Time: {self.hour} AM  |  🔋 Power: {round(self.power, 1)}% (Usage Drain: {self.get_power_drain() * 10}x)")
            print("---------------------------------------------")
            print(f"🚪 LEFT DOOR:  {'[ CLOSED ]' if self.left_door_closed else '[ OPEN ]'}")
            print(f"🚪 RIGHT DOOR: {'[ CLOSED ]' if self.right_door_closed else '[ OPEN ]'}")
            print("---------------------------------------------")
            
            # Visual alerts if an animatronic is right at your window
            if self.bonnie_pos == 2:
                print("⚠️ WARNING: Shadow seen outside your LEFT window!")
            if self.chica_pos == 3:
                print("⚠️ WARNING: Shadow seen outside your RIGHT window!")

            # Player Input Choice
            choice = input("\nAction (L/R/C or Enter): ").lower().strip()

            if choice == 'l':
                self.left_door_closed = not self.left_door_closed
            elif choice == 'r':
                self.right_door_closed = not self.right_door_closed
            elif choice == 'c':
                # Looking at cameras drains a tiny bit of extra power instantly
                self.power -= 0.5
                self.display_cameras()
            
            # Tiny processing buffer delay per round tick
            time.sleep(0.2)

        # End of Game Scenarios
        clear_screen()
        if self.victory:
            print("🎉 6:00 AM 🎉")
            print("Children cheering sound effects... You survived the night!")
        else:
            print("💥 SCREEEEEECH!!! 💥")
            print("An animatronic bit your face off. GAME OVER.")

if __name__ == "__main__":
    game = FnafGame()
    game.run()
Editor is loading...
Leave a Comment