Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- os.system("cls")
- class Gamestate:
- def __init__(self):
- self.rooms = {}
- self.import_rooms()
- self.commands = {}
- self.make_commands()
- self.items = {}
- self.make_items()
- self.player = Player(name="blank", health=100, damage=15, location=1, work_experiance=0, money=0, items=[])
- self.get_player_room()
- self.configure_rooms()
- self.import_items()
- def eat_food(self, user_input):
- for item in self.player.items:
- item_split = item.name.lower().split()
- x = 0
- for word in user_input:
- for name in item_split:
- if word == name:
- x += 1
- if x == len(item_split):
- if item.type == "Food":
- self.player.health += item.health
- print("\nYou ate %s your health has increased by %d" % (item.name, item.health))
- self.player.items.remove(item)
- def print_items(self, user_input):
- if self.player.location.items != None:
- print("\n[%s Items]" % (self.player.location.general_location))
- print("-" * 50)
- for item in self.player.location.items:
- item = self.player.location.items[item]
- if item.type == "Gun":
- print("Name: %s\tDamage: %d\tPrice: %d" % (item.name, item.damage, item.price))
- if item.type == "Food":
- print("Name: %s\tHealth: %d\tPrice: %d" % (item.name, item.health, item.price))
- print("-" * 50)
- def import_items(self):
- for room in self.rooms.keys():
- if self.rooms[room].general_location == "Gun Store":
- ak47 = self.items["ak47"]
- ar15 = self.items["ar15"]
- self.rooms[room].items = {ak47: ak47, ar15: ar15}
- if self.rooms[room].general_location == "Grocery Store":
- carrots = self.items["carrots"]
- fish = self.items["fish"]
- salad = self.items["salad"]
- self.rooms[room].items = {carrots: carrots, fish: fish, salad: salad}
- if self.rooms[room].general_location == "Pizza Place":
- cheese_pizza = self.items["cheese pizza"]
- hawaiian_pizza = self.items["hawaiian pizza"]
- self.rooms[room].items = {cheese_pizza: cheese_pizza, hawaiian_pizza: hawaiian_pizza}
- def make_items(self):
- self.items = {"ak47": Item(name="AK-47", price=700, damage=55, type="Gun"),
- "ar15": Item(name="AR-15", price=500, damage=45, type="Gun"),
- "carrots": Item(name="Carrots", price=2, health=3, type="Food"),
- "fish": Item(name="Fish", price=10, health=15, type="Food"),
- "salad": Item(name="Salad", price=5, health=10, type="Food"),
- "cheese pizza": Item(name="Cheese Pizza", price=12, health=15, type="Food"),
- "hawaiian pizza": Item(name="Hawaiian Pizza", price=15, health=15, type="Food")}
- def work(self, user_input):
- if self.player.location.general_location == "Pizza Place":
- if self.player.work_experiance >= 0:
- work_shift = 60
- print("\n[Work]")
- print("you just made $%d today" % work_shift)
- self.player.money += work_shift
- work_experiance = 5
- print("you gained %d work experiance" % work_experiance)
- self.player.work_experiance += work_experiance
- if self.player.location.general_location == "Gun Store":
- if self.player.work_experiance >= 40:
- work_shift = 100
- print("\n[Work]")
- print("you just made $%d today" % work_shift)
- self.player.money += work_shift
- work_experiance = 20
- print("you gained %d work experiance" % work_experiance)
- self.player.work_experiance += work_experiance
- else:
- print("\nsorry you need atleast 40 work experiance to work here")
- if self.player.location.general_location == "Hospital":
- if self.player.work_experiance >= 500:
- work_shift = 250
- print("\n[Work]")
- print("you just made $%d today" % work_shift)
- self.player.money += work_shift
- work_experiance = 50
- print("you gained %d work experiance" % work_experiance)
- self.player.work_experiance += work_experiance
- if self.player.location.general_location == "Bank":
- if self.player.work_experiance >= 120:
- work_shift = 150
- print("\n[Work]")
- print("you just made $%d today" % work_shift)
- self.player.money += work_shift
- work_experiance = 30
- print("you gained %d work experiance" % work_experiance)
- self.player.work_experiance += work_experiance
- if self.player.location.general_location == "Grocery Store":
- if self.player.work_experiance >= 15:
- work_shift = 80
- print("\n[Work]")
- print("you just made $%d today" % work_shift)
- self.player.money += work_shift
- work_experiance = 20
- print("you gained %d work experiance" % work_experiance)
- self.player.work_experiance += work_experiance
- def print_player_stats(self):
- print("\n[Player Stats]")
- print("Name: %s\nHealth: %d\nDamage: %d\nWork experiance: %d\nMoney: %d" % (self.player.name, self.player.health, self.player.damage, self.player.work_experiance, self.player.money))
- if len(self.player.items) != 0:
- print("\n[Player Items]")
- print("-" * 50)
- for item in self.player.items:
- if item.type == "Gun":
- print("Name: %s\tDamage: %d" % (item.name, item.damage))
- if item.type == "Food":
- print("Name: %s\tHealth: %d" % (item.name, item.health))
- print("-" * 50)
- def print_stats(self):
- print("\nin the print stats method")
- def buy_item(self, user_input):
- if self.player.location.items != None:
- for item in self.player.location.items.keys():
- name_split = item.name.lower().split()
- x = 0
- for word in user_input:
- for name in name_split:
- if word == name:
- x += 1
- if x == len(name_split):
- if self.player.money >= item.price:
- print("\n%s has been added to your items" % item.name)
- self.player.items.append(item)
- self.player.money -= item.price
- else:
- print("\nyou cannot afford the %s" % item.name)
- def make_commands(self):
- self.commands = {"go": Commands(name="go", function=self.going_places, type="movement", description="To go to places"),
- "north": Commands(name="go", function=self.going_places, type="movement", description="To move to a north room"),
- "stats": Commands(name="stats", function=self.print_stats, type="verbosity", description="the print the stats of something"),
- "player": Commands(name="player", function=self.print_player_stats, type="verbosity", description="to print the players stats"),
- "work": Commands(name="work", function=self.work, type="work", description="to try and work a job"),
- "items": Commands(name="items", function=self.print_items, type="verbosity", description="To view the items of someone or someplace"),
- "buy": Commands(name="buy", function=self.buy_item, type="purchase", description="To buy an item")}
- def configure_rooms(self):
- # configure north south east and west
- for room in self.rooms.keys():
- exits = []
- nsew = self.rooms[room].nsew
- for number in nsew:
- exits.append(int(number))
- self.rooms[room].nsew = exits
- for room in self.rooms.keys():
- north = self.rooms[room].nsew[0]
- south = self.rooms[room].nsew[1]
- east = self.rooms[room].nsew[2]
- west = self.rooms[room].nsew[3]
- self.rooms[room].north = north
- self.rooms[room].south = south
- self.rooms[room].east = east
- self.rooms[room].west = west
- # working on exits now
- for room in self.rooms.keys():
- exits = []
- for exit in self.rooms[room].exits:
- exits.append(int(exit))
- self.rooms[room].exits = exits
- def going_places(self, user_input):
- if "north" in user_input:
- if self.player.location.north != 0:
- for room in self.rooms.keys():
- if self.player.location.north == self.rooms[room].rnum:
- self.player.location = self.rooms[room]
- if "south" in user_input:
- if self.player.location.south != 0:
- for room in self.rooms.keys():
- if self.player.location.south == self.rooms[room].rnum:
- self.player.location = self.rooms[room]
- if "east" in user_input:
- if self.player.location.east != 0:
- for room in self.rooms.keys():
- if self.player.location.east == self.rooms[room].rnum:
- self.player.location = self.rooms[room]
- if "west" in user_input:
- if self.player.location.west != 0:
- for room in self.rooms.keys():
- if self.player.location.west == self.rooms[room].rnum:
- self.player.location = self.rooms[room]
- # lets see if the user entered a room name instead of north south east or west
- if self.player.location.north != 0:
- for room in self.rooms.keys():
- if self.player.location.north == self.rooms[room].rnum:
- room_name = self.rooms[room].rname.lower().split()
- x = 0
- for word in user_input:
- for name in room_name:
- if word == name:
- x += 1
- if x == len(room_name):
- self.player.location = self.rooms[room]
- if self.player.location.south != 0:
- for room in self.rooms.keys():
- if self.player.location.south == self.rooms[room].rnum:
- room_name = self.rooms[room].rname.lower().split()
- x = 0
- for word in user_input:
- for name in room_name:
- if word == name:
- x += 1
- if x == len(room_name):
- self.player.location = self.rooms[room]
- if self.player.location.east != 0:
- for room in self.rooms.keys():
- if self.player.location.east == self.rooms[room].rnum:
- room_name = self.rooms[room].rname.lower().split()
- x = 0
- for word in user_input:
- for name in room_name:
- if word == name:
- x += 1
- if x == len(room_name):
- self.player.location = self.rooms[room]
- if self.player.location.west != 0:
- for room in self.rooms.keys():
- if self.player.location.west == self.rooms[room].rnum:
- room_name = self.rooms[room].rname.lower().split()
- x = 0
- for word in user_input:
- for name in room_name:
- if word == name:
- x += 1
- if x == len(room_name):
- self.player.location = self.rooms[room]
- # lets assume the user wanted to enter an exit location
- if self.player.location.exits[0] != 0:
- for exit in self.player.location.exits:
- for room in self.rooms.keys():
- if exit == self.rooms[room].rnum:
- exit_name = self.rooms[room].rname.lower().split()
- x = 0
- for word in user_input:
- for name in exit_name:
- if word == name:
- x += 1
- if x == len(exit_name):
- self.player.location = self.rooms[room]
- general_name = self.rooms[room].general_location.lower().split()
- z = 0
- for word in user_input:
- for name in general_name:
- if word == name:
- z += 1
- if z == len(general_name):
- self.player.location = self.rooms[room]
- def get_player_room(self):
- for room in self.rooms.keys():
- if self.player.location == self.rooms[room].rnum:
- self.player.location = self.rooms[room]
- def take_input(self):
- user_input = input("\nCommand: ").lower().split()
- self.going_places(user_input)
- if "player" in user_input:
- self.print_player_stats()
- if "work" in user_input:
- self.work(user_input)
- if "items" in user_input:
- self.print_items(user_input)
- if "buy" in user_input:
- self.buy_item(user_input)
- if "eat" in user_input:
- self.eat_food(user_input)
- def do_look(self):
- # printing out the current room
- print("\n[Location]")
- print("Room name: %s" % (self.player.location.rname))
- print("Room description: %s" % (self.player.location.rdesc))
- # print the exits of leaving general location
- if self.player.location.exits[0] != 0:
- print("\n[Exits]")
- for room in self.rooms.keys():
- for exit in self.player.location.exits:
- if exit == self.rooms[room].rnum:
- print("%s: %s" % (self.rooms[room].general_location, self.rooms[room].rname))
- # print the room exits
- print("\n[Room Exits]")
- if self.player.location.north != 0:
- for room in self.rooms.keys():
- if self.player.location.north == self.rooms[room].rnum:
- print("North: %s" % (self.rooms[room].rname))
- if self.player.location.south != 0:
- for room in self.rooms.keys():
- if self.player.location.south == self.rooms[room].rnum:
- print("South: %s" % (self.rooms[room].rname))
- if self.player.location.east != 0:
- for room in self.rooms.keys():
- if self.player.location.east == self.rooms[room].rnum:
- print("East: %s" % (self.rooms[room].rname))
- if self.player.location.west != 0:
- for room in self.rooms.keys():
- if self.player.location.west == self.rooms[room].rnum:
- print("West: %s" % (self.rooms[room].rname))
- def import_rooms(self):
- f = open("rooms.txt", "r")
- lines = f.readlines()
- loop = 0
- while loop <= len(lines) - 1:
- self.rooms[lines[loop+1]] = Room(rnum=int(lines[loop]), rname=lines[loop+1].strip("\n"), rdesc=lines[loop+2].strip("\n"), general_location=lines[loop+3].strip("\n"), nsew=lines[loop+4].split(), exits=lines[loop+5].split())
- loop += 6
- class Item:
- def __init__(self, name, health=None, price=None, damage=None, type=None):
- self.name = name
- self.health = health
- self.price = price
- self.damage = damage
- self.type = type
- class Commands:
- def __init__(self, name, function, type, description):
- self.name = name
- self.function = function
- self.type = type
- self.description = description
- class Player:
- def __init__(self, name, health, damage, location, work_experiance, money, items):
- self.name = name
- self.health = health
- self.damage = damage
- self.location = location
- self.work_experiance = work_experiance
- self.money = money
- self.items = items
- class Room:
- def __init__(self, rnum=None, rname=None, rdesc=None, general_location=None, nsew=None, north=None, south=None, east=None, west=None, exits=None, items=None, type=None):
- self.rnum = rnum
- self.rname = rname
- self.rdesc = rdesc
- self.general_location = general_location
- self.nsew = nsew
- self.north = north
- self.south = south
- self.east = east
- self.west = west
- self.exits = exits
- self.items = items
- self.type = type
- gamestate = Gamestate()
- def main():
- gamestate.player.name = input("\nWhats your name?\nName: ")
- print("\nThank you for playing my game %s" % (gamestate.player.name))
- while True:
- gamestate.do_look()
- gamestate.take_input()
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement