forked from SVIG/python-bootcamp
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
from abc import ABC, abstractmethod
|
|||
|
|
|
||
|
|
class Simulation(ABC):
|
||
|
|
@abstractmethod
|
||
|
|
def start(self):
|
||
|
|
"Start the simulated object."
|
||
|
|
pass
|
||
|
|
|
||
|
|
@abstractmethod
|
||
|
|
def tick(self) -> bool:
|
||
|
|
"""
|
||
|
|
Simulate one clock tick.
|
||
|
|
Returns:
|
||
|
|
bool: True if the simulation could advance one clock tick, or False if the object is expired.
|
||
|
|
"""
|
||
|
|
pass
|
||
|
|
|
||
|
|
@abstractmethod
|
||
|
|
def get_uses(self):
|
||
|
|
"""
|
||
|
|
Return the uses of the simulated object. These are verb strings which are passed to the `use()` method.
|
||
|
|
Returns:
|
||
|
|
tuple: A dict of key-value pairs, where the keys are strings of
|
||
|
|
verbs to be passed to `use`, and the values are strings explaining
|
||
|
|
what the verb does in English.
|
||
|
|
"""
|
||
|
|
@abstractmethod
|
||
|
|
def use(self, *args, **kwargs):
|
||
|
|
"""
|
||
|
|
Use the simulated object.
|
||
|
|
Args:
|
||
|
|
args (tuple): A tuple of verbs to be used on the object.
|
||
|
|
kwargs (dict): A dictionary of key-value pairs of arguments to the verb(s).
|
||
|
|
Returns:
|
||
|
|
True if the action succeeded, False if the action did not succeed and the object needs to be expired.
|
||
|
|
"""
|
||
|
|
pass
|
||
|
|
|
||
|
|
@abstractmethod
|
||
|
|
def stop(self):
|
||
|
|
"Stop the simulated object."
|
||
|
|
pass
|