X-Git-Url: https://harishankar.org/repos/?p=butaba-adventures.git;a=blobdiff_plain;f=gameobjects.py;h=c9c945ba973b932d8c2fd0b947175dc3b00ab46f;hp=b4992a352eb38238c1028a9e23cad98ad87f2806;hb=58f80c37fa3c97f3cfb2a0cdd3096c529f65e204;hpb=5075eb87b2a41e7f93c81a3ad2cfc1ac94a11314 diff --git a/gameobjects.py b/gameobjects.py index b4992a3..c9c945b 100644 --- a/gameobjects.py +++ b/gameobjects.py @@ -1,18 +1,15 @@ # object classes - classes for game interactive objects -import pygame -import os.path - -import utility # base class for all objects class GameObject: # initialization routine - def __init__ (self, row, col, text, image = None, can_pickup = True): + def __init__ (self, row, col, text, image = None, can_pickup = True, use_str = "Use"): self.row = row self.col = col self.image = image self.text = text self.can_pickup = can_pickup + self.use_str = use_str # override this for interaction, i.e. when character walks into the item def interact (self): @@ -25,12 +22,51 @@ class GameObject: def use (self, otherobject): pass +# class for well +class Well (GameObject): + def __init__ (self, row, col, image=None, liquid = "water"): + self.liquid = liquid + text = "Well" + GameObject.__init__ (self, row, col, text, image, False, "Draw %s" % liquid) + + def interact (self): + return False + + def use (self, otherobject): + # if the object is a bucket, fill it + if isinstance (otherobject, Bucket) is True: + # but only if it is empty + if otherobject.liquid is None: + otherobject.liquid = self.liquid + + +# class for buckets +class Bucket (GameObject): + def __init__ (self, row, col, image=None, liquid = None): + self.liquid = liquid + text = "Bucket" + if liquid is not None: + text = text + " containing %s" % liquid + GameObject.__init__ (self, row, col, text, image, True, "Empty it") + + def interact (self): + return True + + def use (self, otherobject): + # if the other object is a bucket, transfer its + # contents to the other bucket + if isinstance (otherobject, Bucket): + otherobject.liquid = self.liquid + # empty the bucket of its contents + self.liquid = None + self.text = "Bucket" + class GoldCoins (GameObject): # initialize def __init__ (self, row, col, image, value): text = "gold coins" self.value = value - GameObject.__init__ (self, row, col, text, image, False) + GameObject.__init__ (self, row, col, text, image, False, "Take") # no interaction with this object def interact (self): @@ -45,7 +81,7 @@ class HealthPotion (GameObject): # initialize def __init__ (self, row, col, image): text = "health potion" - GameObject.__init__ (self, row, col, text, image, True) + GameObject.__init__ (self, row, col, text, image, True, "Drink") # no interaction with this object def interact (self): @@ -58,11 +94,11 @@ class HealthPotion (GameObject): butaba.health = butaba.MAXHEALTH class Chest (GameObject): - def __init__ (self, row, col, text, image, key_id, locked = False, items = []): + def __init__ (self, row, col, text, image, key_id, locked = False, objects = []): self.key_id = key_id self.locked = locked - self.items = items - GameObject.__init__ (self, row, col, text, image, False) + self.objects = objects + GameObject.__init__ (self, row, col, text, image, False, "Open") # no interaction with this object. Also solid so return False def interact (self):