133 lines
4.2 KiB
Python
133 lines
4.2 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
class Tamagotchi:
|
|
status = ''
|
|
name = ''
|
|
hunger = []
|
|
happiness = []
|
|
hygiene = []
|
|
sleep = []
|
|
dead = False
|
|
decayspeed = 0
|
|
potential = 0
|
|
power = 0
|
|
recovery = 0
|
|
lifetime = 0
|
|
|
|
def __init__(self, name, hunger, happiness, hygiene, sleep, decayspeed, potential, recovery, lifetime):
|
|
self.name = name
|
|
self.hunger = [hunger, hunger]
|
|
self.happiness = [happiness, happiness]
|
|
self.hygiene = [hygiene, hygiene]
|
|
self.sleep = [sleep, sleep]
|
|
self.dead = False
|
|
self.status = 'Idle'
|
|
self.decayspeed = decayspeed
|
|
self.potential = potential
|
|
self.power = potential
|
|
self.recovery = recovery
|
|
self.lifetime = lifetime
|
|
|
|
def feed_other(self, tamagotchi):
|
|
self.status = 'Working'
|
|
tamagotchi.status = 'Eating'
|
|
|
|
def play_with(self, tamagotchi):
|
|
self.status = 'Working'
|
|
tamagotchi.status = 'Playing'
|
|
|
|
def wash_other(self,tamagotchi):
|
|
self.status = 'Working'
|
|
tamagotchi.status = 'Bathing'
|
|
|
|
def update_stat(self,stat,recovering):
|
|
if recovering:
|
|
if stat[0] >= stat[1]:
|
|
self.status = 'Idle'
|
|
if stat[0] >= stat[1] - self.recovery:
|
|
stat[0] = stat[1]
|
|
self.status = 'Idle'
|
|
else:
|
|
stat[0] += self.recovery
|
|
else:
|
|
if stat[0] <= 0 + self.decayspeed:
|
|
stat[0] = 0
|
|
else:
|
|
stat[0] -= self.decayspeed
|
|
|
|
def update_status(self):
|
|
if not self.dead:
|
|
if self.hunger[0] <= 0:
|
|
self.status = 'Dead'
|
|
self.dead = True
|
|
if self.lifetime <= 0:
|
|
self.status = 'Dead'
|
|
self.dead = True
|
|
if self.sleep[0] <= 0:
|
|
self.status = 'Sleeping'
|
|
if self.status is 'Working':
|
|
if self.power <= 0:
|
|
self.status = 'Idle'
|
|
self.power = self.potential
|
|
else:
|
|
self.power -= 1
|
|
|
|
def step(self):
|
|
self.update_status()
|
|
self.lifetime -= 1
|
|
|
|
if self.status is 'Eating':
|
|
self.update_stat(self.hunger,True)
|
|
else:
|
|
self.update_stat(self.hunger,False)
|
|
|
|
if self.status is 'Sleeping':
|
|
self.update_stat(self.sleep,True)
|
|
else:
|
|
self.update_stat(self.sleep,False)
|
|
|
|
if self.status is 'Bathing':
|
|
self.update_stat(self.hygiene,True)
|
|
else:
|
|
self.update_stat(self.hygiene,False)
|
|
|
|
if self.status is 'Playing':
|
|
self.update_stat(self.happiness,True)
|
|
else:
|
|
self.update_stat(self.happiness,False)
|
|
|
|
def is_dead(self):
|
|
if self.dead:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
def percentage(self, part, whole):
|
|
return 100 * float(part)/float(whole)
|
|
|
|
def status_abs(self):
|
|
rtn = '{0:15}'.format(self.name)
|
|
rtn += '{0:10}'.format(self.status)
|
|
rtn += 'Hunger: {0:10}'.format(str(self.hunger[0]) + '/' + str(self.hunger[1]))
|
|
rtn += 'Happiness: {0:10}'.format(str(self.happiness[0]) + '/' + str(self.happiness[1]))
|
|
rtn += 'Hygiene: {0:10}'.format(str(self.hygiene[0]) + '/' + str(self.hygiene[1]))
|
|
rtn += 'Sleep: {0:10}'.format(str(self.sleep[0]) + '/' + str(self.sleep[1]))
|
|
rtn += '\n'
|
|
return rtn
|
|
|
|
def status_pct(self):
|
|
hunger_pct = '%.0f%%' %(self.percentage(self.hunger[0], self.hunger[1]))
|
|
happiness_pct = '%.0f%%' %self.percentage(self.happiness[0], self.happiness[1])
|
|
hygiene_pct = '%.0f%%' %self.percentage(self.hygiene[0], self.hygiene[1])
|
|
sleep_pct = '%.0f%%' %self.percentage(self.sleep[0], self.sleep[1])
|
|
|
|
rtn = '{0:20}'.format(self.name)
|
|
rtn += '{0:10}'.format(self.status)
|
|
rtn += 'Hunger: {0:5}'.format(hunger_pct)
|
|
rtn += 'Happiness: {0:5}'.format(happiness_pct)
|
|
rtn += 'Hygiene: {0:5}'.format(hygiene_pct)
|
|
rtn += 'Sleep: {0:5}'.format(sleep_pct)
|
|
rtn += '\n'
|
|
return rtn
|