learn-sql-model/wyatt.py

84 lines
2.2 KiB
Python

import random
import sys
# Initialize player attributes
player = {
"name": input("Enter your character's name: "),
"health": 100,
"food": 100,
"x": 5,
"y": 5,
"day": 1,
}
# Define game resources
resources = {
"food": 50,
"water": 50,
}
# Define game constants
MAP_WIDTH, MAP_HEIGHT = 20, 10
PLAYER_CHAR = "(o)"
ENEMY_CHAR = "(?)"
# Game loop
while player["health"] > 0:
# Create the game map
game_map = [[" " for _ in range(MAP_WIDTH)] for _ in range(MAP_HEIGHT)]
game_map[player["y"]][player["x"]] = PLAYER_CHAR
# Place enemies randomly on the map
for _ in range(random.randint(1, 3)):
enemy_x = random.randint(0, MAP_WIDTH - 1)
enemy_y = random.randint(0, MAP_HEIGHT - 1)
game_map[enemy_y][enemy_x] = ENEMY_CHAR
# Print the game map
for row in game_map:
print("".join(row))
print(f"\nDay {player['day']}")
print(f"Name: {player['name']}")
print(f"Health: {player['health']} HP {'*' * player['health']}")
print(f"Food: {player['food']} Hunger {'*' * player['food']}")
print(f"Coordinates: ({player['x']}, {player['y']})")
# Player input for movement
move = input("Move (W/A/S/D): ").upper()
# Update player position based on input
if move == "W" and player["y"] > 0:
player["y"] -= 1
elif move == "S" and player["y"] < MAP_HEIGHT - 1:
player["y"] += 1
elif move == "A" and player["x"] > 0:
player["x"] -= 1
elif move == "D" and player["x"] < MAP_WIDTH - 1:
player["x"] += 1
# Consume resources
player["food"] -= random.randint(5, 15)
# Check if the player has enough resources
if player["food"] < 0:
player["food"] = 0
player["health"] -= 10
# Check if the player encounters an enemy
if game_map[player["y"]][player["x"]] == ENEMY_CHAR:
enemy_damage = random.randint(10, 30)
player["health"] -= enemy_damage
print(f"You encountered an enemy and took {enemy_damage} damage!")
# Rest for the day
player["day"] += 1
# Exit the game if health reaches zero
if player["health"] <= 0:
print("Game Over. You did not survive.")
break
input("Press Enter to continue to the next day...")
sys.exit()