Advertisement
Guest User

game.py

a guest
Feb 25th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.01 KB | None | 0 0
  1. import os
  2.  
  3. os.system("cls")
  4.  
  5. class Gamestate:
  6. def __init__(self):
  7. self.rooms = {}
  8. self.import_rooms()
  9. self.commands = {}
  10. self.make_commands()
  11. self.items = {}
  12. self.make_items()
  13. self.player = Player(name="blank", health=100, damage=15, location=1, work_experiance=0, money=0, items=[])
  14. self.get_player_room()
  15. self.configure_rooms()
  16. self.import_items()
  17.  
  18. def eat_food(self, user_input):
  19. for item in self.player.items:
  20. item_split = item.name.lower().split()
  21. x = 0
  22. for word in user_input:
  23. for name in item_split:
  24. if word == name:
  25. x += 1
  26. if x == len(item_split):
  27. if item.type == "Food":
  28. self.player.health += item.health
  29. print("\nYou ate %s your health has increased by %d" % (item.name, item.health))
  30. self.player.items.remove(item)
  31.  
  32. def print_items(self, user_input):
  33. if self.player.location.items != None:
  34. print("\n[%s Items]" % (self.player.location.general_location))
  35. print("-" * 50)
  36. for item in self.player.location.items:
  37. item = self.player.location.items[item]
  38. if item.type == "Gun":
  39. print("Name: %s\tDamage: %d\tPrice: %d" % (item.name, item.damage, item.price))
  40. if item.type == "Food":
  41. print("Name: %s\tHealth: %d\tPrice: %d" % (item.name, item.health, item.price))
  42. print("-" * 50)
  43.  
  44. def import_items(self):
  45. for room in self.rooms.keys():
  46. if self.rooms[room].general_location == "Gun Store":
  47. ak47 = self.items["ak47"]
  48. ar15 = self.items["ar15"]
  49. self.rooms[room].items = {ak47: ak47, ar15: ar15}
  50.  
  51. if self.rooms[room].general_location == "Grocery Store":
  52. carrots = self.items["carrots"]
  53. fish = self.items["fish"]
  54. salad = self.items["salad"]
  55. self.rooms[room].items = {carrots: carrots, fish: fish, salad: salad}
  56.  
  57. if self.rooms[room].general_location == "Pizza Place":
  58. cheese_pizza = self.items["cheese pizza"]
  59. hawaiian_pizza = self.items["hawaiian pizza"]
  60. self.rooms[room].items = {cheese_pizza: cheese_pizza, hawaiian_pizza: hawaiian_pizza}
  61.  
  62.  
  63. def make_items(self):
  64. self.items = {"ak47": Item(name="AK-47", price=700, damage=55, type="Gun"),
  65. "ar15": Item(name="AR-15", price=500, damage=45, type="Gun"),
  66. "carrots": Item(name="Carrots", price=2, health=3, type="Food"),
  67. "fish": Item(name="Fish", price=10, health=15, type="Food"),
  68. "salad": Item(name="Salad", price=5, health=10, type="Food"),
  69. "cheese pizza": Item(name="Cheese Pizza", price=12, health=15, type="Food"),
  70. "hawaiian pizza": Item(name="Hawaiian Pizza", price=15, health=15, type="Food")}
  71.  
  72. def work(self, user_input):
  73. if self.player.location.general_location == "Pizza Place":
  74. if self.player.work_experiance >= 0:
  75. work_shift = 60
  76. print("\n[Work]")
  77. print("you just made $%d today" % work_shift)
  78. self.player.money += work_shift
  79. work_experiance = 5
  80. print("you gained %d work experiance" % work_experiance)
  81. self.player.work_experiance += work_experiance
  82. if self.player.location.general_location == "Gun Store":
  83. if self.player.work_experiance >= 40:
  84. work_shift = 100
  85. print("\n[Work]")
  86. print("you just made $%d today" % work_shift)
  87. self.player.money += work_shift
  88. work_experiance = 20
  89. print("you gained %d work experiance" % work_experiance)
  90. self.player.work_experiance += work_experiance
  91. else:
  92. print("\nsorry you need atleast 40 work experiance to work here")
  93. if self.player.location.general_location == "Hospital":
  94. if self.player.work_experiance >= 500:
  95. work_shift = 250
  96. print("\n[Work]")
  97. print("you just made $%d today" % work_shift)
  98. self.player.money += work_shift
  99. work_experiance = 50
  100. print("you gained %d work experiance" % work_experiance)
  101. self.player.work_experiance += work_experiance
  102. if self.player.location.general_location == "Bank":
  103. if self.player.work_experiance >= 120:
  104. work_shift = 150
  105. print("\n[Work]")
  106. print("you just made $%d today" % work_shift)
  107. self.player.money += work_shift
  108. work_experiance = 30
  109. print("you gained %d work experiance" % work_experiance)
  110. self.player.work_experiance += work_experiance
  111. if self.player.location.general_location == "Grocery Store":
  112. if self.player.work_experiance >= 15:
  113. work_shift = 80
  114. print("\n[Work]")
  115. print("you just made $%d today" % work_shift)
  116. self.player.money += work_shift
  117. work_experiance = 20
  118. print("you gained %d work experiance" % work_experiance)
  119. self.player.work_experiance += work_experiance
  120.  
  121. def print_player_stats(self):
  122. print("\n[Player Stats]")
  123. 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))
  124.  
  125. if len(self.player.items) != 0:
  126. print("\n[Player Items]")
  127. print("-" * 50)
  128. for item in self.player.items:
  129. if item.type == "Gun":
  130. print("Name: %s\tDamage: %d" % (item.name, item.damage))
  131. if item.type == "Food":
  132. print("Name: %s\tHealth: %d" % (item.name, item.health))
  133. print("-" * 50)
  134.  
  135. def print_stats(self):
  136. print("\nin the print stats method")
  137.  
  138. def buy_item(self, user_input):
  139. if self.player.location.items != None:
  140. for item in self.player.location.items.keys():
  141. name_split = item.name.lower().split()
  142. x = 0
  143. for word in user_input:
  144. for name in name_split:
  145. if word == name:
  146. x += 1
  147.  
  148. if x == len(name_split):
  149. if self.player.money >= item.price:
  150. print("\n%s has been added to your items" % item.name)
  151. self.player.items.append(item)
  152. self.player.money -= item.price
  153. else:
  154. print("\nyou cannot afford the %s" % item.name)
  155.  
  156. def make_commands(self):
  157. self.commands = {"go": Commands(name="go", function=self.going_places, type="movement", description="To go to places"),
  158. "north": Commands(name="go", function=self.going_places, type="movement", description="To move to a north room"),
  159. "stats": Commands(name="stats", function=self.print_stats, type="verbosity", description="the print the stats of something"),
  160. "player": Commands(name="player", function=self.print_player_stats, type="verbosity", description="to print the players stats"),
  161. "work": Commands(name="work", function=self.work, type="work", description="to try and work a job"),
  162. "items": Commands(name="items", function=self.print_items, type="verbosity", description="To view the items of someone or someplace"),
  163. "buy": Commands(name="buy", function=self.buy_item, type="purchase", description="To buy an item")}
  164.  
  165. def configure_rooms(self):
  166. # configure north south east and west
  167. for room in self.rooms.keys():
  168. exits = []
  169. nsew = self.rooms[room].nsew
  170. for number in nsew:
  171. exits.append(int(number))
  172. self.rooms[room].nsew = exits
  173.  
  174. for room in self.rooms.keys():
  175. north = self.rooms[room].nsew[0]
  176. south = self.rooms[room].nsew[1]
  177. east = self.rooms[room].nsew[2]
  178. west = self.rooms[room].nsew[3]
  179. self.rooms[room].north = north
  180. self.rooms[room].south = south
  181. self.rooms[room].east = east
  182. self.rooms[room].west = west
  183.  
  184. # working on exits now
  185. for room in self.rooms.keys():
  186. exits = []
  187. for exit in self.rooms[room].exits:
  188. exits.append(int(exit))
  189. self.rooms[room].exits = exits
  190.  
  191. def going_places(self, user_input):
  192. if "north" in user_input:
  193. if self.player.location.north != 0:
  194. for room in self.rooms.keys():
  195. if self.player.location.north == self.rooms[room].rnum:
  196. self.player.location = self.rooms[room]
  197. if "south" in user_input:
  198. if self.player.location.south != 0:
  199. for room in self.rooms.keys():
  200. if self.player.location.south == self.rooms[room].rnum:
  201. self.player.location = self.rooms[room]
  202. if "east" in user_input:
  203. if self.player.location.east != 0:
  204. for room in self.rooms.keys():
  205. if self.player.location.east == self.rooms[room].rnum:
  206. self.player.location = self.rooms[room]
  207. if "west" in user_input:
  208. if self.player.location.west != 0:
  209. for room in self.rooms.keys():
  210. if self.player.location.west == self.rooms[room].rnum:
  211. self.player.location = self.rooms[room]
  212. # lets see if the user entered a room name instead of north south east or west
  213. if self.player.location.north != 0:
  214. for room in self.rooms.keys():
  215. if self.player.location.north == self.rooms[room].rnum:
  216. room_name = self.rooms[room].rname.lower().split()
  217. x = 0
  218. for word in user_input:
  219. for name in room_name:
  220. if word == name:
  221. x += 1
  222. if x == len(room_name):
  223. self.player.location = self.rooms[room]
  224. if self.player.location.south != 0:
  225. for room in self.rooms.keys():
  226. if self.player.location.south == self.rooms[room].rnum:
  227. room_name = self.rooms[room].rname.lower().split()
  228. x = 0
  229. for word in user_input:
  230. for name in room_name:
  231. if word == name:
  232. x += 1
  233. if x == len(room_name):
  234. self.player.location = self.rooms[room]
  235. if self.player.location.east != 0:
  236. for room in self.rooms.keys():
  237. if self.player.location.east == self.rooms[room].rnum:
  238. room_name = self.rooms[room].rname.lower().split()
  239. x = 0
  240. for word in user_input:
  241. for name in room_name:
  242. if word == name:
  243. x += 1
  244. if x == len(room_name):
  245. self.player.location = self.rooms[room]
  246. if self.player.location.west != 0:
  247. for room in self.rooms.keys():
  248. if self.player.location.west == self.rooms[room].rnum:
  249. room_name = self.rooms[room].rname.lower().split()
  250. x = 0
  251. for word in user_input:
  252. for name in room_name:
  253. if word == name:
  254. x += 1
  255. if x == len(room_name):
  256. self.player.location = self.rooms[room]
  257. # lets assume the user wanted to enter an exit location
  258. if self.player.location.exits[0] != 0:
  259. for exit in self.player.location.exits:
  260. for room in self.rooms.keys():
  261. if exit == self.rooms[room].rnum:
  262. exit_name = self.rooms[room].rname.lower().split()
  263. x = 0
  264. for word in user_input:
  265. for name in exit_name:
  266. if word == name:
  267. x += 1
  268. if x == len(exit_name):
  269. self.player.location = self.rooms[room]
  270. general_name = self.rooms[room].general_location.lower().split()
  271. z = 0
  272. for word in user_input:
  273. for name in general_name:
  274. if word == name:
  275. z += 1
  276. if z == len(general_name):
  277. self.player.location = self.rooms[room]
  278.  
  279. def get_player_room(self):
  280. for room in self.rooms.keys():
  281. if self.player.location == self.rooms[room].rnum:
  282. self.player.location = self.rooms[room]
  283.  
  284. def take_input(self):
  285. user_input = input("\nCommand: ").lower().split()
  286. self.going_places(user_input)
  287.  
  288. if "player" in user_input:
  289. self.print_player_stats()
  290. if "work" in user_input:
  291. self.work(user_input)
  292. if "items" in user_input:
  293. self.print_items(user_input)
  294. if "buy" in user_input:
  295. self.buy_item(user_input)
  296. if "eat" in user_input:
  297. self.eat_food(user_input)
  298.  
  299.  
  300. def do_look(self):
  301. # printing out the current room
  302. print("\n[Location]")
  303. print("Room name: %s" % (self.player.location.rname))
  304. print("Room description: %s" % (self.player.location.rdesc))
  305.  
  306. # print the exits of leaving general location
  307. if self.player.location.exits[0] != 0:
  308. print("\n[Exits]")
  309. for room in self.rooms.keys():
  310. for exit in self.player.location.exits:
  311. if exit == self.rooms[room].rnum:
  312. print("%s: %s" % (self.rooms[room].general_location, self.rooms[room].rname))
  313.  
  314. # print the room exits
  315. print("\n[Room Exits]")
  316. if self.player.location.north != 0:
  317. for room in self.rooms.keys():
  318. if self.player.location.north == self.rooms[room].rnum:
  319. print("North: %s" % (self.rooms[room].rname))
  320. if self.player.location.south != 0:
  321. for room in self.rooms.keys():
  322. if self.player.location.south == self.rooms[room].rnum:
  323. print("South: %s" % (self.rooms[room].rname))
  324. if self.player.location.east != 0:
  325. for room in self.rooms.keys():
  326. if self.player.location.east == self.rooms[room].rnum:
  327. print("East: %s" % (self.rooms[room].rname))
  328. if self.player.location.west != 0:
  329. for room in self.rooms.keys():
  330. if self.player.location.west == self.rooms[room].rnum:
  331. print("West: %s" % (self.rooms[room].rname))
  332.  
  333.  
  334. def import_rooms(self):
  335. f = open("rooms.txt", "r")
  336. lines = f.readlines()
  337.  
  338. loop = 0
  339.  
  340. while loop <= len(lines) - 1:
  341. 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())
  342. loop += 6
  343.  
  344. class Item:
  345. def __init__(self, name, health=None, price=None, damage=None, type=None):
  346. self.name = name
  347. self.health = health
  348. self.price = price
  349. self.damage = damage
  350. self.type = type
  351.  
  352. class Commands:
  353. def __init__(self, name, function, type, description):
  354. self.name = name
  355. self.function = function
  356. self.type = type
  357. self.description = description
  358.  
  359. class Player:
  360. def __init__(self, name, health, damage, location, work_experiance, money, items):
  361. self.name = name
  362. self.health = health
  363. self.damage = damage
  364. self.location = location
  365. self.work_experiance = work_experiance
  366. self.money = money
  367. self.items = items
  368.  
  369. class Room:
  370. 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):
  371. self.rnum = rnum
  372. self.rname = rname
  373. self.rdesc = rdesc
  374. self.general_location = general_location
  375. self.nsew = nsew
  376. self.north = north
  377. self.south = south
  378. self.east = east
  379. self.west = west
  380. self.exits = exits
  381. self.items = items
  382. self.type = type
  383.  
  384. gamestate = Gamestate()
  385.  
  386. def main():
  387. gamestate.player.name = input("\nWhats your name?\nName: ")
  388. print("\nThank you for playing my game %s" % (gamestate.player.name))
  389. while True:
  390. gamestate.do_look()
  391. gamestate.take_input()
  392.  
  393. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement