The "pet program"

It shebangs a python script that re-generates the file. Quine FTW

1
2
3
4
5
6
7
8
#!./chanogachi.py
{
  "hunger_speed": 0.08333333333333333,
  "max_hunger": 25,
  "hunger": 15,
  "dead": false,
  "last_interaction": 1709780499.000271
}

Interpreter Script

#!/usr/bin/env python3
# copyrights are stupid
# steal my code. commit crime.

from datetime import datetime, timedelta
from dataclasses import dataclass, asdict
import json

@dataclass
class ChanogachiData:
    hunger_speed: float # in hunger points per second
    max_hunger: int # how hungry this thing can get
    hunger: int = 0
    dead: bool = False
    last_interaction: int | None = None

def process_chanogachi(data: ChanogachiData):
    now = datetime.now()
    if data.last_interaction:
        last_interaction = datetime.fromtimestamp(data.last_interaction)
    else:
        last_interaction = now
    time_elapsed = now - last_interaction
    hunger_gained = data.hunger_speed * (time_elapsed / timedelta(seconds=1))
    if not data.dead:
        data.hunger += hunger_gained 
    if data.hunger > data.max_hunger:
        data.dead = True
    if not data.dead:
        data.hunger = max(0, data.hunger - 10)
        print("fed them")
    else:
        print("it's dead bro")
    data.last_interaction = now.timestamp()


if __name__ == '__main__':
    import sys
    if len(sys.argv) > 2:
        exit(1)
    chanogachi_file = sys.argv[1]
    with open(sys.argv[1], 'r') as file:
        shebang = file.readline()
        data_raw = json.load(file)
    data = ChanogachiData(**data_raw)
    process_chanogachi(data)
    new_data_raw = asdict(data)
    with open(sys.argv[1], 'w') as file:
        file.write(shebang)
        json.dump(new_data_raw, file, indent=2)
Edit
Pub: 07 Mar 2024 03:03 UTC
Views: 35