1+ # Importing necessary modules
2+ import random
3+
4+ # Game constants
5+ WIDTH , HEIGHT = 80 , 20
6+ PLAYER_HEALTH = 100
7+ MONSTER_HEALTH = 50
8+
9+ # Game classes
10+ class Player :
11+ def __init__ (self , name ):
12+ self .name = name
13+ self .health = PLAYER_HEALTH
14+ self .inventory = []
15+
16+ def attack (self , monster ):
17+ damage = random .randint (10 , 20 )
18+ monster .health -= damage
19+ print (f"You attack the { monster .name } for { damage } damage!" )
20+
21+ def use_item (self , item ):
22+ if item in self .inventory :
23+ if item == "healing_potion" :
24+ self .health += 20
25+ print ("You drink a healing potion and regain 20 health!" )
26+ elif item == "sword" :
27+ print ("You equip the sword and deal more damage!" )
28+ self .inventory .remove (item )
29+
30+ class Monster :
31+ def __init__ (self , name , health ):
32+ self .name = name
33+ self .health = health
34+
35+ def attack (self , player ):
36+ damage = random .randint (10 , 20 )
37+ player .health -= damage
38+ print (f"The { self .name } attacks you for { damage } damage!" )
39+
40+ class Room :
41+ def __init__ (self , description , items , monsters ):
42+ self .description = description
43+ self .items = items
44+ self .monsters = monsters
45+
46+ # Game rooms
47+ rooms = [
48+ Room ("You are in a dark forest." , ["healing_potion" ], [Monster ("Goblin" , MONSTER_HEALTH )]),
49+ Room ("You are in a cave." , ["sword" ], [Monster ("Troll" , MONSTER_HEALTH * 2 )]),
50+ Room ("You are in a castle." , [], [Monster ("Dragon" , MONSTER_HEALTH * 5 )]),
51+ ]
52+
53+ # Game logic
54+ def game_loop (player ):
55+ current_room = 0
56+ while True :
57+ print (rooms [current_room ].description )
58+ print ("You have the following items:" )
59+ for item in player .inventory :
60+ print (item )
61+ print ("You see the following monsters:" )
62+ for monster in rooms [current_room ].monsters :
63+ print (monster .name )
64+ action = input ("What do you do? (move, attack, use item) " )
65+ if action == "move" :
66+ current_room = (current_room + 1 ) % len (rooms )
67+ elif action == "attack" :
68+ monster = random .choice (rooms [current_room ].monsters )
69+ player .attack (monster )
70+ if monster .health <= 0 :
71+ rooms [current_room ].monsters .remove (monster )
72+ print (f"You killed the { monster .name } !" )
73+ elif action == "use item" :
74+ item = input ("Which item do you want to use? " )
75+ player .use_item (item )
76+
77+ # Game start
78+ player_name = input ("What is your name? " )
79+ player = Player (player_name )
80+ game_loop (player )
0 commit comments