Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit af73a2a

Browse files
Merge pull request #2794 from andoriyaprashant/branch37
AI Driven Storytelling Game Script Added
2 parents 1e6eb0f + 92896e1 commit af73a2a

File tree

3 files changed

+142
-0
lines changed

3 files changed

+142
-0
lines changed

‎AI Driven Storytelling Game/README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Interactive Storytelling Game
2+
3+
This is an interactive storytelling game written in Python. In this game, players make choices that influence the storyline and outcome of their adventure.
4+
5+
## Features
6+
7+
- Dynamic storytelling based on player choices.
8+
- Player can choose character name and traits at the beginning.
9+
- Random events with effects that modify the story or character traits.
10+
- Inventory system for collecting items during the adventure.
11+
- Multiple story nodes with unique scenarios and outcomes.
12+
- Ending variations based on player decisions.
13+
14+
## Usage
15+
16+
1. Make sure you have Python 3 installed.
17+
2. Clone or download this repository to your local machine.
18+
3. Open a terminal or command prompt and navigate to the game directory.
19+
4. Run the script by executing `python ai-storytelling-game.py`.
20+
21+
## How to Play
22+
23+
1. Enter your character's name when prompted.
24+
2. Follow the prompts to make choices at various decision points.
25+
3. Read the story narrative and explore different paths.
26+
4. Pay attention to your character's traits and inventory items, as they can affect the story.
27+
5. Reach different endings based on your choices throughout the game.
28+
29+
## Customization
30+
31+
- To create your own story, modify the `nodes_data` list in the `game.py` script. Each node represents a story point with text, options, and optional effects.
32+
- Customize the effects to add or modify character traits and inventory items.
33+
- Feel free to expand the game by adding more story nodes, events, and endings.
34+
35+
## Dependencies
36+
37+
This game script uses only Python's standard library and doesn't require any external packages.
38+
39+
## Contributing
40+
41+
If you have any ideas, improvements, or bug fixes, feel free to open an issue or submit a pull request. We appreciate your contributions!
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
import random
2+
3+
class StoryNode:
4+
def __init__(self, text, options=None, effects=None):
5+
self.text = text
6+
self.options = options or []
7+
self.effects = effects or {}
8+
9+
class Character:
10+
def __init__(self, name):
11+
self.name = name
12+
self.inventory = []
13+
self.traits = {}
14+
15+
class StoryGame:
16+
def __init__(self):
17+
self.story_map = {}
18+
self.current_node = None
19+
self.player = None
20+
21+
def add_node(self, node_id, text, options=None, effects=None):
22+
self.story_map[node_id] = StoryNode(text, options, effects)
23+
24+
def start(self, node_id):
25+
self.current_node = self.story_map.get(node_id)
26+
27+
def make_choice(self, choice_idx):
28+
if self.current_node and choice_idx < len(self.current_node.options):
29+
next_node_id = self.current_node.options[choice_idx]
30+
self.current_node = self.story_map.get(next_node_id)
31+
32+
def apply_effects(self, effects):
33+
for key, value in effects.items():
34+
if key == "add_item":
35+
self.player.inventory.append(value)
36+
elif key == "add_trait":
37+
self.player.traits[value[0]] = value[1]
38+
39+
def get_current_text(self):
40+
text = self.current_node.text if self.current_node else "Game Over"
41+
if self.current_node.effects:
42+
self.apply_effects(self.current_node.effects)
43+
return text.replace("{name}", self.player.name)
44+
45+
def is_game_over(self):
46+
return not self.current_node
47+
48+
# Create the game
49+
game = StoryGame()
50+
51+
# Create character
52+
player_name = input("Enter your character's name: ")
53+
player = Character(player_name)
54+
game.player = player
55+
56+
nodes_data = [
57+
("start", "You wake up in a mysterious land. Do you explore or rest?", ["explore", "rest"]),
58+
("explore", "You venture deep into the woods and find an old cabin. Do you enter or continue exploring?", ["enter_cabin", "continue_exploring"]),
59+
("rest", "You find a cozy spot and rest for a while. When you wake up, you see a map nearby. Will you follow the map or ignore it?", ["follow_map", "ignore_map"]),
60+
("enter_cabin", "Inside the cabin, you discover a hidden passage. Do you enter the passage or stay in the cabin?", ["enter_passage", "stay_in_cabin"]),
61+
("continue_exploring", "You stumble upon a magical waterfall. Do you drink from it or move on?", ["drink_water", "move_on"]),
62+
("follow_map", "Following the map, you find a hidden treasure. Do you take it or leave it?", ["take_treasure", "leave_treasure"]),
63+
("enter_passage", "The passage leads to an ancient temple. Do you explore further or leave?", ["explore_temple", "leave_temple"]),
64+
("stay_in_cabin", "You find a journal that reveals the history of the land. Do you keep reading or close the journal?", ["keep_reading", "close_journal"]),
65+
("drink_water", "Drinking from the waterfall grants you enhanced senses. Will you use them to uncover secrets or continue your journey?", ["uncover_secrets", "continue_journey"]),
66+
("move_on", "As you move on, you encounter a talking animal. Do you listen to its advice or ignore it?", ["listen_to_animal", "ignore_animal"]),
67+
("enter_passage", "The passage leads to an underground city. Do you explore the city or return to the surface?", ["explore_city", "return_to_surface"]),
68+
("uncover_secrets", "Using your enhanced senses, you find a hidden cave. Do you enter the cave or keep moving?", ["enter_cave", "keep_moving"]),
69+
("listen_to_animal", "The animal warns you of danger ahead. Do you heed its warning or take your chances?", ["heed_warning", "take_chances"]),
70+
("node88", "You come across a portal that leads to another realm. Do you step through or stay?", ["step_through", "stay"]),
71+
("explore_city", "You discover an ancient artifact that can grant a wish. What do you wish for?", ["wish_for_power", "wish_for_wisdom"]),
72+
("return_to_surface", "You emerge from the passage and find yourself in a bustling marketplace. Do you explore or leave?", ["explore_marketplace", "leave_marketplace"]),
73+
("enter_cave", "Inside the cave, you find a friendly spirit. Do you converse with it or leave?", ["converse_with_spirit", "leave_cave"]),
74+
("keep_moving", "You continue your journey and encounter a group of fellow travelers. Do you join them or go your own way?", ["join_travelers", "go_own_way"]),
75+
("heed_warning", "You avoid the danger and find a hidden treasure. What will you do with the treasure?", ["share_treasure", "keep_treasure"]),
76+
("take_chances", "Your gamble pays off, and you uncover a secret passage. Will you enter it or continue?", ["enter_secret_passage", "continue_journey"]),
77+
("step_through", "You step through the portal and find yourself in a futuristic city. How do you navigate this new world?", ["explore_futuristic_city", "find_a_way_back"]),
78+
("stay", "You decide to stay in the current realm, building a new life for yourself.", []),
79+
("explore_marketplace", "In the marketplace, you meet a mysterious merchant. Will you buy a rare item or ignore the merchant?", ["buy_item", "ignore_merchant"]),
80+
("leave_marketplace", "You leave the marketplace and find yourself in a tranquil garden. Do you explore further or rest?", ["explore_garden", "rest_in_garden"]),
81+
("node89", "You face a final challenge. Do you confront it head-on or seek help?", ["confront", "seek_help"]),
82+
("confront", "With courage, you conquer the challenge and become a legend.", []),
83+
("seek_help", "You gather allies and together you overcome the final obstacle.", []),
84+
]
85+
86+
87+
for node_id, text, options, effects in nodes_data:
88+
game.add_node(node_id, text, options, effects)
89+
90+
# Start the game
91+
game.start("start")
92+
93+
# Game loop
94+
while not game.is_game_over():
95+
print(game.get_current_text())
96+
if game.current_node.options:
97+
choice = input("Enter your choice (0 or 1): ")
98+
game.make_choice(int(choice))
99+
else:
100+
break
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
random

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /