from random import choice, randrange ########################################################################## ############################## klassen Husdjur ######################### ########################################################################## class Husdjur(object): """ Ett virtuellt husdjur """ def __init__(self, namn1="", namn2=""): """Ger husdjurets attribut slumpade värden""" self.namnet = choice("BCFKR" )+choice("iouy")+\ choice("nst")*2+choice("aey") if namn1: self.namnet = namn1 + "-" + namn2 + "-" + self.namnet self.__glad = randrange(10) self.__hunger = randrange(3) self.__kon = choice(("hona","hane")) self.__preferens = choice(("samma","annat")) def namn(self): """Åtkomstmetod för namnet""" return self.namnet def bytNamn(self, nyttNamn): """Ändringsmetod för namnet""" self.namnet = nyttNamn def kontakt(self, kompis): """Testar om kontakt uppstår mellan detta husdjur och dess kompis""" if (self.__kon == kompis.__kon): if (self.__preferens == "samma") and (kompis.__preferens == "samma"): print("Puss!") return True elif (self.__kon != kompis.__kon): if (self.__preferens == "annat") and (kompis.__preferens == "annat"): print("Puss!") return True else: return False def __str__(self): """Returnerar en sträng som beskriver husdjuret""" beskrivning = self.namnet + " är " if self.__glad > 5: beskrivning += "glad: (^_^)" else: beskrivning += "ledsen: (T_T)" if self.__hunger > 3: beskrivning += " och hungrig!" else: beskrivning += " och mätt." return beskrivning def banna(self): """ Ger husdjuret bannor. Glad minskar.""" print("- Fy på dig", self.namnet, "!") self.__glad -= 3 def mata(self, mat): """Ger husdjuret mat. Hunger minskar.""" for i in range(mat): print("GLUFS", end = " ") print self.__hunger -= mat def leka(self): """Leker med husdjuret. glad och hunger ökar""" self.__glad += 1 print("\n~~~~~~~~~~~ WHEEEEEEE! ~~~~~~~~~~~") self.__hunger += 3 def avsked(self): """Tar avsked.""" print("Hejdå,", self.namnet, "kommer att sakna dig!") ########################################################################## ############################## klassen Bur ########################### ########################################################################## class Bur(object): # Flera virtuella husdjur i en bur def __init__(self, n): """Skapar en lista med n stycken Husdjur""" self.__lista = [] for i in range(n): self.__lista.append(Husdjur()) def banna(self): """Skäller på alla djur""" for djur in self.__lista: djur.banna() def mata(self, bullar): """Ger varje djur bullar""" for djur in self.__lista: djur.mata(bullar) def leka(self): """Leker med varje djur""" for djur in self.__lista: djur.leka() def mingel(self): """Låter husdjuren träffas och ev föröka sig""" print("Nu är det mingel i Buren!") n = len(self.__lista) for i in range(n): djur1 = self.__lista[i] for j in range(i+1,n): djur2 = self.__lista[j] if djur1 != djur2 and djur1.kontakt(djur2): self.__lista.append(Husdjur(djur1.namn(),djur2.namn())) def visa(self): """Visar alla husdjur i Buren""" n = len(self.__lista) print("\n*** Det finns", n, "husdjur i Buren: ***") for djur in self.__lista: print(djur) print("******************************************\n") def avsked(self): for djur in self.__lista: djur.avsked() ########################################################################## ############################## funktionen main() ######################### ########################################################################## def main(): n = int(input("Hur många husdjur vill du ha? ")) buren = Bur(n) buren.visa() svar = input(" Vill du att dina husdjur ska \n bannas \n få mat \n leka \n mingla? " ) while svar: if svar[0]=="f": bullar = int(input("Hur många bullar var? ")) buren.mata(bullar) elif svar[0]=="b": buren.banna() elif svar[0]=="l": buren.leka() elif svar[0]=="m": buren.mingel() else: print("Hursa? ") buren.visa() svar = input(" Vill du att dina husdjur ska \n bannas \n få mat \n leka \n mingla? " ) buren.avsked() main()